Skip to content

Commit

Permalink
fix: replace throw with debug warning to fix breaking change (#3206)
Browse files Browse the repository at this point in the history
* fix: replace throw with debug warning to fix breaking change

* Add link back to PR in warning

* fix: add missing `return null` for `!allowUnregistered` code path

* Clean up message -- move more info to PR comment

* Add setTimeout to delay call debug warning call until after `app.forum` is defined

* Add backticks around data type
  • Loading branch information
davwheat authored Dec 15, 2021
1 parent b8b9f69 commit 726661f
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions js/src/common/Store.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import app from '../common/app';
import { FlarumRequestOptions } from './Application';
import fireDebugWarning from './helpers/fireDebugWarning';
import Model, { ModelData, SavedModelData } from './Model';

export interface MetaInformation {
Expand Down Expand Up @@ -120,11 +121,17 @@ export default class Store {
pushObject<M extends Model>(data: SavedModelData, allowUnregistered: false): M;
pushObject<M extends Model>(data: SavedModelData, allowUnregistered = true): M | null {
if (!this.models[data.type]) {
if (allowUnregistered) {
return null;
if (!allowUnregistered) {
setTimeout(() =>
fireDebugWarning(
`[Flarum 2.0 Deprecation] Cannot push object of type \`${data.type}\`, as that type has not yet been registered in the store. This will throw an error in Flarum 2.0 and later.
For more information, see https://github.com/flarum/core/pull/3206.`
)
);
}

throw new Error(`Cannot push object of type ${data.type}, as that type has not yet been registered in the store.`);
return null;
}

const type = (this.data[data.type] = this.data[data.type] || {});
Expand Down

0 comments on commit 726661f

Please sign in to comment.