fix: replace throw with debug warning to fix breaking change (#3206)

* 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
This commit is contained in:
David Wheatley 2021-12-15 15:48:46 +00:00 committed by GitHub
parent 1c2a33b253
commit eeff1e5b65

View File

@ -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 {
@ -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] || {});