diff --git a/src/app_service/service/community/async_tasks.nim b/src/app_service/service/community/async_tasks.nim index 8cbed66594..96c59cebfc 100644 --- a/src/app_service/service/community/async_tasks.nim +++ b/src/app_service/service/community/async_tasks.nim @@ -10,11 +10,13 @@ const asyncLoadCommunitiesDataTask: Task = proc(argEncoded: string) {.gcsafe, ni let responseTags = status_go.getCommunityTags() let responseCommunities = status_go.getAllCommunities() let responseSettings = status_go.getCommunitiesSettings() + let responseNonApprovedRequestsToJoin = status_go.allNonApprovedCommunitiesRequestsToJoin() arg.finish(%* { "tags": responseTags, "communities": responseCommunities, "settings": responseSettings, + "nonAprrovedRequestsToJoin": responseNonApprovedRequestsToJoin, "error": "", }) except Exception as e: diff --git a/src/app_service/service/community/dto/community.nim b/src/app_service/service/community/dto/community.nim index b01c0e4e3a..5a07010c6c 100644 --- a/src/app_service/service/community/dto/community.nim +++ b/src/app_service/service/community/dto/community.nim @@ -467,22 +467,6 @@ proc toCommunityDto*(jsonObj: JsonNode): CommunityDto = result.shard = jsonObj.getShard() - var requestsToJoinCommunityObj: JsonNode - if(jsonObj.getProp("requestsToJoinCommunity", requestsToJoinCommunityObj) and requestsToJoinCommunityObj.kind == JArray): - for requestObj in requestsToJoinCommunityObj: - let request = requestObj.toCommunityMembershipRequestDto() - case RequestToJoinType(request.state): - of RequestToJoinType.Pending, RequestToJoinType.AcceptedPending, RequestToJoinType.DeclinedPending: - result.pendingRequestsToJoin.add(request) - of RequestToJoinType.Declined: - result.declinedRequestsToJoin.add(request) - of RequestToJoinType.Canceled: - result.canceledRequestsToJoin.add(request) - of RequestToJoinType.AwaitingAddress: - result.waitingForSharedAddressesRequestsToJoin.add(request) - of RequestToJoinType.Accepted: - continue - proc toMembershipRequestState*(state: CommunityMemberPendingBanOrKick): MembershipRequestState = case state: of CommunityMemberPendingBanOrKick.Banned: diff --git a/src/app_service/service/community/service.nim b/src/app_service/service/community/service.nim index b40ae012f9..77580b948b 100644 --- a/src/app_service/service/community/service.nim +++ b/src/app_service/service/community/service.nim @@ -775,6 +775,27 @@ QtObject: if self.communities.hasKey(settings.id): self.communities[settings.id].settings = settings + # Non approver requests to join for all communities + let nonAprrovedRequestsToJoinObj = responseObj["nonAprrovedRequestsToJoin"] + + if nonAprrovedRequestsToJoinObj{"result"}.kind != JNull: + for jsonCommunityReqest in nonAprrovedRequestsToJoinObj["result"]: + let communityRequest = jsonCommunityReqest.toCommunityMembershipRequestDto() + if not (communityRequest.communityId in self.communities): + warn "community was not found for community request", communityID=communityRequest.communityId, requestId=communityRequest.id + continue + case RequestToJoinType(communityRequest.state): + of RequestToJoinType.Pending, RequestToJoinType.AcceptedPending, RequestToJoinType.DeclinedPending: + self.communities[communityRequest.communityId].pendingRequestsToJoin.add(communityRequest) + of RequestToJoinType.Declined: + self.communities[communityRequest.communityId].declinedRequestsToJoin.add(communityRequest) + of RequestToJoinType.Canceled: + self.communities[communityRequest.communityId].canceledRequestsToJoin.add(communityRequest) + of RequestToJoinType.AwaitingAddress: + self.communities[communityRequest.communityId].waitingForSharedAddressesRequestsToJoin.add(communityRequest) + of RequestToJoinType.Accepted: + continue + self.events.emit(SIGNAL_COMMUNITY_DATA_LOADED, Args()) except Exception as e: let errDesription = e.msg diff --git a/src/backend/communities.nim b/src/backend/communities.nim index 0c43fac8af..76b192f208 100644 --- a/src/backend/communities.nim +++ b/src/backend/communities.nim @@ -118,6 +118,9 @@ proc checkAllCommunityChannelsPermissions*(communityId: string, addresses: seq[s "addresses": addresses, }]) +proc allNonApprovedCommunitiesRequestsToJoin*(): RpcResponse[JsonNode] {.raises: [Exception].} = + result = callPrivateRPC("allNonApprovedCommunitiesRequestsToJoin".prefix) + proc cancelRequestToJoinCommunity*(requestId: string): RpcResponse[JsonNode] {.raises: [Exception].} = result = callPrivateRPC("cancelRequestToJoinCommunity".prefix, %*[{ "id": requestId diff --git a/vendor/status-go b/vendor/status-go index 058120fad9..04c533b8d5 160000 --- a/vendor/status-go +++ b/vendor/status-go @@ -1 +1 @@ -Subproject commit 058120fad95056627badd8854b6655d70258db4c +Subproject commit 04c533b8d5f1e0249b9edd38ef1304b9e9ef81de