0.3.5 共享功能修复

This commit is contained in:
liaibo
2026-01-24 12:32:51 +08:00
parent 25923f308c
commit 3c3f407f4b
44 changed files with 3754 additions and 420 deletions
@@ -30,6 +30,15 @@ async function requireGroup(ctx: any, groupId: string) {
return group;
}
async function requireGroupMember(ctx: any, groupId: string, userId: string) {
const membership = await ctx.db
.query("group_members")
.withIndex("by_group_user", (q: any) => q.eq("group_id", groupId).eq("user_id", userId))
.first();
if (!membership) throw new Error("无权限(你不在该群组内)");
return membership;
}
export const listByDocument = query({
args: { documentId: v.string() },
handler: async (ctx, args) => {
@@ -63,6 +72,8 @@ export const listByDocument = query({
groupId: share.group_id,
groupName: group?.name ?? null,
includeDescendants: share.include_descendants,
disableDownload: Boolean((share as any).disable_download),
disableCopy: Boolean((share as any).disable_copy),
editableUserIds,
updatedAt: share.updated_at,
});
@@ -78,15 +89,20 @@ export const upsert = mutation({
groupId: v.string(),
includeDescendants: v.optional(v.boolean()),
editableUserIds: v.array(v.string()),
disableDownload: v.optional(v.boolean()),
disableCopy: v.optional(v.boolean()),
},
handler: async (ctx, args) => {
const userId = await requireUserId(ctx);
const doc = await requireOwnedDocument(ctx, args.documentId, userId);
const group = await requireGroup(ctx, args.groupId);
if (group.workspace_id !== doc.workspace_id) throw new Error("群组不属于当前工作空间");
await requireGroupMember(ctx, args.groupId, userId);
const ts = nowIso();
const includeDescendants = Boolean(args.includeDescendants);
const disableDownload = Boolean(args.disableDownload);
const disableCopy = Boolean(args.disableCopy);
const existingShare = await ctx.db
.query("document_group_shares")
@@ -96,6 +112,8 @@ export const upsert = mutation({
if (existingShare) {
await ctx.db.patch(existingShare._id, {
include_descendants: includeDescendants,
disable_download: disableDownload,
disable_copy: disableCopy,
updated_at: ts,
});
} else {
@@ -104,6 +122,8 @@ export const upsert = mutation({
group_id: args.groupId,
document_id: doc.id,
include_descendants: includeDescendants,
disable_download: disableDownload,
disable_copy: disableCopy,
created_by: userId,
created_at: ts,
updated_at: ts,