Skip to content

Commit fc612d7

Browse files
committed
fix: selecting Aragon token for permission creation fails the process
Fixes #19597
1 parent f05b508 commit fc612d7

File tree

14 files changed

+56
-10
lines changed

14 files changed

+56
-10
lines changed

src/app/modules/main/chat_section/controller.nim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,9 @@ proc getTokenByKey*(self: Controller, tokenKey: string): TokenItem =
706706
proc getTokensByGroupKey*(self: Controller, groupKey: string): seq[TokenItem] =
707707
return self.tokenService.getTokensByGroupKey(groupKey)
708708

709+
proc getTokenByKeyOrGroupKeyFromAllTokens*(self: Controller, key: string): TokenItem =
710+
return self.tokenService.getTokenByKeyOrGroupKeyFromAllTokens(key)
711+
709712
proc createOrEditCommunityTokenPermission*(self: Controller, tokenPermission: CommunityTokenPermissionDto) =
710713
self.communityService.createOrEditCommunityTokenPermission(self.sectionId, tokenPermission)
711714

src/app/modules/main/chat_section/module.nim

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1499,7 +1499,12 @@ method createOrEditCommunityTokenPermission*(self: Module, permissionId: string,
14991499
if tokenCriteriaDto.`type` != TokenType.ENS:
15001500
if not service_common_utils.isTokenKey(key):
15011501
# handle token group
1502-
let tokens = self.controller.getTokensByGroupKey(key)
1502+
var tokens = self.controller.getTokensByGroupKey(key)
1503+
if tokens.len == 0:
1504+
# fallback to get token by key or group key from all tokens
1505+
let token = self.controller.getTokenByKeyOrGroupKeyFromAllTokens(key)
1506+
if not token.isNil:
1507+
tokens = @[token]
15031508
if tokens.len == 0:
15041509
emitUnexistingKeyError(key)
15051510
return

ui/app/AppLayouts/Chat/stores/RootStore.qml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ QtObject {
8888
proxyRoles: [
8989
FastExpressionRole {
9090
function collectibleIcon(icon) {
91-
return !!icon ? icon : Assets.png("tokens/DEFAULT-TOKEN")
91+
return !!icon ? icon : Assets.png(Constants.defaultTokenIcon)
9292
}
9393
name: "iconSource"
9494
expression: collectibleIcon(model.icon)
@@ -101,7 +101,7 @@ QtObject {
101101
},
102102
FastExpressionRole {
103103
function collectibleIcon(icon) {
104-
return !!icon ? icon : Assets.png("tokens/DEFAULT-TOKEN")
104+
return !!icon ? icon : Assets.png(Constants.defaultTokenIcon)
105105
}
106106
name: "collectionImageUrl"
107107
expression: collectibleIcon(model.icon)

ui/app/AppLayouts/Communities/controls/ListDropdownContent.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ StatusListView {
9595

9696
name: model.name
9797
shortName: model.shortName ?? ""
98-
iconSource: model.iconSource ? model.iconSource : Assets.png("tokens/DEFAULT-TOKEN")
98+
iconSource: model.iconSource ? model.iconSource : Assets.png(Constants.defaultTokenIcon)
9999
showSubItemsIcon: !!model.subItems && model.subItems.count > 0
100100
selected: root.checkedKeys.includes(model.key)
101101
amount: {

ui/app/AppLayouts/Communities/helpers/PermissionsHelpers.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ QtObject {
4848

4949
function getTokenIconByKey(model, isCollectible, key) {
5050
const item = getTokenByKey(model, isCollectible, key)
51-
const defaultIcon = Assets.png("tokens/DEFAULT-TOKEN")
51+
const defaultIcon = Assets.png(Constants.defaultTokenIcon)
5252
if (item)
5353
return item.iconSource ? item.iconSource : defaultIcon
5454
return defaultIcon

ui/app/AppLayouts/Communities/panels/PermissionsSettingsPanel.qml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ StackView {
2424
required property var assetsModel
2525
required property var collectiblesModel
2626
required property var channelsModel
27+
28+
// Returns token that matches provided key (key can be token or group key). Use it as a last option (may affect app performances, because it fetches all tokens from stautsgo).
29+
property var getTokenByKeyOrGroupKeyFromAllTokens: function(key){ return {}}
30+
2731
property bool showChannelSelector: true
2832
property bool ensCommunityPermissionsEnabled
2933
property alias initialPage: initialItem
@@ -115,6 +119,8 @@ StackView {
115119
collectiblesModel: root.collectiblesModel
116120
channelsModel: allChannelsTransformed
117121

122+
getTokenByKeyOrGroupKeyFromAllTokens: root.getTokenByKeyOrGroupKeyFromAllTokens
123+
118124
communityDetails: root.communityDetails
119125

120126
preferredContentWidth: root.preferredContentWidth

ui/app/AppLayouts/Communities/popups/CreateChannelPopup.qml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ import AppLayouts.Communities.panels
2222
import AppLayouts.Communities.models
2323
import AppLayouts.Communities.controls
2424
import AppLayouts.Communities.stores as CommunitiesStores
25+
import AppLayouts.Wallet.stores
2526

2627
StatusStackModal {
2728
id: root
2829

2930
property CommunitiesStores.CommunitiesStore communitiesStore
31+
property TokensStore tokensStore
3032

3133
property bool isDiscordImport // creating new or importing from discord?
3234
property bool isEdit: false
@@ -840,6 +842,9 @@ StatusStackModal {
840842
permissionsModel: d.channelEditModel.channelPermissionsModel
841843
assetsModel: root.assetsModel
842844
collectiblesModel: root.collectiblesModel
845+
846+
getTokenByKeyOrGroupKeyFromAllTokens: root.tokensStore.getTokenByKeyOrGroupKeyFromAllTokens
847+
843848
viewOnlyCanAddReaction: root.viewOnlyCanAddReaction
844849
channelsModel: d.channelEditModel.liveChannelsModel
845850
communityDetails: d.communityDetails
@@ -936,6 +941,8 @@ StatusStackModal {
936941
showChannelSelector: false
937942
ensCommunityPermissionsEnabled: root.ensCommunityPermissionsEnabled
938943

944+
getTokenByKeyOrGroupKeyFromAllTokens: root.tokensStore.getTokenByKeyOrGroupKeyFromAllTokens
945+
939946
readonly property string nextButtonText: !!currentItem.permissionKeyToEdit ?
940947
qsTr("Update permission") : qsTr("Create permission")
941948
readonly property string stackTitleText: !!currentItem.permissionKeyToEdit ?

ui/app/AppLayouts/Communities/views/CommunityColumnView.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@ Item {
562562
id: createChannelPopup
563563
CreateChannelPopup {
564564
communitiesStore: root.communitiesStore
565+
tokensStore: root.walletAssetsStore.walletTokensStore
565566
assetsModel: root.store.assetsModel
566567
collectiblesModel: root.store.collectiblesModel
567568
ensCommunityPermissionsEnabled: root.ensCommunityPermissionsEnabled

ui/app/AppLayouts/Communities/views/CommunitySettingsView.qml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,8 @@ StatusSectionLayout {
373373
collectiblesModel: rootStore.collectiblesModel
374374
channelsModel: rootStore.chatCommunitySectionModule.model
375375

376+
getTokenByKeyOrGroupKeyFromAllTokens: root.tokensStore.getTokenByKeyOrGroupKeyFromAllTokens
377+
376378
ensCommunityPermissionsEnabled: root.ensCommunityPermissionsEnabled
377379

378380
communityDetails: d.communityDetails

ui/app/AppLayouts/Communities/views/HoldingsSelectionModel.qml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ import StatusQ.Core.Theme
1111
import utils
1212

1313
SortFilterProxyModel {
14+
id: root
15+
1416
property var assetsModel
1517
property var collectiblesModel
18+
// Returns token that matches provided key (key can be token or group key). Use it as a last option (may affect app performances, because it fetches all tokens from stautsgo).
19+
property var getTokenByKeyOrGroupKeyFromAllTokens: function(key){ return {}}
1620

1721
readonly property ModelChangeTracker _assetsChanges: ModelChangeTracker {
1822
model: assetsModel
@@ -45,6 +49,10 @@ SortFilterProxyModel {
4549
: collectiblesModel
4650

4751
let item = PermissionsHelpers.getTokenByKey(model, collectibles, key)
52+
if (Object.keys(item).length === 0) {
53+
item = root.getTokenByKeyOrGroupKeyFromAllTokens(key)
54+
}
55+
4856
let name = getName(type, item, key)
4957
const decimals = getDecimals(type, item)
5058

@@ -75,7 +83,15 @@ SortFilterProxyModel {
7583
const model = type === Constants.TokenType.ERC20
7684
? assetsModel : collectiblesModel
7785

78-
return PermissionsHelpers.getTokenIconByKey(model, collectibles, key)
86+
let icon = PermissionsHelpers.getTokenIconByKey(model, collectibles, key)
87+
if (Constants.isDefaultTokenIcon(icon)) {
88+
const item = root.getTokenByKeyOrGroupKeyFromAllTokens(key)
89+
if (!!item){
90+
icon = item.logoUri
91+
}
92+
}
93+
94+
return icon
7995
}
8096

8197
expression: {

0 commit comments

Comments
 (0)