@@ -32,6 +32,7 @@ interface RoomDocument extends Models.Document {
32
32
copilot : string [ ] ;
33
33
typing : boolean [ ] ;
34
34
unseen : number [ ] ;
35
+ archived : string [ ] ;
35
36
}
36
37
37
38
export default class RoomController {
@@ -153,7 +154,7 @@ export default class RoomController {
153
154
const sender : string = req . headers [ "x-appwrite-user-id" ] as string ;
154
155
const jwt : string = req . headers [ "x-appwrite-jwt" ] as string ;
155
156
const roomId : string = req . params . id ;
156
- const data : any = req . body ;
157
+ const data : { copilot ?: boolean ; archived ?: boolean } = req . body ;
157
158
158
159
// Disallow fields that should not be updated
159
160
const disallowedFields = [ "users" ] ;
@@ -190,12 +191,9 @@ export default class RoomController {
190
191
sender
191
192
) ) as UserDocument ;
192
193
if ( ! currentUserDoc . badges ?. includes ( "early-adopter" ) ) {
193
- return res
194
- . status ( 403 )
195
- . json ( {
196
- message :
197
- "You need to have early-adopter badge to update this room." ,
198
- } ) ;
194
+ return res . status ( 403 ) . json ( {
195
+ message : "You need to have early-adopter badge to update this room." ,
196
+ } ) ;
199
197
}
200
198
201
199
// Check if user is a member of the room
@@ -220,12 +218,27 @@ export default class RoomController {
220
218
room . copilot = room . copilot . filter ( ( item ) => item !== sender ) ;
221
219
}
222
220
221
+ // Update archived field
222
+ const isSenderInArchived = room . archived . includes ( sender ) ;
223
+ if ( data . archived && ! isSenderInArchived ) {
224
+ console . log ( "Archived set to the current user." ) ;
225
+ room . archived . push ( sender ) ;
226
+ } else if ( ! data . archived && isSenderInArchived ) {
227
+ console . log ( "Archived removed from the room." ) ;
228
+ room . archived = room . archived . filter ( ( item ) => item !== sender ) ;
229
+ }
230
+
231
+ console . log ( room . copilot , room . archived ) ;
232
+
223
233
// Update the room
224
234
const updatedRoom = await database . updateDocument (
225
235
env . APP_DATABASE ,
226
236
env . ROOMS_COLLECTION ,
227
237
roomId ,
228
- { copilot : room . copilot }
238
+ {
239
+ copilot : room . copilot ,
240
+ archived : room . archived ,
241
+ }
229
242
) ;
230
243
231
244
if ( updatedRoom ?. $id ) {
0 commit comments