182 lines
8.2 KiB
QML
182 lines
8.2 KiB
QML
import QtQuick 2.13
|
|
import QtQml.Models 2.2
|
|
|
|
import utils 1.0
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
property var communitiesModuleInst: communitiesModule
|
|
property var mainModuleInst: mainModule
|
|
|
|
readonly property var curatedCommunitiesModel: root.communitiesModuleInst.curatedCommunities
|
|
|
|
property var discordFileList: root.communitiesModuleInst.discordFileList
|
|
property var discordCategoriesModel: root.communitiesModuleInst.discordCategories
|
|
property var discordChannelsModel: root.communitiesModuleInst.discordChannels
|
|
property int discordOldestMessageTimestamp: root.communitiesModuleInst.discordOldestMessageTimestamp
|
|
property bool discordDataExtractionInProgress: root.communitiesModuleInst.discordDataExtractionInProgress
|
|
property int discordImportErrorsCount: root.communitiesModuleInst.discordImportErrorsCount
|
|
property int discordImportWarningsCount: root.communitiesModuleInst.discordImportWarningsCount
|
|
property int discordImportProgress: root.communitiesModuleInst.discordImportProgress
|
|
property bool discordImportInProgress: root.communitiesModuleInst.discordImportInProgress
|
|
property bool discordImportCancelled: root.communitiesModuleInst.discordImportCancelled
|
|
property bool discordImportProgressStopped: root.communitiesModuleInst.discordImportProgressStopped
|
|
property string discordImportCommunityId: root.communitiesModuleInst.discordImportCommunityId
|
|
property string discordImportCommunityName: root.communitiesModuleInst.discordImportCommunityName
|
|
property url discordImportCommunityImage: root.communitiesModuleInst.discordImportCommunityImage
|
|
property bool discordImportHasCommunityImage: root.communitiesModuleInst.discordImportHasCommunityImage
|
|
property var discordImportTasks: root.communitiesModuleInst.discordImportTasks
|
|
property bool downloadingCommunityHistoryArchives: root.communitiesModuleInst.downloadingCommunityHistoryArchives
|
|
property string locale: localAppSettings.language
|
|
property var advancedModule: profileSectionModule.advancedModule
|
|
|
|
// TODO: Could the backend provide directly 2 filtered models??
|
|
//property var featuredCommunitiesModel: root.communitiesModuleInst.curatedFeaturedCommunities
|
|
//property var popularCommunitiesModel: root.communitiesModuleInst.curatedPopularCommunities
|
|
property ListModel tagsModel: ListModel {}//root.notionsTagsModel
|
|
|
|
// TO DO: Complete list can be added in backend or here: https://www.notion.so/Category-tags-339b2e699e7c4d36ab0608ab00b99111
|
|
property ListModel notionsTagsModel : ListModel {
|
|
ListElement { name: "gaming"; emoji: "🎮"}
|
|
ListElement { name: "art"; emoji: "🖼️️"}
|
|
ListElement { name: "crypto"; emoji: "💸"}
|
|
ListElement { name: "nsfw"; emoji: "🍆"}
|
|
ListElement { name: "markets"; emoji: "💎"}
|
|
ListElement { name: "defi"; emoji: "📈"}
|
|
ListElement { name: "travel"; emoji: "🚁"}
|
|
ListElement { name: "web3"; emoji: "🗺"}
|
|
ListElement { name: "sport"; emoji: "🎾"}
|
|
ListElement { name: "food"; emoji: "🥑"}
|
|
ListElement { name: "enviroment"; emoji: "☠️"}
|
|
ListElement { name: "privacy"; emoji: "👻"}
|
|
}
|
|
|
|
property string communityTags: communitiesModuleInst.tags
|
|
|
|
signal importingCommunityStateChanged(string communityId, int state, string errorMsg)
|
|
|
|
function createCommunity(args = {
|
|
name: "",
|
|
description: "",
|
|
introMessage: "",
|
|
outroMessage: "",
|
|
color: "",
|
|
tags: "",
|
|
image: {
|
|
src: "",
|
|
AX: 0,
|
|
AY: 0,
|
|
BX: 0,
|
|
BY: 0,
|
|
},
|
|
options: {
|
|
historyArchiveSupportEnabled: false,
|
|
checkedMembership: false,
|
|
pinMessagesAllowedForMembers: false,
|
|
encrypted: false,
|
|
},
|
|
bannerJsonStr: ""
|
|
}) {
|
|
return communitiesModuleInst.createCommunity(
|
|
args.name, args.description, args.introMessage, args.outroMessage, args.options.checkedMembership,
|
|
args.color, args.tags,
|
|
args.image.src, args.image.AX, args.image.AY, args.image.BX, args.image.BY,
|
|
args.options.historyArchiveSupportEnabled, args.options.pinMessagesAllowedForMembers,
|
|
args.bannerJsonStr, args.options.encrypted);
|
|
}
|
|
|
|
function importCommunity(communityKey) {
|
|
root.communitiesModuleInst.importCommunity(communityKey);
|
|
}
|
|
|
|
function requestCommunityInfo(communityKey) {
|
|
let publicKey = communityKey
|
|
if (Utils.isCompressedPubKey(communityKey)) {
|
|
publicKey = Utils.changeCommunityKeyCompression(communityKey)
|
|
}
|
|
|
|
root.mainModuleInst.setCommunityIdToSpectate(publicKey)
|
|
root.communitiesModuleInst.requestCommunityInfo(publicKey);
|
|
}
|
|
|
|
function setActiveCommunity(communityId) {
|
|
mainModule.setActiveSectionById(communityId);
|
|
}
|
|
|
|
function navigateToCommunity(communityId) {
|
|
root.communitiesModuleInst.navigateToCommunity(communityId)
|
|
}
|
|
|
|
function removeFileListItem(filePath) {
|
|
root.communitiesModuleInst.removeFileListItem(filePath)
|
|
}
|
|
function setFileListItems(filePaths) {
|
|
root.communitiesModuleInst.setFileListItems(filePaths)
|
|
}
|
|
|
|
function clearFileList() {
|
|
root.communitiesModuleInst.clearFileList()
|
|
}
|
|
|
|
function requestExtractChannelsAndCategories() {
|
|
root.communitiesModuleInst.requestExtractDiscordChannelsAndCategories()
|
|
}
|
|
|
|
function clearDiscordCategoriesAndChannels() {
|
|
root.communitiesModuleInst.clearDiscordCategoriesAndChannels()
|
|
}
|
|
|
|
function toggleDiscordCategory(id, selected) {
|
|
root.communitiesModuleInst.toggleDiscordCategory(id, selected)
|
|
}
|
|
|
|
function toggleDiscordChannel(id, selected) {
|
|
root.communitiesModuleInst.toggleDiscordChannel(id, selected)
|
|
}
|
|
|
|
function requestCancelDiscordCommunityImport(id) {
|
|
root.communitiesModuleInst.requestCancelDiscordCommunityImport(id)
|
|
}
|
|
|
|
function resetDiscordImport() {
|
|
root.communitiesModuleInst.resetDiscordImport(false)
|
|
}
|
|
|
|
function requestImportDiscordCommunity(args = {
|
|
name: "",
|
|
description: "",
|
|
introMessage: "",
|
|
outroMessage: "",
|
|
color: "",
|
|
tags: "",
|
|
image: {
|
|
src: "",
|
|
AX: 0,
|
|
AY: 0,
|
|
BX: 0,
|
|
BY: 0,
|
|
},
|
|
options: {
|
|
historyArchiveSupportEnabled: false,
|
|
checkedMembership: false,
|
|
pinMessagesAllowedForMembers: false,
|
|
encrypted: false
|
|
}
|
|
}, from = 0) {
|
|
return communitiesModuleInst.requestImportDiscordCommunity(
|
|
args.name, args.description, args.introMessage, args.outroMessage, args.options.checkedMembership,
|
|
args.color, args.tags,
|
|
args.image.src, args.image.AX, args.image.AY, args.image.BX, args.image.BY,
|
|
args.options.historyArchiveSupportEnabled, args.options.pinMessagesAllowedForMembers, from, args.options.encrypted);
|
|
}
|
|
|
|
|
|
readonly property Connections connections: Connections {
|
|
target: communitiesModuleInst
|
|
function onImportingCommunityStateChanged(communityId, state, errorMsg) {
|
|
root.importingCommunityStateChanged(communityId, state, errorMsg)
|
|
}
|
|
}
|
|
}
|