Skip to content

Commit 0ceb0cd

Browse files
committed
save2
1 parent 69048e3 commit 0ceb0cd

File tree

1 file changed

+129
-4
lines changed
  • src/frontend/apps/impress/src/pages/docs/new

1 file changed

+129
-4
lines changed

src/frontend/apps/impress/src/pages/docs/new/index.tsx

Lines changed: 129 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,17 @@ import { Loading } from '@/components';
88
import {
99
LinkReach,
1010
LinkRole,
11+
Role,
1112
useCreateDoc,
1213
} from '@/features/docs/doc-management';
14+
import {
15+
KEY_LIST_USER,
16+
getUsers,
17+
useCreateDocAccess,
18+
useCreateDocInvitation,
19+
useDocAccesses,
20+
useUsers,
21+
} from '@/features/docs/doc-share';
1322
import { useUpdateDocLink } from '@/features/docs/doc-share/api/useUpdateDocLink';
1423
import { useSkeletonStore } from '@/features/skeletons';
1524
import { MainLayout } from '@/layouts';
@@ -22,15 +31,17 @@ const Page: NextPageWithLayout = () => {
2231
const linkReach = searchParams.get('link-reach');
2332
const linkRole = searchParams.get('link-role');
2433
const title = searchParams.get('title');
25-
const peoplesharing = searchParams.get('peoplesharing');
34+
const members = searchParams.get('members');
35+
const { mutateAsync: createInvitation } = useCreateDocInvitation();
36+
const { mutateAsync: createDocAccess } = useCreateDocAccess();
2637

2738
const {
2839
mutate: createDoc,
2940
//isSuccess: isDocCreated,
3041
data: doc,
3142
} = useCreateDoc({
3243
onSuccess: (doc) => {
33-
if ((linkReach && linkRole) || linkReach || peoplesharing) {
44+
if ((linkReach && linkRole) || linkReach || members) {
3445
return;
3546
}
3647

@@ -40,8 +51,8 @@ const Page: NextPageWithLayout = () => {
4051
});
4152

4253
const { mutate: updateDocLink } = useUpdateDocLink({
43-
onSuccess: (response, params) => {
44-
if (peoplesharing || !params.id) {
54+
onSuccess: (_, params) => {
55+
if (members || !params.id) {
4556
return;
4657
}
4758

@@ -84,6 +95,7 @@ const Page: NextPageWithLayout = () => {
8495
});
8596
}, [createDoc, doc, title]);
8697

98+
// Doc link update effect
8799
useEffect(() => {
88100
if (!linkReach || !doc) {
89101
return;
@@ -96,6 +108,119 @@ const Page: NextPageWithLayout = () => {
96108
});
97109
}, [linkReach, doc, updateDocLink, redirectToDoc, linkRole]);
98110

111+
// const onInvite = async () => {
112+
// setIsLoading(true);
113+
// const promises = selectedUsers.map((user) => {
114+
// const isInvitationMode = user.id === user.email;
115+
116+
// const payload = {
117+
// role: invitationRole,
118+
// docId: doc.id,
119+
// };
120+
121+
// return isInvitationMode
122+
// ? createInvitation({
123+
// ...payload,
124+
// email: user.email.toLowerCase(),
125+
// })
126+
// : createDocAccess({
127+
// ...payload,
128+
// memberId: user.id,
129+
// });
130+
// });
131+
132+
// const settledPromises = await Promise.allSettled(promises);
133+
// settledPromises.forEach((settledPromise) => {
134+
// if (settledPromise.status === 'rejected') {
135+
// onError(settledPromise.reason as APIErrorUser);
136+
// }
137+
// });
138+
// afterInvite?.();
139+
// setIsLoading(false);
140+
// };
141+
142+
// members=user%40example.org%2Ceditor%7Cuser2%40example.org%2Creader
143+
// members=user@example.org,editor|user2@example.org,reader
144+
useEffect(() => {
145+
if (!members || !doc) {
146+
return;
147+
}
148+
149+
console.log('members', members);
150+
const membersList = members.split('|').map((memberStr) => {
151+
const [email, role] = memberStr.split(',');
152+
return { email, role: role as Role };
153+
});
154+
155+
console.log('membersList', membersList);
156+
157+
for (const member of membersList) {
158+
getUsers({
159+
query: member.email,
160+
docId: doc.id,
161+
})
162+
.then((users) => {
163+
if (users.length > 0) {
164+
console.log('User exists:', users);
165+
// User exists, create doc access
166+
// createDocAccess({
167+
// role: member.role,
168+
// docId: doc.id,
169+
// memberId: users[0].id,
170+
// }).catch(() => {
171+
// // Ignore errors
172+
// });
173+
} else {
174+
console.log('User does not exist:', {
175+
role: member.role,
176+
docId: doc.id,
177+
email: member.email.toLowerCase(),
178+
});
179+
// User does not exist, create invitation
180+
// createInvitation({
181+
// role: member.role,
182+
// docId: doc.id,
183+
// email: member.email.toLowerCase(),
184+
// }).catch(() => {
185+
// // Ignore errors
186+
// });
187+
}
188+
})
189+
.catch(() => {
190+
// Ignore errors
191+
});
192+
193+
// const isInvitationMode = !member.email.match(
194+
// /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
195+
// );
196+
197+
// const payload = {
198+
// role: member.role,
199+
// docId: doc.id,
200+
// };
201+
202+
// if (isInvitationMode) {
203+
// createInvitation({
204+
// ...payload,
205+
// email: member.email.toLowerCase(),
206+
// }).catch(() => {
207+
// // Ignore errors
208+
// });
209+
// } else {
210+
// createDocAccess({
211+
// ...payload,
212+
// memberId: member.email,
213+
// }).catch(() => {
214+
// // Ignore errors
215+
// });
216+
// }
217+
}
218+
219+
//redirectToDoc(doc.id);
220+
221+
//getUsers
222+
}, [createDocAccess, createInvitation, doc, members]);
223+
99224
if (!linkReach && linkRole) {
100225
console.warn('link-reach parameter is missing');
101226
}

0 commit comments

Comments
 (0)