Skip to content

Commit f2c7b51

Browse files
[4.x] Prevent showing "Saved" toast message when listener cancels save (#9040)
* Prevent showing "Saved" toast message when listener prevents saving * Apply the same fix to taxonomy terms * Change approach: Pass saved state in the response, then toast from the JS * Do the same for terms * Support `RevisionSaving` * Support `GlobalSetSaving` * Support `UserSaving`
1 parent 5574549 commit f2c7b51

10 files changed

Lines changed: 37 additions & 14 deletions

File tree

resources/js/components/entries/PublishForm.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,9 @@ export default {
538538
539539
this.$axios[this.method](this.actions.save, payload).then(response => {
540540
this.saving = false;
541+
if (! response.data.saved) {
542+
return this.$toast.error(__(`Couldn't save entry`));
543+
}
541544
this.title = response.data.data.title;
542545
this.isWorkingCopy = true;
543546
if (this.isBase) {

resources/js/components/globals/PublishForm.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ export default {
222222
223223
this.$axios[this.method](this.actions.save, payload).then(response => {
224224
this.saving = false;
225+
if (!response.data.saved) {
226+
return this.$toast.error(`Couldn't save global set`)
227+
}
225228
if (!this.isCreating) this.$toast.success(__('Saved'));
226229
this.$refs.container.saved();
227230
this.runAfterSaveHook(response);

resources/js/components/terms/PublishForm.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ export default {
445445
446446
this.$axios[this.method](this.actions.save, payload).then(response => {
447447
this.saving = false;
448+
if (! response.data.saved) {
449+
return this.$toast.error(__(`Couldn't save term`));
450+
}
448451
this.title = response.data.data.title;
449452
this.permalink = response.data.data.permalink;
450453
this.isWorkingCopy = true;

resources/js/components/users/PublishForm.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ export default {
111111
112112
this.$axios[this.method](this.actions.save, this.visibleValues).then(response => {
113113
this.title = response.data.title;
114+
if (!response.data.saved) {
115+
return this.$toast.error(`Couldn't save user`)
116+
}
114117
if (!this.isCreating) this.$toast.success(__('Saved'));
115118
this.$refs.container.saved();
116119
this.$nextTick(() => this.$emit('saved', response));

src/Http/Controllers/CP/Collections/EntriesController.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public function update(Request $request, $collection, $entry)
242242
$this->validateUniqueUri($entry, $tree ?? null, $parent ?? null);
243243

244244
if ($entry->revisionsEnabled() && $entry->published()) {
245-
$entry
245+
$saved = $entry
246246
->makeWorkingCopy()
247247
->user(User::current())
248248
->save();
@@ -254,13 +254,14 @@ public function update(Request $request, $collection, $entry)
254254
$entry->published($request->published);
255255
}
256256

257-
$entry->updateLastModified(User::current())->save();
257+
$saved = $entry->updateLastModified(User::current())->save();
258258
}
259259

260260
[$values] = $this->extractFromFields($entry, $blueprint);
261261

262262
return (new EntryResource($entry->fresh()))
263263
->additional([
264+
'saved' => $saved,
264265
'data' => [
265266
'values' => $values,
266267
],
@@ -394,15 +395,16 @@ public function store(Request $request, $collection, $site)
394395
$this->validateUniqueUri($entry, $tree ?? null, $parent ?? null);
395396

396397
if ($entry->revisionsEnabled()) {
397-
$entry->store([
398+
$saved = $entry->store([
398399
'message' => $request->message,
399400
'user' => User::current(),
400401
]);
401402
} else {
402-
$entry->updateLastModified(User::current())->save();
403+
$saved = $entry->updateLastModified(User::current())->save();
403404
}
404405

405-
return new EntryResource($entry);
406+
return (new EntryResource($entry))
407+
->additional(['saved' => $saved]);
406408
}
407409

408410
private function resolveSlug($request)

src/Http/Controllers/CP/Globals/GlobalVariablesController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ public function update(Request $request, $handle)
104104

105105
$set->data($values);
106106

107-
$set->globalSet()->addLocalization($set)->save();
107+
$save = $set->globalSet()->addLocalization($set)->save();
108108

109-
return response('', 204);
109+
return response()->json([
110+
'saved' => is_bool($save) ? $save : true,
111+
]);
110112
}
111113

112114
protected function extractFromFields($set, $blueprint)

src/Http/Controllers/CP/Taxonomies/TermsController.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,11 @@ public function update(Request $request, $taxonomy, $term, $site)
195195
$term->published($request->published);
196196
}
197197

198-
$term->updateLastModified(User::current())->save();
198+
$saved = $term->updateLastModified(User::current())->save();
199199
}
200200

201-
return new TermResource($term);
201+
return (new TermResource($term))
202+
->additional(['saved' => $saved]);
202203
}
203204

204205
public function create(Request $request, $taxonomy, $site)
@@ -299,10 +300,11 @@ public function store(Request $request, $taxonomy, $site)
299300
'user' => User::current(),
300301
]);
301302
} else {
302-
$term->updateLastModified(User::current())->save();
303+
$saved = $term->updateLastModified(User::current())->save();
303304
}
304305

305-
return new TermResource($term);
306+
return (new TermResource($term))
307+
->additional(['saved' => $saved]);
306308
}
307309

308310
protected function extractFromFields($term, $blueprint)

src/Http/Controllers/CP/Users/UsersController.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,12 @@ public function update(Request $request, $user)
283283
$user->groups($request->groups);
284284
}
285285

286-
$user->save();
286+
$save = $user->save();
287287

288-
return ['title' => $user->title()];
288+
return [
289+
'title' => $user->title(),
290+
'saved' => is_bool($save) ? $save : true,
291+
];
289292
}
290293

291294
public function destroy($user)

src/Revisions/Revisable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public function store($options = [])
116116
->updateLastModified($user = $options['user'] ?? false)
117117
->save();
118118

119-
$this
119+
return $this
120120
->makeRevision()
121121
->user($user)
122122
->message($options['message'] ?? false)

src/Revisions/Revision.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ public function save()
138138
Revisions::save($this);
139139

140140
RevisionSaved::dispatch($this);
141+
142+
return true;
141143
}
142144

143145
public function delete()

0 commit comments

Comments
 (0)