mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-18 10:32:53 +00:00
fix(@community): Fix community join bubble
fixes #6133 When restarting the app, the community is not in the list and data needs to be requested
This commit is contained in:
parent
52b0112a0f
commit
6b9b5f20a8
@ -8,5 +8,4 @@ type
|
||||
const asyncRequestCommunityInfoTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.} =
|
||||
let arg = decode[AsyncRequestCommunityInfoTaskArg](argEncoded)
|
||||
let response = status_go.requestCommunityInfo(arg.communityId)
|
||||
|
||||
arg.finish(response)
|
||||
arg.finish(response)
|
@ -132,6 +132,7 @@ QtObject:
|
||||
chatService: chat_service.Service
|
||||
): Service =
|
||||
result = Service()
|
||||
result.QObject.setup
|
||||
result.events = events
|
||||
result.threadpool = threadpool
|
||||
result.chatService = chatService
|
||||
@ -938,24 +939,26 @@ QtObject:
|
||||
error "Error reordering category channel", msg = e.msg, communityId, categoryId, position
|
||||
|
||||
|
||||
proc asyncActivityNotificationLoad*(self: Service, communityId: string) =
|
||||
let arg = AsyncRequestCommunityInfoTaskArg(
|
||||
tptr: cast[ByteAddress](asyncRequestCommunityInfoTask),
|
||||
vptr: cast[ByteAddress](self.vptr),
|
||||
slot: "asyncCommunityInfoLoaded",
|
||||
communityId: communityId
|
||||
)
|
||||
self.threadpool.start(arg)
|
||||
|
||||
proc asyncCommunityInfoLoaded*(self: Service, rpcResponse: string) {.slot.} =
|
||||
let rpcResponseObj = rpcResponse.parseJson
|
||||
if (rpcResponseObj{"error"}.kind != JNull):
|
||||
let error = Json.decode($rpcResponseObj["error"], RpcError)
|
||||
error "Error requesting community info", msg = error.message
|
||||
return
|
||||
|
||||
let community = rpcResponseObj{"result"}.toCommunityDto()
|
||||
self.allCommunities[community.id] = community
|
||||
self.events.emit(SIGNAL_COMMUNITY_DATA_IMPORTED, CommunityArgs(community: community))
|
||||
|
||||
proc requestCommunityInfo*(self: Service, communityId: string) =
|
||||
try:
|
||||
self.asyncActivityNotificationLoad(communityId)
|
||||
let arg = AsyncRequestCommunityInfoTaskArg(
|
||||
tptr: cast[ByteAddress](asyncRequestCommunityInfoTask),
|
||||
vptr: cast[ByteAddress](self.vptr),
|
||||
slot: "asyncCommunityInfoLoaded",
|
||||
communityId: communityId
|
||||
)
|
||||
self.threadpool.start(arg)
|
||||
except Exception as e:
|
||||
error "Error requesting community info", msg = e.msg, communityId
|
||||
|
||||
|
@ -232,7 +232,7 @@ proc deleteCommunityCategory*(
|
||||
}])
|
||||
|
||||
proc requestCommunityInfo*(communityId: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
result = callPrivateRPC("requestCommunityInfoFromMailserverAsync".prefix, %*[communityId])
|
||||
result = callPrivateRPC("requestCommunityInfoFromMailserver".prefix, %*[communityId])
|
||||
|
||||
proc importCommunity*(communityKey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
result = callPrivateRPC("importCommunity".prefix, %*[communityKey])
|
||||
|
@ -359,6 +359,10 @@ QtObject {
|
||||
return communitiesList.getSectionByIdJson(id)
|
||||
}
|
||||
|
||||
function requestCommunityInfo(id) {
|
||||
communitiesModuleInst.requestCommunityInfo(id)
|
||||
}
|
||||
|
||||
function getLinkTitleAndCb(link) {
|
||||
const result = {
|
||||
title: "Status",
|
||||
|
@ -26,7 +26,9 @@ Item {
|
||||
function getCommunity() {
|
||||
try {
|
||||
const communityJson = root.store.getSectionByIdJson(communityId)
|
||||
|
||||
if (!communityJson) {
|
||||
root.store.requestCommunityInfo(communityId)
|
||||
return null
|
||||
}
|
||||
|
||||
@ -42,14 +44,23 @@ Item {
|
||||
root.invitedCommunity = getCommunity()
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: root.store.communitiesModuleInst
|
||||
onCommunityChanged: function (communityId) {
|
||||
if (communityId === root.communityId) {
|
||||
root.invitedCommunity = getCommunity()
|
||||
}
|
||||
}
|
||||
}
|
||||
Connections {
|
||||
target: root.store.communitiesModuleInst
|
||||
onCommunityChanged: function (communityId) {
|
||||
if (communityId === root.communityId) {
|
||||
root.invitedCommunity = getCommunity()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: root.store.communitiesModuleInst
|
||||
onCommunityAdded: function (communityId) {
|
||||
if (communityId === root.communityId) {
|
||||
root.invitedCommunity = getCommunity()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: communityIntroDialog
|
||||
|
Loading…
x
Reference in New Issue
Block a user