Compare commits
2
Commits
df8e16128a
...
fbbfbedcd7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fbbfbedcd7 | ||
|
|
651c9bd29d |
@@ -4,7 +4,7 @@
|
|||||||
> **LOCAL DEVELOPMENT**
|
> **LOCAL DEVELOPMENT**
|
||||||
> This repository is updated for public releases and announcements only.
|
> This repository is updated for public releases and announcements only.
|
||||||
|
|
||||||
CT is a messenger and task management application built for [UDN](https://vdpr.org/VDMDI/udn).
|
CT is a messenger and task management application built for [UDN](https://vdpr.org/VDMDI/udn). [VDMDI provides a UDN server on VDPR infrastructure](https://udn.vdpr.org).
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
@@ -33,11 +33,20 @@ To install, open this website and:
|
|||||||
|
|
||||||
## 2610 - Scheduled for October 11th, 2026: Initial Release
|
## 2610 - Scheduled for October 11th, 2026: Initial Release
|
||||||
This application is a rebrand of Comms, whose development started in July 2024. Changelogs or versioning have not been present initially and were never standardized. The CT repository is a fork of Comms. Changes made between the lastest iteration of Comms and CT 2610 include:
|
This application is a rebrand of Comms, whose development started in July 2024. Changelogs or versioning have not been present initially and were never standardized. The CT repository is a fork of Comms. Changes made between the lastest iteration of Comms and CT 2610 include:
|
||||||
- Account and chat identity
|
- Account and chat identity:
|
||||||
- Use a randomized UUID to identify users instead of manually entered names
|
- Use a randomized UUID to identify users instead of manually entered names
|
||||||
- Integrate a contacts model to keep track of who sent messages, and to reflect name changes
|
- Integrate a contacts model to keep track of who sent messages, and to reflect name changes
|
||||||
- Replace primary channels and namespaces with randomized UUIDs and chat names, sync chat settings (name, color, secondary channels)
|
- Replace primary channels and namespaces with randomized UUIDs and chat names, sync chat settings (name, color, secondary channels)
|
||||||
|
- Add a button to share chat access to the chat settings page
|
||||||
|
- Messaging:
|
||||||
|
- Add inline replies and message reactions
|
||||||
|
- Messages can be filtered based on reaction or content
|
||||||
|
- Task management and calendar:
|
||||||
|
- Implement pinch to zoom on kanban and grid view for better overview
|
||||||
|
- Highlight the next event in the calendar sidebar
|
||||||
|
- Improve handling of task filters
|
||||||
|
- Improve layout of tasks settings view
|
||||||
- UI improvements:
|
- UI improvements:
|
||||||
- Show how much storage is used and remaining in storage management view
|
- Show how much storage is used and remaining in storage management view
|
||||||
- Show data transfer progress
|
- Show data transfer progress
|
||||||
- Layout improvements
|
- Other improvements
|
||||||
|
|||||||
Vendored
+1
-1
@@ -445,7 +445,7 @@ body[showing-chat] #chat-page-wrapper {
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
#chat-page > div > #ribbon > span {
|
#chat-page > div > #ribbon > span {
|
||||||
overflowx: hidden;
|
overflow-x: hidden;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: end;
|
justify-content: end;
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+59
-15
@@ -348,7 +348,7 @@
|
|||||||
greeting: (name) => `Hi ${name}`,
|
greeting: (name) => `Hi ${name}`,
|
||||||
///
|
///
|
||||||
serverAddress: "Server address",
|
serverAddress: "Server address",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "connect to server",
|
connectAudioLabel: "connect to server",
|
||||||
disconnectAudioLabel: "disconnect from server",
|
disconnectAudioLabel: "disconnect from server",
|
||||||
manageConnectionsAudioLabel: "manage connections",
|
manageConnectionsAudioLabel: "manage connections",
|
||||||
@@ -385,7 +385,9 @@
|
|||||||
},
|
},
|
||||||
about: {
|
about: {
|
||||||
version: "Version",
|
version: "Version",
|
||||||
checkUpdatesButton: "Check for updates"
|
checkUpdatesButton: "Check for updates",
|
||||||
|
brand: "Developed by VDMDI",
|
||||||
|
brandDescription: "Code available on Viridian Public Resources (VDPR)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onboarding: {
|
onboarding: {
|
||||||
@@ -472,6 +474,7 @@
|
|||||||
settingsHeadline: "Settings",
|
settingsHeadline: "Settings",
|
||||||
nameLabel: "Chat name",
|
nameLabel: "Chat name",
|
||||||
setNameButtonAudioLabel: "set name",
|
setNameButtonAudioLabel: "set name",
|
||||||
|
transferLabel: "Share chat",
|
||||||
newSecondaryChannelPlaceholder: "Add secondary channel",
|
newSecondaryChannelPlaceholder: "Add secondary channel",
|
||||||
newSecondaryChannelAudioLabel: "name of new secondary channel",
|
newSecondaryChannelAudioLabel: "name of new secondary channel",
|
||||||
addSecondaryChannelButtonAudioLabel: "add secondary channel",
|
addSecondaryChannelButtonAudioLabel: "add secondary channel",
|
||||||
@@ -623,7 +626,7 @@
|
|||||||
appName: "Coordination Tool",
|
appName: "Coordination Tool",
|
||||||
greeting: (name) => `Hallo ${name}`,
|
greeting: (name) => `Hallo ${name}`,
|
||||||
serverAddress: "Serveradresse",
|
serverAddress: "Serveradresse",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "mit Server verbinden",
|
connectAudioLabel: "mit Server verbinden",
|
||||||
disconnectAudioLabel: "vom Server trennen",
|
disconnectAudioLabel: "vom Server trennen",
|
||||||
manageConnectionsAudioLabel: "Verbindungen verwalten",
|
manageConnectionsAudioLabel: "Verbindungen verwalten",
|
||||||
@@ -659,7 +662,9 @@
|
|||||||
},
|
},
|
||||||
about: {
|
about: {
|
||||||
version: "Version",
|
version: "Version",
|
||||||
checkUpdatesButton: "Nach Updates suchen"
|
checkUpdatesButton: "Nach Updates suchen",
|
||||||
|
brand: "Software von VDMDI",
|
||||||
|
brandDescription: "Code verf\xFCgbar auf Viridian Public Resources (VDPR)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onboarding: {
|
onboarding: {
|
||||||
@@ -740,13 +745,14 @@
|
|||||||
settingsHeadline: "Einstellungen",
|
settingsHeadline: "Einstellungen",
|
||||||
nameLabel: "Name",
|
nameLabel: "Name",
|
||||||
setNameButtonAudioLabel: "namen festlegen",
|
setNameButtonAudioLabel: "namen festlegen",
|
||||||
|
transferLabel: "Chat teilen",
|
||||||
newSecondaryChannelPlaceholder: "Sekund\xE4ren Kanal hinzuf\xFCgen",
|
newSecondaryChannelPlaceholder: "Sekund\xE4ren Kanal hinzuf\xFCgen",
|
||||||
newSecondaryChannelAudioLabel: "Name des neuen sekund\xE4ren Kanals",
|
newSecondaryChannelAudioLabel: "Name des neuen sekund\xE4ren Kanals",
|
||||||
addSecondaryChannelButtonAudioLabel: "Sekund\xE4ren Kanal hinzuf\xFCgen",
|
addSecondaryChannelButtonAudioLabel: "Sekund\xE4ren Kanal hinzuf\xFCgen",
|
||||||
encryptionKeyLabel: "Schl\xFCssel",
|
encryptionKeyLabel: "Schl\xFCssel",
|
||||||
setEncryptionKeyButtonAudioLabel: "Schl\xFCssel festlegen",
|
setEncryptionKeyButtonAudioLabel: "Schl\xFCssel festlegen",
|
||||||
showEncryptionKey: "Schl\xFCssel anzeigen",
|
showEncryptionKey: "Schl\xFCssel anzeigen",
|
||||||
randomizeKey: "Zuf\xE4llig generieren",
|
randomizeKey: "Generieren",
|
||||||
setColorButtonAudioLabel: "Farbe festlegen",
|
setColorButtonAudioLabel: "Farbe festlegen",
|
||||||
deleteChatButton: "Gesamten Chat l\xF6schen",
|
deleteChatButton: "Gesamten Chat l\xF6schen",
|
||||||
deleteChatHeadline: "Gesamten Chat l\xF6schen?",
|
deleteChatHeadline: "Gesamten Chat l\xF6schen?",
|
||||||
@@ -795,7 +801,7 @@
|
|||||||
filterTasksButtonAudioLabel: "Aufgaben filtern",
|
filterTasksButtonAudioLabel: "Aufgaben filtern",
|
||||||
createTaskButtonAudioLabel: "Neue Aufgabe erstellen",
|
createTaskButtonAudioLabel: "Neue Aufgabe erstellen",
|
||||||
boardSettingsHeadline: "Board-Einstellungen",
|
boardSettingsHeadline: "Board-Einstellungen",
|
||||||
boardNameInputLabel: "Boardname",
|
boardNameInputLabel: "Name",
|
||||||
deleteBoardButton: "Board und alle Aufgaben l\xF6schen",
|
deleteBoardButton: "Board und alle Aufgaben l\xF6schen",
|
||||||
taskSettingsHeadline: "Aufgabe bearbeiten",
|
taskSettingsHeadline: "Aufgabe bearbeiten",
|
||||||
taskNameLabel: "Titel",
|
taskNameLabel: "Titel",
|
||||||
@@ -878,7 +884,7 @@
|
|||||||
appName: "Coordination Tool",
|
appName: "Coordination Tool",
|
||||||
greeting: (name) => `Hola ${name}`,
|
greeting: (name) => `Hola ${name}`,
|
||||||
serverAddress: "Direcci\xF3n del servidor",
|
serverAddress: "Direcci\xF3n del servidor",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "conectar al servidor",
|
connectAudioLabel: "conectar al servidor",
|
||||||
disconnectAudioLabel: "desconectar del servidor",
|
disconnectAudioLabel: "desconectar del servidor",
|
||||||
manageConnectionsAudioLabel: "gestionar conexiones",
|
manageConnectionsAudioLabel: "gestionar conexiones",
|
||||||
@@ -914,7 +920,9 @@
|
|||||||
},
|
},
|
||||||
about: {
|
about: {
|
||||||
version: "Versi\xF3n",
|
version: "Versi\xF3n",
|
||||||
checkUpdatesButton: "Buscar actualisaciones"
|
checkUpdatesButton: "Buscar actualisaciones",
|
||||||
|
brand: "Software de VDMDI",
|
||||||
|
brandDescription: "Code desponible en Viridian Public Resources (VDPR)"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onboarding: {
|
onboarding: {
|
||||||
@@ -995,6 +1003,7 @@
|
|||||||
settingsHeadline: "Configuraci\xF3n",
|
settingsHeadline: "Configuraci\xF3n",
|
||||||
nameLabel: "Nombre del chat",
|
nameLabel: "Nombre del chat",
|
||||||
setNameButtonAudioLabel: "establecer nombre",
|
setNameButtonAudioLabel: "establecer nombre",
|
||||||
|
transferLabel: "Compartir chat",
|
||||||
newSecondaryChannelPlaceholder: "A\xF1adir canal secundario",
|
newSecondaryChannelPlaceholder: "A\xF1adir canal secundario",
|
||||||
newSecondaryChannelAudioLabel: "nombre del nuevo canal secundario",
|
newSecondaryChannelAudioLabel: "nombre del nuevo canal secundario",
|
||||||
addSecondaryChannelButtonAudioLabel: "a\xF1adir canal secundario",
|
addSecondaryChannelButtonAudioLabel: "a\xF1adir canal secundario",
|
||||||
@@ -1530,6 +1539,10 @@
|
|||||||
window.location.reload();
|
window.location.reload();
|
||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
|
// VDPR
|
||||||
|
this.openVDPR = () => {
|
||||||
|
window.open("https://vdpr.org/VDMDI/CT");
|
||||||
|
};
|
||||||
this.translations = allTranslations[settingsModel2.language] || allTranslations.en;
|
this.translations = allTranslations[settingsModel2.language] || allTranslations.en;
|
||||||
this.latestVersion.subscribe((latestVersion) => {
|
this.latestVersion.subscribe((latestVersion) => {
|
||||||
this.updateText.value = this.translations.homePage.updateButton(latestVersion);
|
this.updateText.value = this.translations.homePage.updateButton(latestVersion);
|
||||||
@@ -5150,7 +5163,7 @@
|
|||||||
// src/ViewModel/Chat/chatViewModel.ts
|
// src/ViewModel/Chat/chatViewModel.ts
|
||||||
var ChatViewModel6 = class extends ContextHost {
|
var ChatViewModel6 = class extends ContextHost {
|
||||||
// init
|
// init
|
||||||
constructor(coreViewModel2, chatModel, settingsViewModel2, notificationViewModel, connectionViewModel2, chatListViewModel2, contactListViewModel2) {
|
constructor(coreViewModel2, chatModel, settingsViewModel2, notificationViewModel, connectionViewModel2, chatListViewModel2, contactListViewModel2, fileTransferViewModel2) {
|
||||||
super("chat", coreViewModel2);
|
super("chat", coreViewModel2);
|
||||||
this.coreViewModel = coreViewModel2;
|
this.coreViewModel = coreViewModel2;
|
||||||
this.chatModel = chatModel;
|
this.chatModel = chatModel;
|
||||||
@@ -5159,6 +5172,7 @@
|
|||||||
this.connectionViewModel = connectionViewModel2;
|
this.connectionViewModel = connectionViewModel2;
|
||||||
this.chatListViewModel = chatListViewModel2;
|
this.chatListViewModel = chatListViewModel2;
|
||||||
this.contactListViewModel = contactListViewModel2;
|
this.contactListViewModel = contactListViewModel2;
|
||||||
|
this.fileTransferViewModel = fileTransferViewModel2;
|
||||||
// state
|
// state
|
||||||
this.displayedColor = new State("standard" /* Standard */);
|
this.displayedColor = new State("standard" /* Standard */);
|
||||||
this.selectedPage = new State(
|
this.selectedPage = new State(
|
||||||
@@ -5191,6 +5205,9 @@
|
|||||||
const index = this.chatListViewModel.chatIndexManager.getIndex(this);
|
const index = this.chatListViewModel.chatIndexManager.getIndex(this);
|
||||||
this.index.value = index;
|
this.index.value = index;
|
||||||
};
|
};
|
||||||
|
this.share = () => {
|
||||||
|
this.fileTransferViewModel.showDirectionSelectionModal();
|
||||||
|
};
|
||||||
// load
|
// load
|
||||||
this.loadPageSelection = () => {
|
this.loadPageSelection = () => {
|
||||||
const path = StorageModel.getPath(
|
const path = StorageModel.getPath(
|
||||||
@@ -5390,11 +5407,12 @@
|
|||||||
// src/ViewModel/Chat/chatListViewModel.ts
|
// src/ViewModel/Chat/chatListViewModel.ts
|
||||||
var ChatListViewModel = class {
|
var ChatListViewModel = class {
|
||||||
// init
|
// init
|
||||||
constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2) {
|
constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2, fileTransferViewModel2) {
|
||||||
this.coreViewModel = coreViewModel2;
|
this.coreViewModel = coreViewModel2;
|
||||||
this.settingsViewModel = settingsViewModel2;
|
this.settingsViewModel = settingsViewModel2;
|
||||||
this.connectionViewModel = connectionViewModel2;
|
this.connectionViewModel = connectionViewModel2;
|
||||||
this.contactListViewModel = contactListViewModel2;
|
this.contactListViewModel = contactListViewModel2;
|
||||||
|
this.fileTransferViewModel = fileTransferViewModel2;
|
||||||
// data
|
// data
|
||||||
this.chatIndexManager = new IndexManager(
|
this.chatIndexManager = new IndexManager(
|
||||||
(chatViewModel) => chatViewModel.settingsPageViewModel.name.value
|
(chatViewModel) => chatViewModel.settingsPageViewModel.name.value
|
||||||
@@ -5434,7 +5452,8 @@
|
|||||||
this.notificationViewModel,
|
this.notificationViewModel,
|
||||||
this.connectionViewModel,
|
this.connectionViewModel,
|
||||||
this,
|
this,
|
||||||
this.contactListViewModel
|
this.contactListViewModel,
|
||||||
|
this.fileTransferViewModel
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
this.updateIndices = () => {
|
this.updateIndices = () => {
|
||||||
@@ -6731,7 +6750,15 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
return /* @__PURE__ */ createElement("div", { id: "settings-page" }, /* @__PURE__ */ createElement("div", { class: "pane-wrapper" }, /* @__PURE__ */ createElement("div", { class: "pane" }, /* @__PURE__ */ createElement("div", { class: "toolbar" }, /* @__PURE__ */ createElement("span", { class: "title" }, coreViewModel2.translations.chatPage.settings.settingsHeadline)), /* @__PURE__ */ createElement("div", { class: "content" }, /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "forum"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.nameLabel), /* @__PURE__ */ createElement(
|
return /* @__PURE__ */ createElement("div", { id: "settings-page" }, /* @__PURE__ */ createElement("div", { class: "pane-wrapper" }, /* @__PURE__ */ createElement("div", { class: "pane" }, /* @__PURE__ */ createElement("div", { class: "toolbar" }, /* @__PURE__ */ createElement("span", { class: "title" }, coreViewModel2.translations.chatPage.settings.settingsHeadline)), /* @__PURE__ */ createElement("div", { class: "content" }, /* @__PURE__ */ createElement(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "standard width-input",
|
||||||
|
"on:click": settingsPageViewModel.chatViewModel.share
|
||||||
|
},
|
||||||
|
/* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.transferLabel),
|
||||||
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "share")
|
||||||
|
), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("label", { class: "tile flex-no" }, /* @__PURE__ */ createElement("span", { class: "icon" }, "forum"), /* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("span", null, coreViewModel2.translations.chatPage.settings.nameLabel), /* @__PURE__ */ createElement(
|
||||||
"input",
|
"input",
|
||||||
{
|
{
|
||||||
"bind:value": settingsPageViewModel.nameInput,
|
"bind:value": settingsPageViewModel.nameInput,
|
||||||
@@ -7978,7 +8005,23 @@
|
|||||||
},
|
},
|
||||||
/* @__PURE__ */ createElement("span", { "subscribe:innerText": coreViewModel2.updateText }),
|
/* @__PURE__ */ createElement("span", { "subscribe:innerText": coreViewModel2.updateText }),
|
||||||
/* @__PURE__ */ createElement("span", { class: "icon" }, "update")
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "update")
|
||||||
), /* @__PURE__ */ createElement("button", { class: "standard", "on:click": coreViewModel2.checkUpdates }, coreViewModel2.translations.settings.about.checkUpdatesButton)));
|
), /* @__PURE__ */ createElement("button", { class: "standard", "on:click": coreViewModel2.checkUpdates }, coreViewModel2.translations.settings.about.checkUpdatesButton), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement(
|
||||||
|
"img",
|
||||||
|
{
|
||||||
|
class: "width-100",
|
||||||
|
style: "max-width: 256px",
|
||||||
|
src: "/vdmdi-logo.png"
|
||||||
|
}
|
||||||
|
), /* @__PURE__ */ createElement(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "tile flex-row",
|
||||||
|
"on:click": coreViewModel2.openVDPR
|
||||||
|
},
|
||||||
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "code"),
|
||||||
|
/* @__PURE__ */ createElement("div", null, /* @__PURE__ */ createElement("b", null, coreViewModel2.translations.settings.about.brand), /* @__PURE__ */ createElement("span", { class: "secondary" }, coreViewModel2.translations.settings.about.brandDescription)),
|
||||||
|
/* @__PURE__ */ createElement("span", { class: "icon" }, "open_in_new")
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
function SettingsRegionalPane(coreViewModel2, settingsViewModel2) {
|
function SettingsRegionalPane(coreViewModel2, settingsViewModel2) {
|
||||||
return /* @__PURE__ */ createElement("div", { class: "slide-up" }, /* @__PURE__ */ createElement("h2", null, coreViewModel2.translations.settings.pages.regional), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.regional.language), OptionButtonList(
|
return /* @__PURE__ */ createElement("div", { class: "slide-up" }, /* @__PURE__ */ createElement("h2", null, coreViewModel2.translations.settings.pages.regional), /* @__PURE__ */ createElement("hr", null), /* @__PURE__ */ createElement("h3", null, coreViewModel2.translations.settings.regional.language), OptionButtonList(
|
||||||
@@ -9317,13 +9360,14 @@
|
|||||||
settingsViewModel
|
settingsViewModel
|
||||||
);
|
);
|
||||||
var connectionViewModel = new ConnectionViewModel(coreViewModel);
|
var connectionViewModel = new ConnectionViewModel(coreViewModel);
|
||||||
|
var fileTransferViewModel = new FileTransferViewModel(coreViewModel);
|
||||||
var chatListViewModel = new ChatListViewModel(
|
var chatListViewModel = new ChatListViewModel(
|
||||||
coreViewModel,
|
coreViewModel,
|
||||||
settingsViewModel,
|
settingsViewModel,
|
||||||
connectionViewModel,
|
connectionViewModel,
|
||||||
contactListViewModel
|
contactListViewModel,
|
||||||
|
fileTransferViewModel
|
||||||
);
|
);
|
||||||
var fileTransferViewModel = new FileTransferViewModel(coreViewModel);
|
|
||||||
var onboardingViewModel = new OnboardingViewModel(
|
var onboardingViewModel = new OnboardingViewModel(
|
||||||
connectionViewModel,
|
connectionViewModel,
|
||||||
fileTransferViewModel,
|
fileTransferViewModel,
|
||||||
|
|||||||
Vendored
+1
-1
@@ -280,7 +280,7 @@ SIZES
|
|||||||
body {
|
body {
|
||||||
/* gap */
|
/* gap */
|
||||||
--gap-between-tiles: 4px;
|
--gap-between-tiles: 4px;
|
||||||
--gap-in-controls: 7px;
|
--gap-in-controls: 9px;
|
||||||
--gap-in-tab-links: 1rem;
|
--gap-in-tab-links: 1rem;
|
||||||
--text-gap: 1.2rem;
|
--text-gap: 1.2rem;
|
||||||
--large-gap: 2rem;
|
--large-gap: 2rem;
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
const VERSION = "2610 Beta 22"
|
const VERSION = "2610 Beta 25"
|
||||||
|
|
||||||
function processUrl(event) {
|
function processUrl(event) {
|
||||||
const url = event.request.url;
|
const url = event.request.url;
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
2610 Beta 22
|
2610 Beta 25
|
||||||
|
|||||||
@@ -37,6 +37,14 @@ export function SettingsPage(
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
<button
|
||||||
|
class="standard width-input"
|
||||||
|
on:click={settingsPageViewModel.chatViewModel.share}
|
||||||
|
>
|
||||||
|
<span>{coreViewModel.translations.chatPage.settings.transferLabel}</span>
|
||||||
|
<span class="icon">share</span>
|
||||||
|
</button>
|
||||||
|
<hr></hr>
|
||||||
<label class="tile flex-no">
|
<label class="tile flex-no">
|
||||||
<span class="icon">forum</span>
|
<span class="icon">forum</span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -155,6 +155,25 @@ function SettingsInfoPane(
|
|||||||
.checkUpdatesButton
|
.checkUpdatesButton
|
||||||
}
|
}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<hr></hr>
|
||||||
|
|
||||||
|
<img
|
||||||
|
class="width-100"
|
||||||
|
style="max-width: 256px"
|
||||||
|
src="/vdmdi-logo.png">
|
||||||
|
</img>
|
||||||
|
<button
|
||||||
|
class="tile flex-row"
|
||||||
|
on:click={coreViewModel.openVDPR}
|
||||||
|
>
|
||||||
|
<span class="icon">code</span>
|
||||||
|
<div>
|
||||||
|
<b>{coreViewModel.translations.settings.about.brand}</b>
|
||||||
|
<span class="secondary">{coreViewModel.translations.settings.about.brandDescription}</span>
|
||||||
|
</div>
|
||||||
|
<span class="icon">open_in_new</span>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const englishTranslations = {
|
|||||||
///
|
///
|
||||||
|
|
||||||
serverAddress: "Server address",
|
serverAddress: "Server address",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "connect to server",
|
connectAudioLabel: "connect to server",
|
||||||
disconnectAudioLabel: "disconnect from server",
|
disconnectAudioLabel: "disconnect from server",
|
||||||
manageConnectionsAudioLabel: "manage connections",
|
manageConnectionsAudioLabel: "manage connections",
|
||||||
@@ -104,6 +104,8 @@ const englishTranslations = {
|
|||||||
about: {
|
about: {
|
||||||
version: "Version",
|
version: "Version",
|
||||||
checkUpdatesButton: "Check for updates",
|
checkUpdatesButton: "Check for updates",
|
||||||
|
brand: "Developed by VDMDI",
|
||||||
|
brandDescription: "Code available on Viridian Public Resources (VDPR)"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -232,6 +234,8 @@ const englishTranslations = {
|
|||||||
nameLabel: "Chat name",
|
nameLabel: "Chat name",
|
||||||
setNameButtonAudioLabel: "set name",
|
setNameButtonAudioLabel: "set name",
|
||||||
|
|
||||||
|
transferLabel: "Share chat",
|
||||||
|
|
||||||
newSecondaryChannelPlaceholder: "Add secondary channel",
|
newSecondaryChannelPlaceholder: "Add secondary channel",
|
||||||
newSecondaryChannelAudioLabel: "name of new secondary channel",
|
newSecondaryChannelAudioLabel: "name of new secondary channel",
|
||||||
addSecondaryChannelButtonAudioLabel: "add secondary channel",
|
addSecondaryChannelButtonAudioLabel: "add secondary channel",
|
||||||
@@ -446,7 +450,7 @@ export const allTranslations: {
|
|||||||
greeting: (name: string) => `Hallo ${name}`,
|
greeting: (name: string) => `Hallo ${name}`,
|
||||||
|
|
||||||
serverAddress: "Serveradresse",
|
serverAddress: "Serveradresse",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "mit Server verbinden",
|
connectAudioLabel: "mit Server verbinden",
|
||||||
disconnectAudioLabel: "vom Server trennen",
|
disconnectAudioLabel: "vom Server trennen",
|
||||||
manageConnectionsAudioLabel: "Verbindungen verwalten",
|
manageConnectionsAudioLabel: "Verbindungen verwalten",
|
||||||
@@ -487,6 +491,8 @@ export const allTranslations: {
|
|||||||
about: {
|
about: {
|
||||||
version: "Version",
|
version: "Version",
|
||||||
checkUpdatesButton: "Nach Updates suchen",
|
checkUpdatesButton: "Nach Updates suchen",
|
||||||
|
brand: "Software von VDMDI",
|
||||||
|
brandDescription: "Code verfügbar auf Viridian Public Resources (VDPR)"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -607,6 +613,8 @@ export const allTranslations: {
|
|||||||
nameLabel: "Name",
|
nameLabel: "Name",
|
||||||
setNameButtonAudioLabel: "namen festlegen",
|
setNameButtonAudioLabel: "namen festlegen",
|
||||||
|
|
||||||
|
transferLabel: "Chat teilen",
|
||||||
|
|
||||||
newSecondaryChannelPlaceholder: "Sekundären Kanal hinzufügen",
|
newSecondaryChannelPlaceholder: "Sekundären Kanal hinzufügen",
|
||||||
newSecondaryChannelAudioLabel:
|
newSecondaryChannelAudioLabel:
|
||||||
"Name des neuen sekundären Kanals",
|
"Name des neuen sekundären Kanals",
|
||||||
@@ -616,7 +624,7 @@ export const allTranslations: {
|
|||||||
encryptionKeyLabel: "Schlüssel",
|
encryptionKeyLabel: "Schlüssel",
|
||||||
setEncryptionKeyButtonAudioLabel: "Schlüssel festlegen",
|
setEncryptionKeyButtonAudioLabel: "Schlüssel festlegen",
|
||||||
showEncryptionKey: "Schlüssel anzeigen",
|
showEncryptionKey: "Schlüssel anzeigen",
|
||||||
randomizeKey: "Zufällig generieren",
|
randomizeKey: "Generieren",
|
||||||
|
|
||||||
setColorButtonAudioLabel: "Farbe festlegen",
|
setColorButtonAudioLabel: "Farbe festlegen",
|
||||||
|
|
||||||
@@ -685,7 +693,7 @@ export const allTranslations: {
|
|||||||
createTaskButtonAudioLabel: "Neue Aufgabe erstellen",
|
createTaskButtonAudioLabel: "Neue Aufgabe erstellen",
|
||||||
|
|
||||||
boardSettingsHeadline: "Board-Einstellungen",
|
boardSettingsHeadline: "Board-Einstellungen",
|
||||||
boardNameInputLabel: "Boardname",
|
boardNameInputLabel: "Name",
|
||||||
deleteBoardButton: "Board und alle Aufgaben löschen",
|
deleteBoardButton: "Board und alle Aufgaben löschen",
|
||||||
|
|
||||||
taskSettingsHeadline: "Aufgabe bearbeiten",
|
taskSettingsHeadline: "Aufgabe bearbeiten",
|
||||||
@@ -796,7 +804,7 @@ export const allTranslations: {
|
|||||||
greeting: (name: string) => `Hola ${name}`,
|
greeting: (name: string) => `Hola ${name}`,
|
||||||
|
|
||||||
serverAddress: "Dirección del servidor",
|
serverAddress: "Dirección del servidor",
|
||||||
serverAddressPlaceholder: "wss://udn-s1.onrender.com",
|
serverAddressPlaceholder: "wss://udn.vdpr.org",
|
||||||
connectAudioLabel: "conectar al servidor",
|
connectAudioLabel: "conectar al servidor",
|
||||||
disconnectAudioLabel: "desconectar del servidor",
|
disconnectAudioLabel: "desconectar del servidor",
|
||||||
manageConnectionsAudioLabel: "gestionar conexiones",
|
manageConnectionsAudioLabel: "gestionar conexiones",
|
||||||
@@ -837,6 +845,8 @@ export const allTranslations: {
|
|||||||
about: {
|
about: {
|
||||||
version: "Versión",
|
version: "Versión",
|
||||||
checkUpdatesButton: "Buscar actualisaciones",
|
checkUpdatesButton: "Buscar actualisaciones",
|
||||||
|
brand: "Software de VDMDI",
|
||||||
|
brandDescription: "Code desponible en Viridian Public Resources (VDPR)"
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -957,6 +967,8 @@ export const allTranslations: {
|
|||||||
nameLabel: "Nombre del chat",
|
nameLabel: "Nombre del chat",
|
||||||
setNameButtonAudioLabel: "establecer nombre",
|
setNameButtonAudioLabel: "establecer nombre",
|
||||||
|
|
||||||
|
transferLabel: "Compartir chat",
|
||||||
|
|
||||||
newSecondaryChannelPlaceholder: "Añadir canal secundario",
|
newSecondaryChannelPlaceholder: "Añadir canal secundario",
|
||||||
newSecondaryChannelAudioLabel:
|
newSecondaryChannelAudioLabel:
|
||||||
"nombre del nuevo canal secundario",
|
"nombre del nuevo canal secundario",
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import ConnectionViewModel from "../Global/connectionViewModel";
|
|||||||
import * as React from "../../react";
|
import * as React from "../../react";
|
||||||
import implementFilter, { IndexManager } from "../../Model/Utility/utility";
|
import implementFilter, { IndexManager } from "../../Model/Utility/utility";
|
||||||
import ChatModel from "../../Model/Chat/chatModel";
|
import ChatModel from "../../Model/Chat/chatModel";
|
||||||
|
import FileTransferViewModel from "../Global/fileTransferViewModel";
|
||||||
|
|
||||||
export default class ChatListViewModel {
|
export default class ChatListViewModel {
|
||||||
notificationViewModel: NotificationViewModel;
|
notificationViewModel: NotificationViewModel;
|
||||||
@@ -62,6 +63,7 @@ export default class ChatListViewModel {
|
|||||||
this.connectionViewModel,
|
this.connectionViewModel,
|
||||||
this,
|
this,
|
||||||
this.contactListViewModel,
|
this.contactListViewModel,
|
||||||
|
this.fileTransferViewModel
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -99,6 +101,7 @@ export default class ChatListViewModel {
|
|||||||
public readonly settingsViewModel: SettingsViewModel,
|
public readonly settingsViewModel: SettingsViewModel,
|
||||||
public readonly connectionViewModel: ConnectionViewModel,
|
public readonly connectionViewModel: ConnectionViewModel,
|
||||||
public readonly contactListViewModel: ContactListViewModel,
|
public readonly contactListViewModel: ContactListViewModel,
|
||||||
|
public readonly fileTransferViewModel: FileTransferViewModel,
|
||||||
) {
|
) {
|
||||||
this.notificationViewModel = new NotificationViewModel(
|
this.notificationViewModel = new NotificationViewModel(
|
||||||
this,
|
this,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import ChatModel, {
|
|||||||
ChatMessage,
|
ChatMessage,
|
||||||
ChatMessageReaction,
|
ChatMessageReaction,
|
||||||
} from "../../Model/Chat/chatModel";
|
} from "../../Model/Chat/chatModel";
|
||||||
|
import FileTransferViewModel from "../Global/fileTransferViewModel";
|
||||||
|
|
||||||
export default class ChatViewModel extends ContextHost<ChatPageTypes> {
|
export default class ChatViewModel extends ContextHost<ChatPageTypes> {
|
||||||
calendarViewModel: CalendarPageViewModel;
|
calendarViewModel: CalendarPageViewModel;
|
||||||
@@ -81,6 +82,10 @@ export default class ChatViewModel extends ContextHost<ChatPageTypes> {
|
|||||||
this.index.value = index;
|
this.index.value = index;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
share = (): void => {
|
||||||
|
this.fileTransferViewModel.showDirectionSelectionModal();
|
||||||
|
}
|
||||||
|
|
||||||
// load
|
// load
|
||||||
loadPageSelection = (): void => {
|
loadPageSelection = (): void => {
|
||||||
const path: string[] = StorageModel.getPath(
|
const path: string[] = StorageModel.getPath(
|
||||||
@@ -151,6 +156,7 @@ export default class ChatViewModel extends ContextHost<ChatPageTypes> {
|
|||||||
public readonly connectionViewModel: ConnectionViewModel,
|
public readonly connectionViewModel: ConnectionViewModel,
|
||||||
public readonly chatListViewModel: ChatListViewModel,
|
public readonly chatListViewModel: ChatListViewModel,
|
||||||
public readonly contactListViewModel: ContactListViewModel,
|
public readonly contactListViewModel: ContactListViewModel,
|
||||||
|
public readonly fileTransferViewModel: FileTransferViewModel,
|
||||||
) {
|
) {
|
||||||
super("chat", coreViewModel);
|
super("chat", coreViewModel);
|
||||||
|
|
||||||
|
|||||||
@@ -153,6 +153,11 @@ export default class CoreViewModel {
|
|||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// VDPR
|
||||||
|
openVDPR = (): void => {
|
||||||
|
window.open("https://vdpr.org/VDMDI/CT");
|
||||||
|
}
|
||||||
|
|
||||||
// init
|
// init
|
||||||
constructor(
|
constructor(
|
||||||
public readonly storageModel: StorageModel,
|
public readonly storageModel: StorageModel,
|
||||||
|
|||||||
+2
-1
@@ -54,13 +54,14 @@ const contactListViewModel = new ContactListViewModel(
|
|||||||
settingsViewModel,
|
settingsViewModel,
|
||||||
);
|
);
|
||||||
const connectionViewModel = new ConnectionViewModel(coreViewModel);
|
const connectionViewModel = new ConnectionViewModel(coreViewModel);
|
||||||
|
const fileTransferViewModel = new FileTransferViewModel(coreViewModel);
|
||||||
const chatListViewModel = new ChatListViewModel(
|
const chatListViewModel = new ChatListViewModel(
|
||||||
coreViewModel,
|
coreViewModel,
|
||||||
settingsViewModel,
|
settingsViewModel,
|
||||||
connectionViewModel,
|
connectionViewModel,
|
||||||
contactListViewModel,
|
contactListViewModel,
|
||||||
|
fileTransferViewModel
|
||||||
);
|
);
|
||||||
const fileTransferViewModel = new FileTransferViewModel(coreViewModel);
|
|
||||||
const onboardingViewModel = new OnboardingViewModel(
|
const onboardingViewModel = new OnboardingViewModel(
|
||||||
connectionViewModel,
|
connectionViewModel,
|
||||||
fileTransferViewModel,
|
fileTransferViewModel,
|
||||||
|
|||||||
Reference in New Issue
Block a user