@@ -8,8 +8,17 @@ import { Loading } from '@/components';
88import {
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' ;
1322import { useUpdateDocLink } from '@/features/docs/doc-share/api/useUpdateDocLink' ;
1423import { useSkeletonStore } from '@/features/skeletons' ;
1524import { 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