168 lines
7.1 KiB
QML
168 lines
7.1 KiB
QML
import QtQuick 2.0
|
|
|
|
import AppLayouts.Chat.controls.community 1.0
|
|
import StatusQ.Core.Utils 0.1 as SQ
|
|
import utils 1.0
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
property var permissionsModel: ListModel {} // Backend permissions list object model asignement. Please check the current expected data in qml defined in `createPermissions` method
|
|
|
|
// TODO: Replace to real data, now dummy model
|
|
property var assetsModel: ListModel {
|
|
ListElement {key: "socks"; iconSource: "qrc:imports/assets/png/tokens/SOCKS.png"; name: "Unisocks"; shortName: "SOCKS"; category: "Community assets"}
|
|
ListElement {key: "zrx"; iconSource: "qrc:imports/assets/png/tokens/ZRX.png"; name: "Ox"; shortName: "ZRX"; category: "Listed assets"}
|
|
ListElement {key: "1inch"; iconSource: "qrc:imports/assets/png/tokens/CUSTOM-TOKEN.png"; name: "1inch"; shortName: "ZRX"; category: "Listed assets"}
|
|
ListElement {key: "Aave"; iconSource: "qrc:imports/assets/png/tokens/CUSTOM-TOKEN.png"; name: "Aave"; shortName: "AAVE"; category: "Listed assets"}
|
|
ListElement {key: "Amp"; iconSource: "qrc:imports/assets/png/tokens/CUSTOM-TOKEN.png"; name: "Amp"; shortName: "AMP"; category: "Listed assets"}
|
|
}
|
|
|
|
// TODO: Replace to real data, now dummy model
|
|
property var collectiblesModel: ListModel {
|
|
ListElement {
|
|
key: "Anniversary"
|
|
iconSource: "qrc:imports/assets/png/collectibles/Anniversary.png"
|
|
name: "Anniversary"
|
|
category: "Community collectibles"
|
|
}
|
|
ListElement {
|
|
key: "CryptoKitties"
|
|
iconSource: "qrc:imports/assets/png/collectibles/CryptoKitties.png"
|
|
name: "CryptoKitties"
|
|
category: "Your collectibles"
|
|
subItems: [
|
|
ListElement {
|
|
key: "Kitty1"
|
|
iconSource: "qrc:imports/assets/png/collectibles/Furbeard.png"
|
|
imageSource: "qrc:imports/assets/png/collectibles/FurbeardBig.png"
|
|
name: "Furbeard"
|
|
},
|
|
ListElement {
|
|
key: "Kitty2"
|
|
iconSource: "qrc:imports/assets/png/collectibles/Magicat.png"
|
|
imageSource: "qrc:imports/assets/png/collectibles/MagicatBig.png"
|
|
name: "Magicat"
|
|
},
|
|
ListElement {
|
|
key: "Kitty3"
|
|
iconSource: "qrc:imports/assets/png/collectibles/HappyMeow.png"
|
|
imageSource: "qrc:imports/assets/png/collectibles/HappyMeowBig.png"
|
|
name: "Happy Meow"
|
|
},
|
|
ListElement {
|
|
key: "Kitty4"
|
|
iconSource: "qrc:imports/assets/png/collectibles/Furbeard.png"
|
|
imageSource: "qrc:imports/assets/png/collectibles/FurbeardBig.png"
|
|
name: "Furbeard-2"
|
|
},
|
|
ListElement {
|
|
key: "Kitty5"
|
|
iconSource: "qrc:imports/assets/png/collectibles/Magicat.png"
|
|
imageSource: "qrc:imports/assets/png/collectibles/MagicatBig.png"
|
|
name: "Magicat-3"
|
|
}
|
|
]
|
|
}
|
|
ListElement {
|
|
key: "SuperRare"
|
|
iconSource: "qrc:imports/assets/png/collectibles/SuperRare.png";
|
|
name: "SuperRare"
|
|
category: "Your collectibles"
|
|
}
|
|
ListElement {
|
|
key: "Custom"
|
|
iconSource: "qrc:imports/assets/png/collectibles/SNT.png"
|
|
name: "Custom Collectible"
|
|
category: "All collectibles"
|
|
}
|
|
}
|
|
|
|
// TODO: Replace to real data, now dummy model
|
|
property var channelsModel: ListModel {
|
|
ListElement { key: "welcome"; iconSource: "qrc:imports/assets/png/tokens/CUSTOM-TOKEN.png"; name: "#welcome"}
|
|
ListElement { key: "general"; iconSource: "qrc:imports/assets/png/tokens/CUSTOM-TOKEN.png"; name: "#general"}
|
|
}
|
|
|
|
function createPermission(holdings, permissions, isPrivate, channels, index = null) {
|
|
// TO BE REPLACED: It shold just be a call to the backend sharing `holdings`, `permissions`, `channels` and `isPrivate` properties.
|
|
var permission = {
|
|
isPrivate: true,
|
|
holdingsListModel: [],
|
|
permissionsObjectModel: {
|
|
key: "",
|
|
text: "",
|
|
imageSource: ""
|
|
},
|
|
channelsListModel: []
|
|
};
|
|
|
|
// Setting HOLDINGS:
|
|
for (var i = 0; i < holdings.count; i++ ) {
|
|
var entry = holdings.get(i);
|
|
// roles: type, key, name, amount, imageSource
|
|
permission.holdingsListModel.push({
|
|
type: entry.type,
|
|
key: entry.key,
|
|
name: entry.name,
|
|
amount: entry.amount,
|
|
imageSource: entry.imageSource
|
|
});
|
|
}
|
|
|
|
// Setting PERMISSIONS:
|
|
permission.permissionsObjectModel.key = permissions.key
|
|
permission.permissionsObjectModel.text = permissions.text
|
|
permission.permissionsObjectModel.imageSource = permissions.imageSource
|
|
|
|
// Setting PRIVATE permission property:
|
|
permission.isPrivate = isPrivate
|
|
|
|
// TODO: Set channels list. Now mocked data.
|
|
permission.channelsListModel = root.channelsModel
|
|
|
|
if(index !== null) {
|
|
// Edit permission model:
|
|
console.log("TODO: Edit permissions - backend call")
|
|
root.permissionsModel.set(index, permission)
|
|
}
|
|
else {
|
|
// Add into permission model:
|
|
console.log("TODO: Create permissions - backend call - Now dummy data shown")
|
|
root.permissionsModel.append(permission)
|
|
}
|
|
}
|
|
|
|
function setHoldingsTextFormat(type, name, amount) {
|
|
switch (type) {
|
|
case HoldingTypes.Type.Asset:
|
|
case HoldingTypes.Type.Collectible:
|
|
return `${LocaleUtils.numberToLocaleString(amount)} ${name}`
|
|
case HoldingTypes.Type.Ens:
|
|
if (name)
|
|
return qsTr("ENS username on '%1' domain").arg(name)
|
|
else
|
|
return qsTr("Any ENS username")
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
function editPermission(index, holdings, permissions, channels, isPrivate) {
|
|
// TO BE REPLACED: Call to backend
|
|
createPermission(holdings, permissions, isPrivate, channels, index)
|
|
}
|
|
|
|
function duplicatePermission(index) {
|
|
// TO BE REPLACED: Call to backend
|
|
console.log("TODO: Duplicate permissions - backend call")
|
|
const permission = root.permissionsModel.get(index)
|
|
createPermission(permission.holdingsListModel, permission.permissionsObjectModel, permission.isPrivate, permission.channelsListModel)
|
|
}
|
|
|
|
function removePermission(index) {
|
|
console.log("TODO: Remove permissions - backend call")
|
|
root.permissionsModel.remove(index)
|
|
}
|
|
}
|