49 lines
2.8 KiB
TypeScript
49 lines
2.8 KiB
TypeScript
import type { ParsedChannelLink } from '@/lib/channelLink';
|
|
import type { AccountInvitation } from './account';
|
|
import type { ArchiveEntry, ChannelInfo, ChannelSettingsPatch, CreateOptions, FileUploadOptions, WorkspaceEvent } from './types';
|
|
|
|
/**
|
|
* 常驻空间的 Worker 边界;业务结构来自后端,资源加解密由 @webdrop/core 处理。
|
|
* 便捷分享有自己的边界,见 shareApi.ts。
|
|
*/
|
|
export interface WorkspaceApi {
|
|
/** 新建空间:本地生成 id 与密钥、算 PoW、POST channels(api.md) */
|
|
createChannel(opts: CreateOptions, captchaToken?: string): Promise<ChannelInfo>;
|
|
/** 使用现有空间 settings 接口更新空间设置。 */
|
|
updateChannelSettings(patch: ChannelSettingsPatch): Promise<void>;
|
|
renameDevice(endpointHash: string, name: string): Promise<void>;
|
|
releaseDevice(endpointHash: string): Promise<void>;
|
|
/** 通过链接加入:先 GET 空间信息预览,再 POST seats */
|
|
joinChannel(link: ParsedChannelLink, password?: string): Promise<ChannelInfo>;
|
|
inviteUser(username: string): Promise<void>;
|
|
listInvitations(): Promise<AccountInvitation[]>;
|
|
revokeInvitation(username: string): Promise<void>;
|
|
listSaved(): Promise<ChannelInfo[]>;
|
|
/** 仅从本机删除保存的链接和终端密钥,不会删服务端空间 */
|
|
forget(id: string): Promise<void>;
|
|
|
|
/** 订阅某个空间的事件流(对应追加日志的推送),返回取消订阅函数 */
|
|
connect(channelId: string, onEvent: (e: WorkspaceEvent) => void): () => void;
|
|
sendText(text: string, threadId?: string): Promise<void>;
|
|
sendFiles(files: File[], options?: FileUploadOptions, threadId?: string, folderId?: string): Promise<void>;
|
|
createThread(name: string, groupId?: string): Promise<string>;
|
|
createGroup(name: string): Promise<string>;
|
|
renameGroup(id: string, name: string): Promise<void>;
|
|
groupThread(id: string, groupId?: string): Promise<void>;
|
|
renameThread(threadId: string, name: string): Promise<void>;
|
|
setChannelHistory(threadId: string, chatHistory: boolean, filesHistory: boolean): Promise<void>;
|
|
createFolder(threadId: string, name: string, parentId?: string): Promise<void>;
|
|
renameFolder(folderId: string, threadId: string, name: string): Promise<void>;
|
|
moveItems(itemIds: string[], threadId: string, folderId?: string): Promise<void>;
|
|
/** 修改 = 追加一个替代旧条目的新版本,后写者胜 */
|
|
editText(id: string, text: string, threadId?: string): Promise<void>;
|
|
resolveConflict(id: string, choice: 'mine' | 'theirs'): Promise<void>;
|
|
remove(id: string): Promise<void>;
|
|
setSnapshot(text: string): Promise<void>;
|
|
/** 取文件内容(GATED 条目会计一次下载,见 api.md);带 versionId 取旧版本 */
|
|
getBlob(id: string, versionId?: string): Promise<Blob>;
|
|
listArchive(id: string): Promise<ArchiveEntry[]>;
|
|
/** 标记「别的设备的修改」已看过(本地状态) */
|
|
markSeen(id: string): Promise<void>;
|
|
}
|