0.3.5 共享功能修复
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user