2021-10-01 15:58:36 +00:00
|
|
|
import QtQuick 2.13
|
|
|
|
|
|
|
|
import utils 1.0
|
2023-03-07 16:51:06 +00:00
|
|
|
import SortFilterProxyModel 0.2
|
2022-03-22 08:29:58 +00:00
|
|
|
import StatusQ.Core.Utils 0.1 as StatusQUtils
|
2022-10-17 10:17:25 +00:00
|
|
|
import shared.stores 1.0
|
2021-10-01 15:58:36 +00:00
|
|
|
|
|
|
|
QtObject {
|
|
|
|
id: root
|
2022-01-04 12:06:05 +00:00
|
|
|
|
2022-02-14 12:18:25 +00:00
|
|
|
property var contactsStore
|
2022-03-22 08:29:58 +00:00
|
|
|
|
2023-03-07 08:47:04 +00:00
|
|
|
readonly property PermissionsStore permissionsStore: PermissionsStore {
|
|
|
|
activeSectionId: mainModuleInst.activeSection.id
|
|
|
|
chatCommunitySectionModuleInst: chatCommunitySectionModule
|
|
|
|
}
|
|
|
|
|
2023-03-08 13:44:47 +00:00
|
|
|
readonly property CommunityTokensStore communityTokensStore: CommunityTokensStore {}
|
|
|
|
|
2022-02-15 21:00:05 +00:00
|
|
|
property bool openCreateChat: false
|
2022-03-22 08:29:58 +00:00
|
|
|
property string createChatInitMessage: ""
|
|
|
|
property var createChatFileUrls: []
|
|
|
|
property bool createChatStartSendTransactionProcess: false
|
|
|
|
property bool createChatStartReceiveTransactionProcess: false
|
|
|
|
property string createChatStickerHashId: ""
|
|
|
|
property string createChatStickerPackId: ""
|
2022-08-10 19:18:20 +00:00
|
|
|
property string createChatStickerUrl: ""
|
2022-03-22 08:29:58 +00:00
|
|
|
|
2022-05-10 16:04:25 +00:00
|
|
|
property var membershipRequestPopup
|
2022-03-25 11:33:30 +00:00
|
|
|
property var contactsModel: root.contactsStore.myContactsModel
|
2022-03-22 08:29:58 +00:00
|
|
|
|
2022-01-04 12:06:05 +00:00
|
|
|
// Important:
|
|
|
|
// Each `ChatLayout` has its own chatCommunitySectionModule
|
|
|
|
// (on the backend chat and community sections share the same module since they are actually the same)
|
|
|
|
property var chatCommunitySectionModule
|
2023-03-07 16:51:06 +00:00
|
|
|
|
|
|
|
property var communityItemsModel: chatCommunitySectionModule.model
|
|
|
|
|
|
|
|
property var assetsModel: SortFilterProxyModel {
|
|
|
|
sourceModel: chatCommunitySectionModule.tokenList
|
|
|
|
|
|
|
|
proxyRoles: ExpressionRole {
|
|
|
|
|
|
|
|
// list of symbols for which pngs are stored to avoid
|
|
|
|
// accessing not existing resources and providing
|
|
|
|
// default icon
|
|
|
|
readonly property var pngs: [
|
|
|
|
"aKNC", "AST", "BLT", "CND", "DNT", "EQUAD", "HEZ", "LOOM", "MTH",
|
|
|
|
"PAY", "RCN", "SALT", "STRK", "TRST", "WBTC", "AKRO", "aSUSD", "BLZ",
|
|
|
|
"COB", "DPY", "ETH2x-FLI", "HST", "LPT", "MTL", "PBTC", "RDN", "SAN",
|
|
|
|
"STT", "TRX", "WETH", "0-native", "aLEND", "ATMChain", "BNB", "COMP",
|
|
|
|
"DRT", "ETHOS", "HT", "LRC", "MYB", "PLR", "renBCH", "SNGLS", "STX",
|
|
|
|
"TUSD", "WINGS", "0XBTC", "aLINK", "aTUSD", "BNT", "CUSTOM-TOKEN",
|
|
|
|
"DTA", "ETH", "ICN", "MANA", "NEXO", "POE", "renBTC", "SNM", "SUB",
|
|
|
|
"UBT", "WTC", "1ST", "aMANA", "aUSDC", "BQX", "CVC", "EDG", "EVX",
|
|
|
|
"ICOS", "MCO", "NEXXO", "POLY", "REN", "SNT", "SUPR", "UKG", "XAUR",
|
|
|
|
"aBAT", "AMB", "aUSDT", "BRLN", "DAI", "EDO", "FUEL", "IOST", "MDA",
|
|
|
|
"NMR", "POWR", "renZEC", "SNX", "SUSD", "UNI", "XPA", "ABT", "aMKR",
|
|
|
|
"aWBTC", "BTM", "DATA", "EKG", "FUN", "KDO", "MET", "NPXS", "PPP",
|
|
|
|
"REP", "SOCKS", "TAAS", "UPP", "XRL", "aBUSD", "AMPL", "aYFI", "BTU",
|
|
|
|
"DAT", "EKO", "FXC", "KIN", "MFG", "OGN", "PPT", "REQ", "SPANK",
|
|
|
|
"TAUD", "USDC", "XUC", "ABYSS", "ANT", "aZRX", "CDAI", "DCN", "ELF",
|
|
|
|
"GDC", "KNC", "MGO", "OMG", "PT", "RHOC", "SPIKE", "TCAD", "USDS",
|
|
|
|
"ZRX", "aDAI", "APPC", "BAL", "CDT", "DEFAULT-TOKEN", "EMONA", "GEN",
|
|
|
|
"Kudos", "MKR", "OST", "QKC", "RLC", "SPN", "TGBP", "USDT", "ZSC",
|
|
|
|
"aENJ", "aREN", "BAM", "Centra", "DGD", "ENG", "GNO", "LEND", "MLN",
|
|
|
|
"OTN", "QRL", "ROL", "STORJ", "TKN", "VERI", "AE", "aREP", "BAND",
|
|
|
|
"CFI", "DGX", "ENJ", "GNT", "LINK", "MOC", "PAXG", "QSP", "R",
|
|
|
|
"STORM", "TKX", "VIB", "aETH", "aSNX", "BAT", "CK", "DLT", "EOS",
|
|
|
|
"GRID", "LISK", "MOD", "PAX", "RAE", "SAI", "ST", "TNT", "WABI"
|
|
|
|
]
|
|
|
|
|
|
|
|
function icon(symbol) {
|
|
|
|
if (pngs.indexOf(symbol) !== -1)
|
|
|
|
return Style.png("tokens/" + symbol)
|
|
|
|
|
|
|
|
return Style.png("tokens/DEFAULT-TOKEN")
|
|
|
|
}
|
|
|
|
|
|
|
|
name: "iconSource"
|
|
|
|
expression: !!model.icon ? model.icon : icon(model.symbol)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-09 16:54:44 +00:00
|
|
|
property var collectiblesModel: SortFilterProxyModel {
|
|
|
|
sourceModel: chatCommunitySectionModule.collectiblesModel
|
2023-03-07 16:51:06 +00:00
|
|
|
|
2023-03-09 16:54:44 +00:00
|
|
|
proxyRoles: ExpressionRole {
|
|
|
|
function icon(icon) {
|
|
|
|
return !!icon ? icon : Style.png("tokens/DEFAULT-TOKEN")
|
|
|
|
}
|
|
|
|
name: "iconSource"
|
|
|
|
expression: icon(model.icon)
|
|
|
|
}
|
|
|
|
}
|
2022-01-04 12:06:05 +00:00
|
|
|
// Since qml component doesn't follow encaptulation from the backend side, we're introducing
|
|
|
|
// a method which will return appropriate chat content module for selected chat/channel
|
|
|
|
function currentChatContentModule(){
|
|
|
|
// When we decide to have the same struct as it's on the backend we will remove this function.
|
2023-01-27 15:24:00 +00:00
|
|
|
// So far this is a way to deal with refactored backend from the current qml structure.
|
|
|
|
chatCommunitySectionModule.prepareChatContentModuleForChatId(chatCommunitySectionModule.activeItem.id)
|
2022-01-04 12:06:05 +00:00
|
|
|
return chatCommunitySectionModule.getChatContentModule()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Contact requests related part
|
|
|
|
property var contactRequestsModel: chatCommunitySectionModule.contactRequestsModel
|
|
|
|
|
2023-02-07 14:21:32 +00:00
|
|
|
property bool loadingHistoryMessagesInProgress: chatCommunitySectionModule.loadingHistoryMessagesInProgress
|
2022-02-07 21:55:14 +00:00
|
|
|
|
2022-04-08 10:41:35 +00:00
|
|
|
property var advancedModule: profileSectionModule.advancedModule
|
|
|
|
|
2022-11-28 14:57:56 +00:00
|
|
|
signal importingCommunityStateChanged(string communityId, int state, string errorMsg)
|
|
|
|
|
2022-01-25 20:07:03 +00:00
|
|
|
function setActiveCommunity(communityId) {
|
|
|
|
mainModule.setActiveSectionById(communityId);
|
|
|
|
}
|
|
|
|
|
2022-10-20 09:05:10 +00:00
|
|
|
function activateStatusDeepLink(link) {
|
|
|
|
mainModuleInst.activateStatusDeepLink(link)
|
|
|
|
}
|
|
|
|
|
2022-01-25 20:07:03 +00:00
|
|
|
function setObservedCommunity(communityId) {
|
|
|
|
communitiesModuleInst.setObservedCommunity(communityId);
|
|
|
|
}
|
|
|
|
|
2022-02-09 17:35:59 +00:00
|
|
|
function getMySectionId() {
|
|
|
|
return chatCommunitySectionModule.getMySectionId()
|
|
|
|
}
|
|
|
|
|
2022-11-08 08:36:08 +00:00
|
|
|
function amIChatAdmin() {
|
|
|
|
return currentChatContentModule().amIChatAdmin()
|
|
|
|
}
|
|
|
|
|
2022-01-04 12:06:05 +00:00
|
|
|
function acceptContactRequest(pubKey) {
|
|
|
|
chatCommunitySectionModule.acceptContactRequest(pubKey)
|
|
|
|
}
|
|
|
|
|
|
|
|
function acceptAllContactRequests() {
|
|
|
|
chatCommunitySectionModule.acceptAllContactRequests()
|
|
|
|
}
|
|
|
|
|
2022-05-27 08:57:18 +00:00
|
|
|
function dismissContactRequest(pubKey) {
|
|
|
|
chatCommunitySectionModule.dismissContactRequest(pubKey)
|
2022-01-04 12:06:05 +00:00
|
|
|
}
|
|
|
|
|
2022-05-27 08:57:18 +00:00
|
|
|
function dismissAllContactRequests() {
|
|
|
|
chatCommunitySectionModule.dismissAllContactRequests()
|
2022-01-04 12:06:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function blockContact(pubKey) {
|
|
|
|
chatCommunitySectionModule.blockContact(pubKey)
|
|
|
|
}
|
|
|
|
|
2022-03-22 08:29:58 +00:00
|
|
|
function interpretMessage(msg) {
|
|
|
|
if (msg.startsWith("/shrug")) {
|
|
|
|
return msg.replace("/shrug", "") + " ¯\\\\\\_(ツ)\\_/¯"
|
|
|
|
}
|
|
|
|
if (msg.startsWith("/tableflip")) {
|
|
|
|
return msg.replace("/tableflip", "") + " (╯°□°)╯︵ ┻━┻"
|
|
|
|
}
|
|
|
|
|
|
|
|
return msg
|
|
|
|
}
|
|
|
|
|
2023-01-09 21:13:08 +00:00
|
|
|
function sendMessage(chatId, event, text, replyMessageId, fileUrlsAndSources) {
|
|
|
|
chatCommunitySectionModule.prepareChatContentModuleForChatId(chatId)
|
|
|
|
const chatContentModule = chatCommunitySectionModule.getChatContentModule()
|
2023-01-10 14:50:47 +00:00
|
|
|
var result = false
|
|
|
|
|
2022-11-25 14:08:12 +00:00
|
|
|
if (fileUrlsAndSources.length > 0){
|
2023-01-10 14:50:47 +00:00
|
|
|
chatContentModule.inputAreaModule.sendImages(JSON.stringify(fileUrlsAndSources))
|
|
|
|
result = true
|
2022-03-22 08:29:58 +00:00
|
|
|
}
|
2022-11-25 14:08:12 +00:00
|
|
|
|
2023-01-10 14:50:47 +00:00
|
|
|
let msg = globalUtils.plainText(StatusQUtils.Emoji.deparse(text))
|
|
|
|
if (msg.trim() !== "") {
|
2022-03-22 08:29:58 +00:00
|
|
|
msg = interpretMessage(msg)
|
|
|
|
|
|
|
|
chatContentModule.inputAreaModule.sendMessage(
|
|
|
|
msg,
|
|
|
|
replyMessageId,
|
|
|
|
Utils.isOnlyEmoji(msg) ? Constants.messageContentType.emojiType : Constants.messageContentType.messageType,
|
|
|
|
false)
|
|
|
|
|
|
|
|
if (event)
|
|
|
|
event.accepted = true
|
|
|
|
|
2023-01-10 14:50:47 +00:00
|
|
|
result = true
|
2022-03-22 08:29:58 +00:00
|
|
|
}
|
2023-01-10 14:50:47 +00:00
|
|
|
return result
|
2022-03-22 08:29:58 +00:00
|
|
|
}
|
|
|
|
|
2023-01-26 18:52:41 +00:00
|
|
|
function openCloseCreateChatView() {
|
|
|
|
if (root.openCreateChat) {
|
|
|
|
Global.closeCreateChatView()
|
|
|
|
} else {
|
|
|
|
Global.openCreateChatView()
|
|
|
|
}
|
|
|
|
}
|
2022-01-04 12:06:05 +00:00
|
|
|
|
2022-01-13 21:41:43 +00:00
|
|
|
property var messageStore: MessageStore { }
|
|
|
|
|
2022-01-05 15:50:03 +00:00
|
|
|
property var emojiReactionsModel
|
2021-10-01 15:58:36 +00:00
|
|
|
|
2022-01-13 10:16:11 +00:00
|
|
|
property var globalUtilsInst: globalUtils
|
|
|
|
|
2022-01-05 15:11:26 +00:00
|
|
|
property var mainModuleInst: mainModule
|
2022-09-15 16:34:41 +00:00
|
|
|
|
2021-12-14 19:21:50 +00:00
|
|
|
property var communitiesModuleInst: communitiesModule
|
|
|
|
property var communitiesList: communitiesModuleInst.model
|
2022-06-09 15:27:14 +00:00
|
|
|
property bool communityPermissionsEnabled: localAccountSensitiveSettings.isCommunityPermissionsEnabled
|
2023-01-09 12:51:31 +00:00
|
|
|
property bool communityTokensEnabled: localAccountSensitiveSettings.isCommunityTokensEnabled
|
2021-12-14 19:21:50 +00:00
|
|
|
|
2021-11-22 11:08:09 +00:00
|
|
|
property var userProfileInst: userProfile
|
2021-10-01 15:58:36 +00:00
|
|
|
|
2022-02-09 00:04:49 +00:00
|
|
|
property string signingPhrase: walletSection.signingPhrase
|
|
|
|
|
2022-05-16 15:02:03 +00:00
|
|
|
property string channelEmoji: chatCommunitySectionModule && chatCommunitySectionModule.emoji ? chatCommunitySectionModule.emoji : ""
|
2022-03-14 19:32:52 +00:00
|
|
|
|
2021-11-30 10:50:53 +00:00
|
|
|
property ListModel addToGroupContacts: ListModel {}
|
|
|
|
|
2022-02-09 00:04:49 +00:00
|
|
|
property var walletSectionTransactionsInst: walletSectionTransactions
|
|
|
|
|
2022-08-02 18:37:27 +00:00
|
|
|
property bool isWakuV2StoreEnabled: advancedModule ? advancedModule.isWakuV2StoreEnabled : false
|
|
|
|
|
2022-06-09 14:59:54 +00:00
|
|
|
property string communityTags: communitiesModule.tags
|
|
|
|
|
2021-11-25 17:12:19 +00:00
|
|
|
property var stickersModuleInst: stickersModule
|
2021-11-15 15:15:21 +00:00
|
|
|
|
2023-01-06 20:19:27 +00:00
|
|
|
property bool isDebugEnabled: advancedModule ? advancedModule.isDebugEnabled : false
|
|
|
|
|
2022-02-14 23:27:23 +00:00
|
|
|
property var stickersStore: StickersStore {
|
|
|
|
stickersModule: stickersModuleInst
|
|
|
|
}
|
|
|
|
|
2022-08-10 19:18:20 +00:00
|
|
|
function sendSticker(channelId, hash, replyTo, pack, url) {
|
|
|
|
stickersModuleInst.send(channelId, hash, replyTo, pack, url)
|
2021-12-22 14:55:13 +00:00
|
|
|
}
|
|
|
|
|
2021-10-21 00:41:54 +00:00
|
|
|
function copyToClipboard(text) {
|
2022-01-13 10:16:11 +00:00
|
|
|
globalUtilsInst.copyToClipboard(text)
|
2021-10-21 00:41:54 +00:00
|
|
|
}
|
|
|
|
|
2022-03-28 22:16:56 +00:00
|
|
|
function copyImageToClipboardByUrl(content) {
|
|
|
|
globalUtilsInst.copyImageToClipboardByUrl(content)
|
2022-01-19 15:59:08 +00:00
|
|
|
}
|
|
|
|
|
2022-03-28 22:16:56 +00:00
|
|
|
function downloadImageByUrl(url, path) {
|
|
|
|
globalUtilsInst.downloadImageByUrl(url, path)
|
2022-01-19 15:59:08 +00:00
|
|
|
}
|
|
|
|
|
2022-03-09 10:27:32 +00:00
|
|
|
function isCurrentUser(pubkey) {
|
|
|
|
return userProfileInst.pubKey === pubkey
|
|
|
|
}
|
|
|
|
|
|
|
|
function displayName(name, pubkey) {
|
|
|
|
return isCurrentUser(pubkey) ? qsTr("You") : name
|
|
|
|
}
|
|
|
|
|
2021-10-21 00:41:54 +00:00
|
|
|
function getCommunity(communityId) {
|
2021-12-13 14:24:21 +00:00
|
|
|
// Not Refactored Yet
|
|
|
|
// try {
|
|
|
|
// const communityJson = chatsModelInst.communities.list.getCommunityByIdJson(communityId);
|
|
|
|
// if (!communityJson) {
|
|
|
|
// return null;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// let community = JSON.parse(communityJson);
|
|
|
|
// if (community) {
|
|
|
|
// community.nbMembers = community.members.length;
|
|
|
|
// }
|
|
|
|
// return community
|
|
|
|
// } catch (e) {
|
|
|
|
// console.error("Error parsing community", e);
|
|
|
|
// }
|
2021-10-21 00:41:54 +00:00
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
2021-10-22 20:49:47 +00:00
|
|
|
|
2021-12-13 14:24:21 +00:00
|
|
|
// Not Refactored Yet
|
|
|
|
property var activeCommunityChatsModel: "" //chatsModelInst.communities.activeCommunity.chats
|
2021-10-22 20:49:47 +00:00
|
|
|
|
2022-06-02 17:48:10 +00:00
|
|
|
function createCommunity(args = {
|
|
|
|
name: "",
|
|
|
|
description: "",
|
|
|
|
introMessage: "",
|
|
|
|
outroMessage: "",
|
|
|
|
color: "",
|
2022-06-09 14:59:54 +00:00
|
|
|
tags: "",
|
2022-06-02 17:48:10 +00:00
|
|
|
image: {
|
|
|
|
src: "",
|
|
|
|
AX: 0,
|
|
|
|
AY: 0,
|
|
|
|
BX: 0,
|
|
|
|
BY: 0,
|
|
|
|
},
|
|
|
|
options: {
|
|
|
|
historyArchiveSupportEnabled: false,
|
|
|
|
checkedMembership: false,
|
2022-10-07 16:33:23 +00:00
|
|
|
pinMessagesAllowedForMembers: false,
|
|
|
|
encrypted: false
|
2022-08-17 12:44:53 +00:00
|
|
|
},
|
|
|
|
bannerJsonStr: ""
|
2022-06-02 17:48:10 +00:00
|
|
|
}) {
|
|
|
|
return communitiesModuleInst.createCommunity(
|
2022-06-09 14:59:54 +00:00
|
|
|
args.name, args.description, args.introMessage, args.outroMessage,
|
|
|
|
args.options.checkedMembership, args.color, args.tags,
|
2022-06-02 17:48:10 +00:00
|
|
|
args.image.src, args.image.AX, args.image.AY, args.image.BX, args.image.BY,
|
2022-10-07 16:33:23 +00:00
|
|
|
args.options.historyArchiveSupportEnabled, args.options.pinMessagesAllowedForMembers,
|
|
|
|
args.bannerJsonStr, args.options.encrypted);
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
2022-02-02 17:54:28 +00:00
|
|
|
|
|
|
|
function importCommunity(communityKey) {
|
|
|
|
root.communitiesModuleInst.importCommunity(communityKey);
|
|
|
|
}
|
2021-10-22 20:49:47 +00:00
|
|
|
|
2022-01-25 20:39:20 +00:00
|
|
|
function createCommunityCategory(categoryName, channels) {
|
|
|
|
chatCommunitySectionModule.createCommunityCategory(categoryName, channels)
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-02-01 15:31:05 +00:00
|
|
|
function editCommunityCategory(categoryId, categoryName, channels) {
|
|
|
|
chatCommunitySectionModule.editCommunityCategory(categoryId, categoryName, channels);
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function deleteCommunityCategory(categoryId) {
|
2022-02-01 00:32:53 +00:00
|
|
|
chatCommunitySectionModule.deleteCommunityCategory(categoryId);
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-02-01 15:31:05 +00:00
|
|
|
function prepareEditCategoryModel(categoryId) {
|
|
|
|
chatCommunitySectionModule.prepareEditCategoryModel(categoryId);
|
2022-02-09 09:43:23 +00:00
|
|
|
}
|
2022-02-01 15:31:05 +00:00
|
|
|
|
2022-01-18 20:54:14 +00:00
|
|
|
function leaveCommunity() {
|
|
|
|
chatCommunitySectionModule.leaveCommunity();
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-02-24 21:19:11 +00:00
|
|
|
function removeUserFromCommunity(pubKey) {
|
|
|
|
chatCommunitySectionModule.removeUserFromCommunity(pubKey);
|
|
|
|
}
|
|
|
|
|
2022-04-07 14:49:38 +00:00
|
|
|
function banUserFromCommunity(pubKey) {
|
|
|
|
chatCommunitySectionModule.banUserFromCommunity(pubKey);
|
|
|
|
}
|
|
|
|
|
2022-06-28 15:03:10 +00:00
|
|
|
function unbanUserFromCommunity(pubKey) {
|
|
|
|
chatCommunitySectionModule.unbanUserFromCommunity(pubKey);
|
|
|
|
}
|
|
|
|
|
2022-03-10 19:28:37 +00:00
|
|
|
function createCommunityChannel(channelName, channelDescription, channelEmoji, channelColor,
|
|
|
|
categoryId) {
|
|
|
|
chatCommunitySectionModule.createCommunityChannel(channelName, channelDescription,
|
|
|
|
channelEmoji, channelColor, categoryId);
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-03-10 19:28:37 +00:00
|
|
|
function editCommunityChannel(chatId, newName, newDescription, newEmoji, newColor,
|
|
|
|
newCategory, channelPosition) {
|
2022-02-24 21:38:32 +00:00
|
|
|
chatCommunitySectionModule.editCommunityChannel(
|
|
|
|
chatId,
|
|
|
|
newName,
|
|
|
|
newDescription,
|
2022-03-07 14:56:05 +00:00
|
|
|
newEmoji,
|
2022-03-10 19:28:37 +00:00
|
|
|
newColor,
|
2022-02-24 21:38:32 +00:00
|
|
|
newCategory,
|
|
|
|
channelPosition
|
|
|
|
)
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-10-19 12:56:00 +00:00
|
|
|
function acceptRequestToJoinCommunity(requestId, communityId) {
|
|
|
|
chatCommunitySectionModule.acceptRequestToJoinCommunity(requestId, communityId)
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
|
|
|
|
2022-10-19 12:56:00 +00:00
|
|
|
function declineRequestToJoinCommunity(requestId, communityId) {
|
|
|
|
chatCommunitySectionModule.declineRequestToJoinCommunity(requestId, communityId)
|
2021-10-22 20:49:47 +00:00
|
|
|
}
|
2021-10-28 20:23:30 +00:00
|
|
|
|
|
|
|
function userNameOrAlias(pk) {
|
2021-12-13 14:24:21 +00:00
|
|
|
// Not Refactored Yet
|
|
|
|
// return chatsModelInst.userNameOrAlias(pk);
|
2021-10-28 20:23:30 +00:00
|
|
|
}
|
|
|
|
|
2022-01-21 19:18:56 +00:00
|
|
|
function generateAlias(pk) {
|
2023-01-06 15:43:54 +00:00
|
|
|
return globalUtilsInst.generateAlias(pk);
|
2022-01-11 21:53:18 +00:00
|
|
|
}
|
|
|
|
|
2022-01-17 18:46:46 +00:00
|
|
|
function plainText(text) {
|
2023-01-06 15:43:54 +00:00
|
|
|
return globalUtilsInst.plainText(text)
|
2022-01-17 18:46:46 +00:00
|
|
|
}
|
2022-01-18 17:20:31 +00:00
|
|
|
|
2022-01-25 12:09:27 +00:00
|
|
|
function removeCommunityChat(chatId) {
|
|
|
|
chatCommunitySectionModule.removeCommunityChat(chatId)
|
2022-01-18 17:20:31 +00:00
|
|
|
}
|
2022-01-25 14:51:38 +00:00
|
|
|
|
2022-02-11 21:41:34 +00:00
|
|
|
function reorderCommunityCategories(categoryId, to) {
|
2022-01-25 14:51:38 +00:00
|
|
|
chatCommunitySectionModule.reorderCommunityCategories(categoryId, to)
|
|
|
|
}
|
|
|
|
|
2022-02-11 21:41:34 +00:00
|
|
|
function reorderCommunityChat(categoryId, chatId, to) {
|
2022-01-25 14:51:38 +00:00
|
|
|
chatCommunitySectionModule.reorderCommunityChat(categoryId, chatId, to)
|
|
|
|
}
|
2022-02-11 21:41:34 +00:00
|
|
|
|
2022-09-22 07:13:03 +00:00
|
|
|
function spectateCommunity(id, ensName) {
|
|
|
|
return communitiesModuleInst.spectateCommunity(id, ensName)
|
2022-02-11 21:41:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function requestToJoinCommunity(id, ensName) {
|
2023-03-16 14:10:58 +00:00
|
|
|
chatCommunitySectionModule.requestToJoinCommunity(id, ensName)
|
2022-02-11 21:41:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function userCanJoin(id) {
|
|
|
|
return communitiesModuleInst.userCanJoin(id)
|
|
|
|
}
|
|
|
|
|
|
|
|
function isUserMemberOfCommunity(id) {
|
|
|
|
return communitiesModuleInst.isUserMemberOfCommunity(id)
|
|
|
|
}
|
|
|
|
|
|
|
|
function isCommunityRequestPending(id) {
|
|
|
|
return communitiesModuleInst.isCommunityRequestPending(id)
|
|
|
|
}
|
|
|
|
|
2022-10-21 10:09:17 +00:00
|
|
|
function cancelPendingRequest(id: string) {
|
|
|
|
communitiesModuleInst.cancelRequestToJoinCommunity(id)
|
|
|
|
}
|
|
|
|
|
2022-02-11 21:41:34 +00:00
|
|
|
function getSectionNameById(id) {
|
|
|
|
return communitiesList.getSectionNameById(id)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getSectionByIdJson(id) {
|
|
|
|
return communitiesList.getSectionByIdJson(id)
|
|
|
|
}
|
|
|
|
|
2023-01-18 12:49:04 +00:00
|
|
|
function requestCommunityInfo(id, importing = false) {
|
|
|
|
communitiesModuleInst.requestCommunityInfo(id, importing)
|
2022-09-22 16:35:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getCommunityDetailsAsJson(id) {
|
2022-10-28 14:25:48 +00:00
|
|
|
const jsonObj = communitiesModuleInst.getCommunityDetails(id)
|
2022-09-22 16:35:18 +00:00
|
|
|
try {
|
2022-10-28 14:25:48 +00:00
|
|
|
return JSON.parse(jsonObj)
|
2022-09-22 16:35:18 +00:00
|
|
|
}
|
|
|
|
catch (e) {
|
2022-09-23 14:14:31 +00:00
|
|
|
console.warn("error parsing community by id: ", id, " error: ", e.message)
|
2022-09-22 16:35:18 +00:00
|
|
|
return {}
|
|
|
|
}
|
2022-06-20 11:39:40 +00:00
|
|
|
}
|
|
|
|
|
2022-10-28 14:25:48 +00:00
|
|
|
function getChatDetails(id) {
|
|
|
|
const jsonObj = activityCenterModule.getChatDetailsAsJson(id)
|
|
|
|
try {
|
|
|
|
return JSON.parse(jsonObj)
|
|
|
|
}
|
|
|
|
catch (e) {
|
|
|
|
console.warn("error parsing chat by id: ", id, " error: ", e.message)
|
|
|
|
return {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-02-11 21:41:34 +00:00
|
|
|
function getLinkTitleAndCb(link) {
|
|
|
|
const result = {
|
|
|
|
title: "Status",
|
2023-02-03 13:05:32 +00:00
|
|
|
callback: null,
|
|
|
|
fetching: true,
|
|
|
|
communityId: ""
|
2022-02-11 21:41:34 +00:00
|
|
|
}
|
|
|
|
|
2022-10-20 09:05:10 +00:00
|
|
|
// User profile
|
|
|
|
// There is invitation bubble only for /c/ link for now
|
|
|
|
/*let index = link.indexOf("/u/")
|
2022-02-11 21:41:34 +00:00
|
|
|
if (index > -1) {
|
2022-10-20 09:05:10 +00:00
|
|
|
//const pk = link.substring(index + 3)
|
|
|
|
result.title = qsTr("Display user profile")
|
2022-02-11 21:41:34 +00:00
|
|
|
result.callback = function () {
|
2022-10-20 09:05:10 +00:00
|
|
|
mainModuleInst.activateStatusDeepLink(link)
|
2022-02-11 21:41:34 +00:00
|
|
|
}
|
|
|
|
return result
|
2022-10-20 09:05:10 +00:00
|
|
|
}*/
|
2022-02-11 21:41:34 +00:00
|
|
|
|
|
|
|
// Community
|
2023-02-03 13:05:32 +00:00
|
|
|
result.communityId = Utils.getCommunityIdFromShareLink(link)
|
|
|
|
if(!result.communityId) return result
|
2022-02-11 21:41:34 +00:00
|
|
|
|
2023-02-03 13:05:32 +00:00
|
|
|
const communityName = getSectionNameById(result.communityId)
|
|
|
|
if (!communityName) {
|
|
|
|
// Unknown community, fetch the info if possible
|
|
|
|
root.requestCommunityInfo(communityId)
|
2022-02-11 21:41:34 +00:00
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
2023-02-03 13:05:32 +00:00
|
|
|
result.title = qsTr("Join the %1 community").arg(communityName)
|
|
|
|
result.fetching = false
|
|
|
|
result.callback = function () {
|
|
|
|
const isUserMemberOfCommunity = isUserMemberOfCommunity(result.communityId)
|
|
|
|
if (isUserMemberOfCommunity) {
|
|
|
|
setActiveCommunity(result.communityId)
|
|
|
|
return
|
|
|
|
}
|
2022-02-11 21:41:34 +00:00
|
|
|
|
2023-02-03 13:05:32 +00:00
|
|
|
const userCanJoin = userCanJoin(result.communityId)
|
|
|
|
// TODO find what to do when you can't join
|
|
|
|
if (userCanJoin) {
|
|
|
|
requestToJoinCommunity(result.communityId, userProfileInst.preferredName)
|
|
|
|
}
|
|
|
|
}
|
2022-02-11 21:41:34 +00:00
|
|
|
return result
|
|
|
|
}
|
|
|
|
|
|
|
|
function getLinkDataForStatusLinks(link) {
|
2022-10-28 08:48:59 +00:00
|
|
|
if (!Utils.isStatusDeepLink(link)) {
|
2022-02-11 21:41:34 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
const result = getLinkTitleAndCb(link)
|
|
|
|
|
|
|
|
return {
|
|
|
|
site: "https://join.status.im",
|
|
|
|
title: result.title,
|
|
|
|
communityId: result.communityId,
|
|
|
|
fetching: result.fetching,
|
|
|
|
thumbnailUrl: Style.png("status"),
|
|
|
|
contentType: "",
|
|
|
|
height: 0,
|
|
|
|
width: 0,
|
|
|
|
callback: result.callback
|
|
|
|
}
|
|
|
|
}
|
2022-02-09 00:04:49 +00:00
|
|
|
|
|
|
|
function getPubkey() {
|
|
|
|
return userProfile.getPubKey()
|
|
|
|
}
|
|
|
|
|
2022-10-17 10:17:25 +00:00
|
|
|
// Needed for TX in chat for stickers and via contact
|
|
|
|
|
|
|
|
property var accounts: walletSectionAccounts.model
|
|
|
|
property var currentAccount: walletSectionCurrent
|
|
|
|
property string currentCurrency: walletSection.currentCurrency
|
2022-12-29 16:44:51 +00:00
|
|
|
property CurrenciesStore currencyStore: CurrenciesStore {}
|
2022-07-01 11:24:32 +00:00
|
|
|
property var allNetworks: networksModule.all
|
2022-10-17 10:17:25 +00:00
|
|
|
property var savedAddressesModel: walletSectionSavedAddresses.model
|
2022-07-01 11:24:32 +00:00
|
|
|
|
2022-10-17 10:17:25 +00:00
|
|
|
property var disabledChainIdsFromList: []
|
|
|
|
property var disabledChainIdsToList: []
|
2022-07-01 11:24:32 +00:00
|
|
|
|
2022-10-17 10:17:25 +00:00
|
|
|
function addRemoveDisabledFromChain(chainID, isDisabled) {
|
|
|
|
if(isDisabled) {
|
|
|
|
disabledChainIdsFromList.push(chainID)
|
2022-07-01 11:24:32 +00:00
|
|
|
}
|
|
|
|
else {
|
2022-10-17 10:17:25 +00:00
|
|
|
for(var i = 0; i < disabledChainIdsFromList.length;i++) {
|
|
|
|
if(disabledChainIdsFromList[i] === chainID) {
|
|
|
|
disabledChainIdsFromList.splice(i, 1)
|
2022-07-01 11:24:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-10-17 10:17:25 +00:00
|
|
|
function addRemoveDisabledToChain(chainID, isDisabled) {
|
|
|
|
if(isDisabled) {
|
|
|
|
disabledChainIdsToList.push(chainID)
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
for(var i = 0; i < disabledChainIdsToList.length;i++) {
|
|
|
|
if(disabledChainIdsToList[i] === chainID) {
|
|
|
|
disabledChainIdsToList.splice(i, 1)
|
|
|
|
}
|
2022-07-01 11:24:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-10-17 10:17:25 +00:00
|
|
|
function getFiatValue(balance, cryptoSymbol, fiatSymbol) {
|
|
|
|
return profileSectionModule.ensUsernamesModule.getFiatValue(balance, cryptoSymbol, fiatSymbol)
|
2022-02-09 00:04:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function acceptRequestTransaction(transactionHash, messageId, signature) {
|
|
|
|
return currentChatContentModule().inputAreaModule.acceptRequestTransaction(transactionHash, messageId, signature)
|
|
|
|
}
|
|
|
|
|
|
|
|
function acceptAddressRequest(messageId, address) {
|
|
|
|
currentChatContentModule().inputAreaModule.acceptAddressRequest(messageId, address)
|
|
|
|
}
|
|
|
|
|
|
|
|
function declineAddressRequest(messageId) {
|
|
|
|
currentChatContentModule().inputAreaModule.declineAddressRequest(messageId)
|
|
|
|
}
|
|
|
|
|
|
|
|
function declineRequest(messageId) {
|
|
|
|
currentChatContentModule().inputAreaModule.declineRequest(messageId)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getGasEthValue(gweiValue, gasLimit) {
|
|
|
|
return profileSectionModule.ensUsernamesModule.getGasEthValue(gweiValue, gasLimit)
|
|
|
|
}
|
|
|
|
|
2022-05-19 08:53:57 +00:00
|
|
|
function estimateGas(from_addr, to, assetSymbol, value, chainId, data) {
|
|
|
|
return walletSectionTransactions.estimateGas(from_addr, to, assetSymbol, value === "" ? "0.00" : value, chainId, data)
|
2022-02-09 00:04:49 +00:00
|
|
|
}
|
|
|
|
|
2022-11-30 12:59:21 +00:00
|
|
|
function authenticateAndTransfer(from, to, tokenSymbol, amount, uuid, selectedRoutes) {
|
|
|
|
walletSectionTransactions.authenticateAndTransfer(from, to, tokenSymbol, amount, uuid, selectedRoutes)
|
2022-02-09 00:04:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getAccountNameByAddress(address) {
|
|
|
|
return walletSectionAccounts.getAccountNameByAddress(address)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getAccountIconColorByAddress(address) {
|
|
|
|
return walletSectionAccounts.getAccountIconColorByAddress(address)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getAccountAssetsByAddress(address) {
|
|
|
|
walletSectionAccounts.setAddressForAssets(address)
|
|
|
|
return walletSectionAccounts.getAccountAssetsByAddress()
|
|
|
|
}
|
|
|
|
|
2022-05-19 08:53:57 +00:00
|
|
|
function suggestedFees(chainId) {
|
|
|
|
return JSON.parse(walletSectionTransactions.suggestedFees(chainId))
|
2022-02-14 23:27:23 +00:00
|
|
|
}
|
|
|
|
|
2022-11-25 09:13:02 +00:00
|
|
|
function suggestedRoutes(account, amount, token, disabledFromChainIDs, disabledToChainIDs, preferredChainIds, sendType, lockedInAmounts) {
|
|
|
|
walletSectionTransactions.suggestedRoutes(account, amount, token, disabledFromChainIDs, disabledToChainIDs, preferredChainIds, sendType, lockedInAmounts)
|
2022-10-17 10:17:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function resolveENS(value) {
|
|
|
|
mainModuleInst.resolveENS(value, "")
|
|
|
|
}
|
|
|
|
|
|
|
|
function getWei2Eth(wei) {
|
2023-01-06 15:43:54 +00:00
|
|
|
return globalUtilsInst.wei2Eth(wei,18)
|
2022-10-17 10:17:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getEth2Wei(eth) {
|
2023-01-06 15:43:54 +00:00
|
|
|
return globalUtilsInst.eth2Wei(eth, 18)
|
2022-10-17 10:17:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function switchAccount(newIndex) {
|
|
|
|
if(Constants.isCppApp)
|
|
|
|
walletSectionAccounts.switchAccount(newIndex)
|
|
|
|
else
|
|
|
|
walletSection.switchAccount(newIndex)
|
|
|
|
}
|
|
|
|
|
|
|
|
function getEtherscanLink() {
|
|
|
|
return profileSectionModule.ensUsernamesModule.getEtherscanLink()
|
|
|
|
}
|
|
|
|
|
|
|
|
function hex2Eth(value) {
|
2023-01-06 15:43:54 +00:00
|
|
|
return globalUtilsInst.hex2Eth(value)
|
2022-02-14 23:27:23 +00:00
|
|
|
}
|
2022-11-28 14:57:56 +00:00
|
|
|
|
|
|
|
readonly property Connections communitiesModuleConnections: Connections {
|
|
|
|
target: communitiesModuleInst
|
|
|
|
function onImportingCommunityStateChanged(communityId, state, errorMsg) {
|
|
|
|
root.importingCommunityStateChanged(communityId, state, errorMsg)
|
|
|
|
}
|
|
|
|
}
|
2021-10-01 15:58:36 +00:00
|
|
|
}
|