Skip to content

Commit 663e198

Browse files
committed
Continue import if user refresh screen
1 parent b3de2b9 commit 663e198

6 files changed

Lines changed: 63 additions & 9 deletions

File tree

‎ProcessMaker/Http/Controllers/Api/ProcessController.php‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,48 @@ public function import(Process $process, Request $request)
738738
]);
739739
}
740740

741+
/**
742+
* Check if the import is ready
743+
*
744+
* @param Request $request
745+
*
746+
* @OA\Head(
747+
* path="/processes/import/{code}/is_ready",
748+
* summary="Check if the import is ready",
749+
* tags={"Processes"},
750+
*
751+
* @OA\Response(
752+
* response=200,
753+
* description="check is import is ready",
754+
* @OA\JsonContent(
755+
* type="object",
756+
* @OA\Property(
757+
* property="ready",
758+
* type="boolean",
759+
* ),
760+
* ),
761+
* ),
762+
* )
763+
*/
764+
public function import_ready($code)
765+
{
766+
$user = Auth::user();
767+
$notifications = $user
768+
->notifications()
769+
->where('type', 'ProcessMaker\Notifications\ImportReady')
770+
->get();
771+
foreach ($notifications as $notification) {
772+
if ($notification->data['code'] === $code) {
773+
$data = $notification->data['data'];
774+
$data['ready'] = true;
775+
return $data;
776+
}
777+
}
778+
return [
779+
'ready' => false,
780+
];
781+
}
782+
741783
/**
742784
* Import Assignments of process.
743785
*

‎ProcessMaker/Http/Controllers/ProcessController.php‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,9 @@ public function export(Process $process)
183183
return view('processes.export', compact('process'));
184184
}
185185

186-
public function import(Process $process, Request $request)
186+
public function import(Process $process)
187187
{
188-
$importingCode = $request->input('code', false);
189-
$submitted = !!$importingCode;
190-
return view('processes.import', compact('importingCode', 'submitted'));
188+
return view('processes.import');
191189
}
192190

193191
/**

‎ProcessMaker/Jobs/ImportProcess.php‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -877,8 +877,6 @@ private function isCallActivityFromPackage($task)
877877

878878
private function broadcastResponse($response)
879879
{
880-
\Log::debug('Import User: ' . $this->user);
881-
\Log::debug(json_encode($response));
882880
if ($this->user) {
883881
User::find($this->user)->notify(new ImportReady(
884882
$this->code,

‎ProcessMaker/Notifications/ImportReady.php‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public function toArray($notifiable)
5757
return [
5858
'code' => $this->code,
5959
'data' => $this->data,
60+
'name' => __('Process imported'),
61+
'processName' => $this->data['process']['name'],
6062
];
6163
}
6264

‎resources/views/processes/import.blade.php‎

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,23 +309,24 @@ class="assignable-input">
309309

310310
@section('js')
311311
<script>
312+
const importingCode = window.location.hash.match(/#code=(.+)/);
312313
new Vue({
313314
el: '#importProcess',
314315
data: {
315316
file: '',
316317
uploaded: false,
317-
submitted: @json($submitted),
318+
submitted: importingCode ? true : false,
318319
options: [],
319320
assignable: null,
320-
importing: @json($submitted),
321+
importing: importingCode ? true : false,
321322
imported: false,
322323
selectedUser: null,
323324
usersAndGroups: [],
324325
users: [],
325326
processes: [],
326327
cancelRequest: [],
327328
processEditData: [],
328-
importingCode: @json($importingCode),
329+
importingCode: importingCode ? importingCode[1] : null,
329330
},
330331
filters: {
331332
titleCase: function (value) {
@@ -499,16 +500,28 @@ class="assignable-input">
499500
},
500501
},
501502
mounted() {
503+
let received = false;
502504
window.Echo.private(`ProcessMaker.Models.User.${window.ProcessMaker.user.id}`).notification(
503505
(response) => {
504506
if (
507+
!received &&
505508
response.type === 'ProcessMaker.Notifications.ImportReady' &&
506509
this.importingCode === response.code
507510
) {
511+
received = true;
508512
this.importReady(response);
509513
}
510514
},
511515
);
516+
if (this.importingCode) {
517+
ProcessMaker.apiClient.get(`/processes/import/${this.importingCode}/is_ready`)
518+
.then(response => {
519+
if (response.data.ready) {
520+
received = true;
521+
this.importReady(response);
522+
}
523+
});
524+
}
512525
},
513526
})
514527
</script>

‎routes/api.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
Route::get('processes/{process}', 'ProcessController@show')->name('processes.show')->middleware('can:view-processes');
8989
Route::post('processes/{process}/export', 'ProcessController@export')->name('processes.export')->middleware('can:export-processes');
9090
Route::post('processes/import', 'ProcessController@import')->name('processes.import')->middleware('can:import-processes');
91+
Route::get('processes/import/{code}/is_ready', 'ProcessController@import_ready')->name('processes.import_is_ready')->middleware('can:import-processes');
9192
Route::post('processes/{process}/import/assignments', 'ProcessController@importAssignments')->name('processes.import.assignments')->middleware('can:import-processes');
9293
Route::post('processes', 'ProcessController@store')->name('processes.store')->middleware('can:create-processes');
9394
Route::put('processes/{process}', 'ProcessController@update')->name('processes.update')->middleware('can:edit-processes');

0 commit comments

Comments
 (0)