@planningcenter/chat-react-native 4.2.1-qa-staging.5 → 4.3.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/conversation/message_form.d.ts +1 -2
- package/build/components/conversation/message_form.d.ts.map +1 -1
- package/build/components/conversation/message_form.js +51 -54
- package/build/components/conversation/message_form.js.map +1 -1
- package/build/components/conversation/message_list.d.ts +2 -3
- package/build/components/conversation/message_list.d.ts.map +1 -1
- package/build/components/conversation/message_list.js +66 -152
- package/build/components/conversation/message_list.js.map +1 -1
- package/build/contexts/api_provider.d.ts.map +1 -1
- package/build/contexts/api_provider.js +1 -2
- package/build/contexts/api_provider.js.map +1 -1
- package/build/contexts/conversation_context.d.ts +1 -3
- package/build/contexts/conversation_context.d.ts.map +1 -1
- package/build/contexts/conversation_context.js +18 -23
- package/build/contexts/conversation_context.js.map +1 -1
- package/build/hooks/paginator_meta.d.ts +1 -3
- package/build/hooks/paginator_meta.d.ts.map +1 -1
- package/build/hooks/paginator_meta.js +8 -25
- package/build/hooks/paginator_meta.js.map +1 -1
- package/build/hooks/use_api.d.ts.map +1 -1
- package/build/hooks/use_api.js +8 -5
- package/build/hooks/use_api.js.map +1 -1
- package/build/hooks/use_conversation_messages.d.ts +2 -9
- package/build/hooks/use_conversation_messages.d.ts.map +1 -1
- package/build/hooks/use_conversation_messages.js +45 -84
- package/build/hooks/use_conversation_messages.js.map +1 -1
- package/build/hooks/use_conversation_messages_jolt_events.d.ts +1 -17
- package/build/hooks/use_conversation_messages_jolt_events.d.ts.map +1 -1
- package/build/hooks/use_conversation_messages_jolt_events.js +80 -89
- package/build/hooks/use_conversation_messages_jolt_events.js.map +1 -1
- package/build/hooks/use_mark_latest_message_read.d.ts +1 -2
- package/build/hooks/use_mark_latest_message_read.d.ts.map +1 -1
- package/build/hooks/use_mark_latest_message_read.js +3 -4
- package/build/hooks/use_mark_latest_message_read.js.map +1 -1
- package/build/hooks/use_message_create_or_update.d.ts.map +1 -1
- package/build/hooks/use_message_create_or_update.js +80 -91
- package/build/hooks/use_message_create_or_update.js.map +1 -1
- package/build/hooks/use_message_reaction_toggle.d.ts.map +1 -1
- package/build/hooks/use_message_reaction_toggle.js +40 -45
- package/build/hooks/use_message_reaction_toggle.js.map +1 -1
- package/build/hooks/use_suspense_api.d.ts.map +1 -1
- package/build/hooks/use_suspense_api.js +8 -5
- package/build/hooks/use_suspense_api.js.map +1 -1
- package/build/screens/conversation_new/components/services_form.js +8 -9
- package/build/screens/conversation_new/components/services_form.js.map +1 -1
- package/build/screens/conversation_screen.d.ts +0 -1
- package/build/screens/conversation_screen.d.ts.map +1 -1
- package/build/screens/conversation_screen.js +254 -481
- package/build/screens/conversation_screen.js.map +1 -1
- package/build/screens/message_actions_screen.d.ts.map +1 -1
- package/build/screens/message_actions_screen.js +26 -21
- package/build/screens/message_actions_screen.js.map +1 -1
- package/build/screens/message_report_screen.d.ts.map +1 -1
- package/build/screens/message_report_screen.js +44 -17
- package/build/screens/message_report_screen.js.map +1 -1
- package/build/screens/reactions_screen.d.ts.map +1 -1
- package/build/screens/reactions_screen.js +88 -70
- package/build/screens/reactions_screen.js.map +1 -1
- package/build/types/api_primitives.d.ts +0 -2
- package/build/types/api_primitives.d.ts.map +1 -1
- package/build/types/api_primitives.js.map +1 -1
- package/build/utils/cache/messages_cache.d.ts +0 -1
- package/build/utils/cache/messages_cache.d.ts.map +1 -1
- package/build/utils/cache/messages_cache.js +0 -3
- package/build/utils/cache/messages_cache.js.map +1 -1
- package/build/utils/cache/optimistically_update_message.d.ts +1 -2
- package/build/utils/cache/optimistically_update_message.d.ts.map +1 -1
- package/build/utils/cache/optimistically_update_message.js +4 -4
- package/build/utils/cache/optimistically_update_message.js.map +1 -1
- package/build/utils/client/types.d.ts +0 -1
- package/build/utils/client/types.d.ts.map +1 -1
- package/build/utils/client/types.js.map +1 -1
- package/build/utils/generate_placeholder_ulid.d.ts +6 -0
- package/build/utils/generate_placeholder_ulid.d.ts.map +1 -1
- package/build/utils/generate_placeholder_ulid.js +2 -2
- package/build/utils/generate_placeholder_ulid.js.map +1 -1
- package/build/utils/request/get_messages.d.ts +6 -18
- package/build/utils/request/get_messages.d.ts.map +1 -1
- package/build/utils/request/get_messages.js +12 -10
- package/build/utils/request/get_messages.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/hooks/paginator_meta.test.ts +2 -73
- package/src/components/conversation/__tests__/message_list.test.tsx +0 -42
- package/src/components/conversation/message_form.tsx +0 -3
- package/src/components/conversation/message_list.tsx +4 -58
- package/src/contexts/api_provider.tsx +1 -2
- package/src/contexts/conversation_context.tsx +1 -6
- package/src/hooks/paginator_meta.ts +5 -29
- package/src/hooks/use_api.ts +5 -4
- package/src/hooks/use_conversation_messages.ts +11 -52
- package/src/hooks/use_conversation_messages_jolt_events.ts +43 -62
- package/src/hooks/use_mark_latest_message_read.ts +3 -4
- package/src/hooks/use_message_create_or_update.ts +8 -8
- package/src/hooks/use_message_reaction_toggle.ts +1 -3
- package/src/hooks/use_suspense_api.ts +5 -4
- package/src/screens/conversation_new/components/services_form.tsx +5 -5
- package/src/screens/conversation_screen.tsx +14 -123
- package/src/screens/message_actions_screen.tsx +5 -3
- package/src/screens/message_report_screen.tsx +3 -2
- package/src/screens/reactions_screen.tsx +4 -2
- package/src/types/api_primitives.ts +0 -2
- package/src/utils/cache/__tests__/messages_cache.test.ts +1 -14
- package/src/utils/cache/messages_cache.ts +0 -3
- package/src/utils/cache/optimistically_update_message.ts +5 -2
- package/src/utils/client/types.ts +0 -1
- package/src/utils/generate_placeholder_ulid.ts +2 -2
- package/src/utils/request/get_messages.ts +14 -12
- package/build/components/conversation/anchor_not_found_boundary.d.ts +0 -18
- package/build/components/conversation/anchor_not_found_boundary.d.ts.map +0 -1
- package/build/components/conversation/anchor_not_found_boundary.js +0 -20
- package/build/components/conversation/anchor_not_found_boundary.js.map +0 -1
- package/build/hooks/use_conversation_message_lookup.d.ts +0 -7
- package/build/hooks/use_conversation_message_lookup.d.ts.map +0 -1
- package/build/hooks/use_conversation_message_lookup.js +0 -52
- package/build/hooks/use_conversation_message_lookup.js.map +0 -1
- package/build/hooks/use_fetch_newer_messages.d.ts +0 -9
- package/build/hooks/use_fetch_newer_messages.d.ts.map +0 -1
- package/build/hooks/use_fetch_newer_messages.js +0 -69
- package/build/hooks/use_fetch_newer_messages.js.map +0 -1
- package/build/hooks/use_fetch_newer_on_foreground.d.ts +0 -8
- package/build/hooks/use_fetch_newer_on_foreground.d.ts.map +0 -1
- package/build/hooks/use_fetch_newer_on_foreground.js +0 -42
- package/build/hooks/use_fetch_newer_on_foreground.js.map +0 -1
- package/build/hooks/use_held_back_messages.d.ts +0 -11
- package/build/hooks/use_held_back_messages.d.ts.map +0 -1
- package/build/hooks/use_held_back_messages.js +0 -24
- package/build/hooks/use_held_back_messages.js.map +0 -1
- package/build/utils/cache/find_message_in_caches.d.ts +0 -4
- package/build/utils/cache/find_message_in_caches.d.ts.map +0 -1
- package/build/utils/cache/find_message_in_caches.js +0 -16
- package/build/utils/cache/find_message_in_caches.js.map +0 -1
- package/build/utils/cache/invalidate_refetchable_queries.d.ts +0 -3
- package/build/utils/cache/invalidate_refetchable_queries.d.ts.map +0 -1
- package/build/utils/cache/invalidate_refetchable_queries.js +0 -8
- package/build/utils/cache/invalidate_refetchable_queries.js.map +0 -1
- package/build/utils/cache/prepend_newer_page.d.ts +0 -7
- package/build/utils/cache/prepend_newer_page.d.ts.map +0 -1
- package/build/utils/cache/prepend_newer_page.js +0 -15
- package/build/utils/cache/prepend_newer_page.js.map +0 -1
- package/build/utils/gated_message_cache.d.ts +0 -7
- package/build/utils/gated_message_cache.d.ts.map +0 -1
- package/build/utils/gated_message_cache.js +0 -13
- package/build/utils/gated_message_cache.js.map +0 -1
- package/build/utils/ulid.d.ts +0 -3
- package/build/utils/ulid.d.ts.map +0 -1
- package/build/utils/ulid.js +0 -7
- package/build/utils/ulid.js.map +0 -1
- package/src/__tests__/hooks/use_conversation_messages.test.ts +0 -22
- package/src/__tests__/hooks/use_conversation_messages_jolt_events.test.ts +0 -33
- package/src/__tests__/screens/conversation_new/components/services_form.test.tsx +0 -91
- package/src/__tests__/utils/gated_message_cache.test.ts +0 -26
- package/src/__tests__/utils/request/get_messages.test.ts +0 -24
- package/src/__tests__/utils/ulid.test.ts +0 -15
- package/src/components/conversation/__tests__/anchor_not_found_boundary.test.tsx +0 -51
- package/src/components/conversation/anchor_not_found_boundary.tsx +0 -21
- package/src/hooks/__tests__/use_fetch_newer_messages.test.tsx +0 -95
- package/src/hooks/__tests__/use_held_back_messages.test.tsx +0 -60
- package/src/hooks/__tests__/use_message_reaction_toggle.test.tsx +0 -73
- package/src/hooks/use_conversation_message_lookup.ts +0 -29
- package/src/hooks/use_fetch_newer_messages.ts +0 -52
- package/src/hooks/use_fetch_newer_on_foreground.ts +0 -25
- package/src/hooks/use_held_back_messages.ts +0 -33
- package/src/utils/cache/__tests__/find_message_in_caches.test.ts +0 -37
- package/src/utils/cache/__tests__/invalidate_refetchable_queries.test.ts +0 -23
- package/src/utils/cache/__tests__/prepend_newer_page.test.ts +0 -34
- package/src/utils/cache/find_message_in_caches.ts +0 -20
- package/src/utils/cache/invalidate_refetchable_queries.ts +0 -9
- package/src/utils/cache/prepend_newer_page.ts +0 -19
- package/src/utils/gated_message_cache.ts +0 -19
- package/src/utils/ulid.ts +0 -11
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from 'react'
|
|
2
|
-
import { useAppState } from './use_app_state'
|
|
3
|
-
|
|
4
|
-
type Options = {
|
|
5
|
-
fetchNewer: (newestMessageId: string) => Promise<void>
|
|
6
|
-
newestMessageId?: string
|
|
7
|
-
enabled: boolean
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const useFetchNewerOnForeground = ({ fetchNewer, newestMessageId, enabled }: Options) => {
|
|
11
|
-
const appState = useAppState()
|
|
12
|
-
const wasInBackground = useRef(false)
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (appState !== 'active') {
|
|
16
|
-
wasInBackground.current = true
|
|
17
|
-
return
|
|
18
|
-
}
|
|
19
|
-
const returnedToForeground = wasInBackground.current
|
|
20
|
-
wasInBackground.current = false
|
|
21
|
-
if (!returnedToForeground || !enabled || !newestMessageId) return
|
|
22
|
-
|
|
23
|
-
fetchNewer(newestMessageId).catch(() => {})
|
|
24
|
-
}, [appState, enabled, fetchNewer, newestMessageId])
|
|
25
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef } from 'react'
|
|
2
|
-
|
|
3
|
-
type Options = {
|
|
4
|
-
fetchNewer: (newestMessageId: string) => Promise<void>
|
|
5
|
-
newestMessageId?: string
|
|
6
|
-
readingHistory: boolean
|
|
7
|
-
caughtUp: boolean
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const useHeldBackMessages = ({
|
|
11
|
-
fetchNewer,
|
|
12
|
-
newestMessageId,
|
|
13
|
-
readingHistory,
|
|
14
|
-
caughtUp,
|
|
15
|
-
}: Options) => {
|
|
16
|
-
const heldBackSince = useRef<string | null>(null)
|
|
17
|
-
|
|
18
|
-
const onSkippedNewMessage = useCallback(() => {
|
|
19
|
-
heldBackSince.current ??= newestMessageId ?? null
|
|
20
|
-
}, [newestMessageId])
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
const since = heldBackSince.current
|
|
24
|
-
if (readingHistory || !caughtUp || !since) return
|
|
25
|
-
|
|
26
|
-
heldBackSince.current = null
|
|
27
|
-
fetchNewer(since).catch(() => {
|
|
28
|
-
heldBackSince.current ??= since
|
|
29
|
-
})
|
|
30
|
-
}, [caughtUp, fetchNewer, readingHistory])
|
|
31
|
-
|
|
32
|
-
return { onSkippedNewMessage }
|
|
33
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { QueryClient } from '@tanstack/react-query'
|
|
2
|
-
import { getMessagesQueryKey } from '../../request/get_messages'
|
|
3
|
-
import { findMessageInCaches } from '../find_message_in_caches'
|
|
4
|
-
|
|
5
|
-
const page = (ids: string[]) => ({
|
|
6
|
-
data: ids.map(id => ({ id, type: 'Message' })),
|
|
7
|
-
links: {},
|
|
8
|
-
meta: { count: ids.length, totalCount: ids.length },
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
const seed = (queryClient: QueryClient, key: unknown[], ids: string[]) =>
|
|
12
|
-
queryClient.setQueryData(key, { pages: [page(ids)], pageParams: [{}] })
|
|
13
|
-
|
|
14
|
-
describe('findMessageInCaches', () => {
|
|
15
|
-
const queryClient = new QueryClient()
|
|
16
|
-
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
queryClient.clear()
|
|
19
|
-
seed(queryClient, getMessagesQueryKey({ conversation_id: 1 }), ['01C', '01B'])
|
|
20
|
-
seed(queryClient, getMessagesQueryKey({ conversation_id: 1, anchor: '01A' }), ['01A', '00Z'])
|
|
21
|
-
seed(queryClient, getMessagesQueryKey({ conversation_id: 1, reply_root_id: '01B' }), ['01R'])
|
|
22
|
-
seed(queryClient, getMessagesQueryKey({ conversation_id: 2 }), ['02A'])
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
it('finds a message in the live cache', () => {
|
|
26
|
-
expect(findMessageInCaches(queryClient, 1, '01B')?.id).toBe('01B')
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('finds a message that only the anchored cache holds', () => {
|
|
30
|
-
expect(findMessageInCaches(queryClient, 1, '00Z')?.id).toBe('00Z')
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
it('ignores reply threads and other conversations', () => {
|
|
34
|
-
expect(findMessageInCaches(queryClient, 1, '01R')).toBeUndefined()
|
|
35
|
-
expect(findMessageInCaches(queryClient, 1, '02A')).toBeUndefined()
|
|
36
|
-
})
|
|
37
|
-
})
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { QueryClient } from '@tanstack/react-query'
|
|
2
|
-
import { getMessagesQueryKey } from '../../request/get_messages'
|
|
3
|
-
import { invalidateRefetchableQueries } from '../invalidate_refetchable_queries'
|
|
4
|
-
|
|
5
|
-
describe('invalidateRefetchableQueries', () => {
|
|
6
|
-
const queryClient = new QueryClient()
|
|
7
|
-
const live = getMessagesQueryKey({ conversation_id: 1 })
|
|
8
|
-
const anchored = getMessagesQueryKey({ conversation_id: 1, anchor: '01A' })
|
|
9
|
-
const other = ['/me/conversations']
|
|
10
|
-
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
queryClient.clear()
|
|
13
|
-
for (const key of [live, anchored, other]) queryClient.setQueryData(key, { pages: [], pageParams: [] })
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
it('invalidates everything except anchored message windows', async () => {
|
|
17
|
-
await invalidateRefetchableQueries(queryClient)
|
|
18
|
-
|
|
19
|
-
expect(queryClient.getQueryState(live)?.isInvalidated).toBe(true)
|
|
20
|
-
expect(queryClient.getQueryState(other)?.isInvalidated).toBe(true)
|
|
21
|
-
expect(queryClient.getQueryState(anchored)?.isInvalidated).toBe(false)
|
|
22
|
-
})
|
|
23
|
-
})
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { prependNewerPage } from '../prepend_newer_page'
|
|
2
|
-
|
|
3
|
-
const page = (ids: string[], next?: { idGt: string }) => ({
|
|
4
|
-
data: ids.map(id => ({ id, type: 'Message' })),
|
|
5
|
-
links: {},
|
|
6
|
-
meta: { count: ids.length, totalCount: ids.length, next },
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
describe('prependNewerPage', () => {
|
|
10
|
-
const cached = { pages: [page(['01C', '01B']), page(['01A'])], pageParams: [{}, { offset: 1 }] }
|
|
11
|
-
|
|
12
|
-
it('merges the new rows into the first page and leaves the page params alone', () => {
|
|
13
|
-
const result = prependNewerPage(cached, [page(['01C', '01D', '01E'])])
|
|
14
|
-
|
|
15
|
-
expect(result?.pages).toHaveLength(2)
|
|
16
|
-
expect(result?.pages[0].data.map(m => m.id)).toEqual(['01D', '01E', '01C', '01B'])
|
|
17
|
-
expect(result?.pageParams).toEqual(cached.pageParams)
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('merges every fetched batch, newest last', () => {
|
|
21
|
-
const result = prependNewerPage(cached, [page(['01D', '01E']), page(['01F'])])
|
|
22
|
-
|
|
23
|
-
expect(result?.pages[0].data.map(m => m.id)).toEqual(['01D', '01E', '01F', '01C', '01B'])
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
it('returns the same data when nothing new came back', () => {
|
|
27
|
-
expect(prependNewerPage(cached, [page(['01C'])])).toBe(cached)
|
|
28
|
-
expect(prependNewerPage(cached, [])).toBe(cached)
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('does nothing without cached data', () => {
|
|
32
|
-
expect(prependNewerPage(undefined, [page(['01D'])])).toBeUndefined()
|
|
33
|
-
})
|
|
34
|
-
})
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { InfiniteData, QueryClient } from '@tanstack/react-query'
|
|
2
|
-
import { ApiCollection, MessageResource } from '../../types'
|
|
3
|
-
import { getMessagesRequestArgs } from '../request/get_messages'
|
|
4
|
-
|
|
5
|
-
type QueryData = InfiniteData<ApiCollection<MessageResource>>
|
|
6
|
-
|
|
7
|
-
export const findMessageInCaches = (
|
|
8
|
-
queryClient: QueryClient,
|
|
9
|
-
conversation_id: number,
|
|
10
|
-
message_id: string
|
|
11
|
-
): MessageResource | undefined => {
|
|
12
|
-
const { url } = getMessagesRequestArgs({ conversation_id })
|
|
13
|
-
|
|
14
|
-
for (const [, data] of queryClient.getQueriesData<QueryData>({ queryKey: [url] })) {
|
|
15
|
-
const found = data?.pages.flatMap(page => page.data).find(message => message.id === message_id)
|
|
16
|
-
if (found) return found
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return undefined
|
|
20
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Query, QueryClient } from '@tanstack/react-query'
|
|
2
|
-
|
|
3
|
-
const isAnchoredMessagesWindow = (query: Query) => {
|
|
4
|
-
const [, params] = query.queryKey as [unknown, { where?: { id_around?: string } } | undefined]
|
|
5
|
-
return !!params?.where?.id_around
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const invalidateRefetchableQueries = (queryClient: QueryClient) =>
|
|
9
|
-
queryClient.invalidateQueries({ predicate: query => !isAnchoredMessagesWindow(query) })
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { InfiniteData } from '@tanstack/react-query'
|
|
2
|
-
import { ApiCollection, ResourceObject } from '../../types'
|
|
3
|
-
import { RequestData } from '../client'
|
|
4
|
-
|
|
5
|
-
type PagesData<T extends ResourceObject> = InfiniteData<ApiCollection<T>, Partial<RequestData>>
|
|
6
|
-
|
|
7
|
-
export function prependNewerPage<T extends ResourceObject>(
|
|
8
|
-
data: PagesData<T> | undefined,
|
|
9
|
-
pages: ApiCollection<T>[]
|
|
10
|
-
): PagesData<T> | undefined {
|
|
11
|
-
if (!data || data.pages.length === 0) return data
|
|
12
|
-
|
|
13
|
-
const knownIds = new Set(data.pages.flatMap(page => page.data.map(record => record.id)))
|
|
14
|
-
const fresh = pages.flatMap(page => page.data).filter(record => !knownIds.has(record.id))
|
|
15
|
-
if (fresh.length === 0) return data
|
|
16
|
-
|
|
17
|
-
const [first, ...rest] = data.pages
|
|
18
|
-
return { ...data, pages: [{ ...first, data: [...fresh, ...first.data] }, ...rest] }
|
|
19
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { MessagesCache } from '../hooks/use_conversation_messages_jolt_events'
|
|
2
|
-
|
|
3
|
-
export const gatedMessageCache = ({
|
|
4
|
-
queryKey,
|
|
5
|
-
acceptNewMessages,
|
|
6
|
-
onSkippedNewMessage,
|
|
7
|
-
}: {
|
|
8
|
-
queryKey: unknown[]
|
|
9
|
-
acceptNewMessages: boolean
|
|
10
|
-
onSkippedNewMessage?: () => void
|
|
11
|
-
}): MessagesCache => ({
|
|
12
|
-
queryKey,
|
|
13
|
-
canUpdate: event => {
|
|
14
|
-
if (event !== 'message.created' || acceptNewMessages) return true
|
|
15
|
-
|
|
16
|
-
onSkippedNewMessage?.()
|
|
17
|
-
return false
|
|
18
|
-
},
|
|
19
|
-
})
|
package/src/utils/ulid.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const ULID_CHARS = '0123456789ABCDEFGHJKMNPQRSTVWXYZ' // Crockford's Base32
|
|
2
|
-
|
|
3
|
-
const TIME_LENGTH = 10
|
|
4
|
-
|
|
5
|
-
export function decodeUlidTime(ulid: string): number {
|
|
6
|
-
return ulid
|
|
7
|
-
.slice(0, TIME_LENGTH)
|
|
8
|
-
.toUpperCase()
|
|
9
|
-
.split('')
|
|
10
|
-
.reduce((time, char) => time * 32 + ULID_CHARS.indexOf(char), 0)
|
|
11
|
-
}
|