status-desktop/ui/app/AppLayouts/Chat/views/communities/HoldingsSelectionModel.qml

68 lines
2.0 KiB
QML
Raw Normal View History

import SortFilterProxyModel 0.2
import AppLayouts.Chat.helpers 1.0
import AppLayouts.Chat.panels.communities 1.0
import AppLayouts.Chat.controls.community 1.0
import StatusQ.Core.Utils 0.1
import utils 1.0
SortFilterProxyModel {
property var assetsModel
property var collectiblesModel
proxyRoles: [
ExpressionRole {
name: "text"
function getName(type, key) {
if (type === HoldingTypes.Type.Ens)
return key
const model = type === HoldingTypes.Type.Asset
? assetsModel
: collectiblesModel
const item = CommunityPermissionsHelpers.getTokenByKey(model, key)
return item ? item.name : ""
}
function getText(type, key, amount) {
const name = getName(type, key)
return CommunityPermissionsHelpers.setHoldingsTextFormat(
type, name, amount)
}
// Direct call for singleton function is not handled properly by
// SortFilterProxyModel that's why helper function is used instead.
expression: getText(model.type, model.key, model.amount)
},
ExpressionRole {
name: "imageSource"
function getIcon(type, key) {
if (type === HoldingTypes.Type.Ens)
return Style.svg("profile/ensUsernames")
const model = type === HoldingTypes.Type.Asset
? assetsModel : collectiblesModel
return CommunityPermissionsHelpers.getTokenIconByKey(model, key)
}
expression: getIcon(model.type, model.key)
},
ExpressionRole {
name: "operator"
// Direct call for singleton enum is not handled properly by SortFilterProxyModel.
readonly property int none: OperatorsUtils.Operators.None
expression: none
}
]
}