1
1
import { useApiCall } from "@utils/api" ;
2
+ import { isEmpty } from "lodash" ;
2
3
import { useMemo , useState } from "react" ;
3
4
import { useSWRConfig } from "swr" ;
4
5
import { useGroups } from "@/contexts/GroupsProvider" ;
@@ -46,7 +47,7 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
46
47
return groupsToUpdate . map ( ( group ) => {
47
48
return {
48
49
name : group . name ,
49
- promise : updateOrCreateGroup ( group ) ,
50
+ promise : ( ) => updateOrCreateGroup ( group ) ,
50
51
} ;
51
52
} ) ;
52
53
} ;
@@ -67,7 +68,7 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
67
68
return removePeerFromGroup ( group ) ;
68
69
} ) ;
69
70
70
- return [ ...updateCalls , ...removeCalls ] as Promise < Group > [ ] ;
71
+ return [ ...updateCalls . map ( ( c ) => c ( ) ) , ...removeCalls ] as Promise < Group > [ ] ;
71
72
} ;
72
73
73
74
const removePeerFromGroup = async ( g : Group ) => {
@@ -93,20 +94,24 @@ export default function useGroupHelper({ initial = [], peer }: Props) {
93
94
const updateOrCreateGroup = async ( selectedGroup : Group ) => {
94
95
const groupPeers =
95
96
selectedGroup . peers &&
96
- selectedGroup . peers . map ( ( p ) => {
97
- const groupPeer = p as GroupPeer ;
98
- return groupPeer . id ;
99
- } ) ;
97
+ selectedGroup . peers
98
+ . map ( ( p ) => {
99
+ const groupPeer = p as GroupPeer ;
100
+ return groupPeer . id ;
101
+ } )
102
+ . filter ( ( p ) => p !== undefined && p !== null ) ;
100
103
101
104
// Update group if it has an id (only when peer prop is passed)
102
105
const hasId = ! ! selectedGroup . id ;
106
+ const peers = isEmpty ( groupPeers ) ? undefined : groupPeers ;
107
+
103
108
if ( hasId ) {
104
109
if ( selectedGroup . name == "All" || ! peer )
105
110
return Promise . resolve ( selectedGroup ) ;
106
111
return groupRequest . put (
107
112
{
108
113
name : selectedGroup . name ,
109
- peers : groupPeers || [ ] ,
114
+ peers : peers ,
110
115
} ,
111
116
`/${ selectedGroup . id } ` ,
112
117
) ;
0 commit comments