Skip to content

Commit 32fce62

Browse files
committed
feat: fallback to window.firebase
1 parent 58b0e03 commit 32fce62

File tree

6 files changed

+60
-48
lines changed

6 files changed

+60
-48
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ Sets Firebase app context
293293

294294
Props:
295295

296-
- *firebase (required)* Firebase app
296+
- *firebase* Firebase instance. If empty, it will attempt to use `window.firebase`.
297297
- *perf* Starts Firebase Performance Monitoring
298298
- *analytics* Starts Firebase/Google Analytics
299299

Diff for: src/Collection.svelte

+2
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,12 @@
4444
onDestroy(() => unsub());
4545
</script>
4646

47+
<slot name="before" />
4748
{#if $store}
4849
<slot data={$store} ref={store.ref} error={store.error} first={store.meta.first} last={store.meta.last} />
4950
{:else if store.loading}
5051
<slot name="loading" />
5152
{:else}
5253
<slot name="fallback" />
5354
{/if}
55+
<slot name="after" />

Diff for: src/Doc.svelte

+4
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,14 @@
4343
onDestroy(() => unsub());
4444
</script>
4545

46+
<slot name="before" />
47+
4648
{#if $store}
4749
<slot data={$store} ref={store.ref} error={store.error} />
4850
{:else if store.loading}
4951
<slot name="loading" />
5052
{:else}
5153
<slot name="fallback" />
5254
{/if}
55+
56+
<slot name="after" />

Diff for: src/FirebaseApp.svelte

+34-28
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,43 @@
11
<script>
2-
import { onMount, setContext, createEventDispatcher } from 'svelte';
3-
export let firebase;
4-
export let perf = false;
5-
export let analytics = false;
2+
import { onMount, setContext, createEventDispatcher } from "svelte";
3+
export let firebase;
4+
export let perf = false;
5+
export let analytics = false;
66
7-
// Ready required to use the app event,
8-
// prevents child components from running before init
9-
let ready = false;
7+
// Ready required to use the app event,
8+
// prevents child components from running before init
9+
let ready = false;
1010
11-
// Init perf and analytics
12-
perf && firebase.performance();
13-
analytics && firebase.analytics();
14-
15-
// Emit firebase
16-
const dispatch = createEventDispatcher();
11+
// Emit firebase
12+
const dispatch = createEventDispatcher();
1713
1814
// Set firebase context
19-
setContext('firebase', firebase);
20-
21-
onMount(() => {
22-
23-
// Optional event to set additional config
24-
dispatch('initializeApp', {
25-
firebase,
26-
});
27-
28-
29-
ready = true;
30-
})
31-
15+
firebase = firebase || window.firebase;
16+
setContext("firebase", firebase);
17+
18+
onMount(() => {
19+
console.log(firebase)
20+
21+
if (!firebase) {
22+
throw Error(
23+
"No firebase app was provided. You must provide an initialized Firebase app or make it available globally."
24+
);
25+
} else {
26+
27+
// Init perf and analytics
28+
perf && firebase.performance();
29+
analytics && firebase.analytics();
30+
31+
// Optional event to set additional config
32+
dispatch("initializeApp", {
33+
firebase
34+
});
35+
36+
ready = true;
37+
}
38+
});
3239
</script>
3340

34-
3541
{#if ready}
36-
<slot></slot>
42+
<slot />
3743
{/if}

Diff for: src/User.svelte

+19-18
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
<script>
2-
export let persist = null;
3-
import { onMount, onDestroy, createEventDispatcher } from 'svelte';
4-
import { userStore } from './auth';
5-
6-
let store = userStore({ persist });
2+
export let persist = null;
3+
import { onMount, onDestroy, createEventDispatcher } from "svelte";
4+
import { userStore } from "./auth";
75
8-
const dispatch = createEventDispatcher();
9-
let unsub;
10-
onMount(() => {
11-
unsub = store.subscribe(user => {
12-
dispatch('user', {
13-
user
14-
});
15-
});
6+
let store = userStore({ persist });
7+
8+
const dispatch = createEventDispatcher();
9+
let unsub;
10+
onMount(() => {
11+
unsub = store.subscribe(user => {
12+
dispatch("user", {
13+
user
14+
});
1615
});
16+
});
1717
18-
onDestroy(() => unsub());
18+
onDestroy(() => unsub());
1919
</script>
2020

21-
21+
<slot name="before" />
2222
{#if $store}
23-
<slot user={$store} auth={store.auth}></slot>
23+
<slot user={$store} auth={store.auth} />
2424
{:else}
25-
<slot name="signed-out"></slot>
26-
{/if}
25+
<slot name="signed-out" />
26+
{/if}
27+
<slot name="after" />

Diff for: src/firestore.js

-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ export function docStore(path, opts) {
7070

7171
// Svelte store
7272
const store = writable(startWith, start);
73-
7473
const { subscribe, set } = store;
7574

7675
return {

0 commit comments

Comments
 (0)