Skip to content

Commit

Permalink
fix(database): pending for lists
Browse files Browse the repository at this point in the history
  • Loading branch information
posva committed Feb 26, 2023
1 parent 3186afb commit ee25d06
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
12 changes: 8 additions & 4 deletions src/database/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,14 @@ export function useDatabaseList<T = unknown>(
options?: UseListOptions
): _RefDatabase<VueDatabaseQueryData<T>> {
const data = ref<T[]>([]) as Ref<T[]>
return _useDatabaseRef(reference, {
target: data,
...options,
}) as _RefDatabase<VueDatabaseQueryData<T>>
return _useDatabaseRef(
reference,
{
target: data,
...options,
},
true
) as _RefDatabase<VueDatabaseQueryData<T>>
}

/**
Expand Down
12 changes: 9 additions & 3 deletions src/database/useDatabaseRef.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ export interface UseDatabaseRefOptions extends _DatabaseRefOptions {}

export function _useDatabaseRef(
reference: _MaybeRef<_Nullable<DatabaseReference | Query>>,
localOptions: UseDatabaseRefOptions = {}
localOptions: UseDatabaseRefOptions = {},
isList = false
): _RefDatabase<unknown> {
let unbind: UnbindWithReset = noop
const options = Object.assign({}, globalDatabaseOptions, localOptions)
Expand All @@ -63,15 +64,20 @@ export function _useDatabaseRef(
}

// set the initial value from SSR even if the ref comes from outside
data.value = getInitialValue(
const initialValue = getInitialValue(
initialSourceValue,
options.ssrKey,
data.value,
useFirebaseApp()
)
data.value = initialValue

const hasInitialValue = isList
? ((initialValue || []) as unknown[]).length > 0
: initialValue !== undefined

// if no initial value is found (ssr), we should set pending to true
let shouldStartAsPending = data.value === undefined // no initial value
let shouldStartAsPending = !hasInitialValue

const error = ref<Error>()
const pending = ref(false)
Expand Down
4 changes: 3 additions & 1 deletion tests/database/list.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,9 +336,11 @@ describe('Database lists', () => {
const ref = databaseRef()
await push(ref, { name: 'a' })
await push(ref, { name: 'b' })
const { error, promise, data } = factory({ ref })
const { error, promise, data, pending } = factory({ ref })

expect(pending.value).toBe(true)
await expect(unref(promise)).resolves.toEqual(expect.anything())
expect(pending.value).toBe(false)
expect(data.value).toContainEqual({ name: 'a' })
expect(data.value).toContainEqual({ name: 'b' })
expect(error.value).toBeUndefined()
Expand Down

0 comments on commit ee25d06

Please sign in to comment.