@@ -59,6 +59,11 @@ use crate::models::title::delete_title_mutation::DeleteTitleRequestBody;
5959use crate :: models:: title:: delete_title_mutation:: PushActionDeleteTitle ;
6060use crate :: models:: title:: delete_title_mutation:: PushDeleteTitle ;
6161use crate :: models:: title:: delete_title_mutation:: Variables as DeleteTitlekVariables ;
62+ use crate :: models:: title:: title_query:: FetchActionTitle ;
63+ use crate :: models:: title:: title_query:: FetchTitle ;
64+ use crate :: models:: title:: title_query:: TitleRequest ;
65+ use crate :: models:: title:: title_query:: TitleRequestBody ;
66+ use crate :: models:: title:: title_query:: Variables as TitleQueryVariables ;
6267use crate :: models:: title:: update_title_mutation:: PushActionUpdateTitle ;
6368use crate :: models:: title:: update_title_mutation:: PushUpdateTitle ;
6469use crate :: models:: title:: update_title_mutation:: UpdateTitleRequest ;
@@ -76,7 +81,7 @@ use crate::models::work::update_work_mutation::UpdateWorkRequestBody;
7681use crate :: models:: work:: update_work_mutation:: Variables as UpdateWorkVariables ;
7782use crate :: models:: work:: work_query:: FetchActionWork ;
7883use crate :: models:: work:: work_query:: FetchWork ;
79- use crate :: models:: work:: work_query:: Variables ;
84+ use crate :: models:: work:: work_query:: Variables as WorkQueryVariables ;
8085use crate :: models:: work:: work_query:: WorkRequest ;
8186use crate :: models:: work:: work_query:: WorkRequestBody ;
8287use crate :: models:: work:: WorkStatusValues ;
@@ -103,6 +108,7 @@ pub struct WorkComponent {
103108 is_published_in_db : bool ,
104109 data : WorkFormData ,
105110 fetch_work : FetchWork ,
111+ fetch_title : FetchTitle ,
106112 push_work : PushUpdateWork ,
107113 push_title : PushUpdateTitle ,
108114 delete_work : PushDeleteWork ,
@@ -124,6 +130,7 @@ struct WorkFormData {
124130#[ allow( clippy:: large_enum_variant) ]
125131pub enum Msg {
126132 SetWorkFetchState ( FetchActionWork ) ,
133+ SetTitleFetchState ( FetchActionTitle ) ,
127134 GetWork ,
128135 SetTitlePushState ( PushActionUpdateTitle ) ,
129136 SetWorkPushState ( PushActionUpdateWork ) ,
@@ -199,6 +206,10 @@ impl Component for WorkComponent {
199206 let data: WorkFormData = Default :: default ( ) ;
200207 let resource_access = ctx. props ( ) . current_user . resource_access . clone ( ) ;
201208 let work_id = ctx. props ( ) . work_id ;
209+ let title: Title = Default :: default ( ) ;
210+ let push_title = Default :: default ( ) ;
211+ let delete_title = Default :: default ( ) ;
212+ let fetch_title: FetchTitle = Default :: default ( ) ;
202213
203214 ctx. link ( ) . send_message ( Msg :: GetWork ) ;
204215
@@ -218,9 +229,10 @@ impl Component for WorkComponent {
218229 resource_access,
219230 work_id,
220231 publish_confirmation_required : false ,
221- title : Default :: default ( ) ,
222- push_title : Default :: default ( ) ,
223- delete_title : Default :: default ( ) ,
232+ title,
233+ push_title,
234+ delete_title,
235+ fetch_title,
224236 }
225237 }
226238
@@ -267,16 +279,48 @@ impl Component for WorkComponent {
267279 FetchState :: Failed ( _, _err) => false ,
268280 }
269281 }
282+ Msg :: SetTitleFetchState ( fetch_state) => {
283+ self . fetch_title . apply ( fetch_state) ;
284+ match self . fetch_title . as_ref ( ) . state ( ) {
285+ FetchState :: NotFetching ( _) => false ,
286+ FetchState :: Fetching ( _) => false ,
287+ FetchState :: Fetched ( body) => {
288+ self . title = match & body. data . title {
289+ Some ( t) => t. to_owned ( ) ,
290+ None => Default :: default ( ) ,
291+ } ;
292+ true
293+ }
294+ FetchState :: Failed ( _, _err) => false ,
295+ }
296+ }
270297 Msg :: GetWork => {
271- let body = WorkRequestBody {
272- variables : Variables {
298+ let title_request_body = TitleRequestBody {
299+ variables : TitleQueryVariables {
300+ title_id : self . title . title_id ,
301+ } ,
302+ ..Default :: default ( )
303+ } ;
304+ let title_request = TitleRequest {
305+ body : title_request_body,
306+ } ;
307+ self . fetch_title = Fetch :: new ( title_request) ;
308+ ctx. link ( )
309+ . send_future ( self . fetch_title . fetch ( Msg :: SetTitleFetchState ) ) ;
310+ ctx. link ( )
311+ . send_message ( Msg :: SetTitleFetchState ( FetchAction :: Fetching ) ) ;
312+
313+ let work_request_body = WorkRequestBody {
314+ variables : WorkQueryVariables {
273315 work_id : Some ( ctx. props ( ) . work_id ) ,
274316 publishers : ctx. props ( ) . current_user . resource_access . restricted_to ( ) ,
275317 } ,
276318 ..Default :: default ( )
277319 } ;
278- let request = WorkRequest { body } ;
279- self . fetch_work = Fetch :: new ( request) ;
320+ let work_request = WorkRequest {
321+ body : work_request_body,
322+ } ;
323+ self . fetch_work = Fetch :: new ( work_request) ;
280324
281325 ctx. link ( )
282326 . send_future ( self . fetch_work . fetch ( Msg :: SetWorkFetchState ) ) ;
0 commit comments