subscribe to global stores (#2139)

pull/2235/head
Richard Harris 6 years ago
parent 76cc07d7f6
commit 6d3e47812d

@ -168,7 +168,7 @@ export default class Component {
this.add_reference(subscribable_name);
const variable = this.var_lookup.get(subscribable_name);
variable.subscribable = true;
if (variable) variable.subscribable = true;
} else {
this.usedNames.add(name);
}

@ -149,13 +149,6 @@ export default class Expression {
dependencies.add(name);
}
if (name[0] === '$' && !component.var_lookup.get(name.slice(1)) && name !== '$$props') {
component.error(node, {
code: `missing-store`,
message: `Stores must be declared`
});
}
component.add_reference(name);
component.warn_if_undefined(nodes[0], template_scope);
}

@ -326,7 +326,7 @@ export default function dom(
const reactive_store_subscriptions = reactive_stores
.filter(store => {
const variable = component.var_lookup.get(store.name.slice(1));
return variable.hoistable;
return !variable || variable.hoistable;
})
.map(({ name }) => deindent`
${component.compileOptions.dev && `@validate_store(${name.slice(1)}, '${name.slice(1)}');`}
@ -336,7 +336,7 @@ export default function dom(
const resubscribable_reactive_store_unsubscribers = reactive_stores
.filter(store => {
const variable = component.var_lookup.get(store.name.slice(1));
return variable.reassigned;
return variable && variable.reassigned;
})
.map(({ name }) => `$$self.$$.on_destroy.push(() => $$unsubscribe_${name.slice(1)}());`);
@ -370,7 +370,7 @@ export default function dom(
const name = $name.slice(1);
const store = component.var_lookup.get(name);
if (store.reassigned) {
if (store && store.reassigned) {
return `${$name}, $$unsubscribe_${name} = @noop, $$subscribe_${name} = () => { $$unsubscribe_${name}(); $$unsubscribe_${name} = ${name}.subscribe($$value => { ${$name} = $$value; $$invalidate('${$name}', ${$name}); }) }`
}

@ -0,0 +1,3 @@
export default {
error: 'missingGlobal is not defined'
};
Loading…
Cancel
Save