feat(web): add spaces, grouped channels and file chat
This commit is contained in:
1 parent
c7d8ef15bc
commit
f6cfb12716
111 files changed
+4371
-506
No files matched your search
@@ -32,8 +32,10 @@ export async function connectShare(id: string): Promise<void> {
|
||||
publishShare(id, { t: 'share', share });
|
||||
|
||||
if (raw.state === 'draft' && resource.mine) {
|
||||
const resumed = await flushOutbox(resource, session);
|
||||
if (resumed) resource.draftItems = resource.draftItems?.map((item) => item.state.kind === 'incomplete' ? { ...item, state: { kind: 'complete' } } : item);
|
||||
await flushOutbox(resource, session);
|
||||
const current = await readShareInfo(session, resource);
|
||||
resource.draftItems = resource.draftItems?.map((item) => item.kind === 'file'
|
||||
? { ...item, state: { kind: current.items.some((row) => row.item_id === item.id && row.complete) ? 'complete' : 'incomplete' } } : item);
|
||||
await saveResource(resource);
|
||||
if (controller.signal.aborted) return;
|
||||
for (const item of resource.draftItems ?? []) publishShare(id, { t: 'item', item });
|
||||
@@ -93,6 +95,11 @@ export async function getShareBlob(id: string, itemId: string): Promise<Blob> {
|
||||
blobs.set(`${id}:${itemId}`, draftFile);
|
||||
return draftFile;
|
||||
}
|
||||
const entry = resource.manifestEntries?.find((row) => row.t === 'file' && row.id === itemId);
|
||||
if (!entry || entry.t !== 'file') throw fail(404, 'not_found');
|
||||
const result = await downloadDecrypted(session, resource, itemId, entry.size);
|
||||
blobs.set(`${id}:${itemId}`, result.blob);
|
||||
return result.blob;
|
||||
}
|
||||
const raw = await readJson<ShareWire>(`/shares/${id}`, session.authHeaders('read'));
|
||||
const manifest = await fetchManifest(session, id, raw);
|
||||
|
||||
Reference in new issue
Block a user