Compare commits

..
1 Commits
Author SHA1 Message Date
vd df8e16128a Update README.md 2026-10-09 00:41:10 +00:00
14 changed files with 919 additions and 1025 deletions
+5 -13
View File
@@ -2,11 +2,12 @@
> [!NOTE] > [!NOTE]
> **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). [VDMDI provides a UDN server on VDPR infrastructure](https://udn.vdpr.org). CT is a messenger and task management application built for [UDN](https://vdpr.org/VDMDI/udn).
# Installation # Installation
CT is available as a PWA at [https://ct.vdpr.org](https://ct.vdpr.org). CT is available as a PWA at [https://ct.vdpr.org](https://ct.vdpr.org).
@@ -33,20 +34,11 @@ 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
- Other improvements - Layout improvements
+1 -1
View File
@@ -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 {
overflow-x: hidden; overflowx: hidden;
flex-direction: column; flex-direction: column;
justify-content: end; justify-content: end;
} }
+15 -59
View File
@@ -348,7 +348,7 @@
greeting: (name) => `Hi ${name}`, greeting: (name) => `Hi ${name}`,
/// ///
serverAddress: "Server address", serverAddress: "Server address",
serverAddressPlaceholder: "wss://udn.vdpr.org", serverAddressPlaceholder: "wss://udn-s1.onrender.com",
connectAudioLabel: "connect to server", connectAudioLabel: "connect to server",
disconnectAudioLabel: "disconnect from server", disconnectAudioLabel: "disconnect from server",
manageConnectionsAudioLabel: "manage connections", manageConnectionsAudioLabel: "manage connections",
@@ -385,9 +385,7 @@
}, },
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: {
@@ -474,7 +472,6 @@
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",
@@ -626,7 +623,7 @@
appName: "Coordination Tool", appName: "Coordination Tool",
greeting: (name) => `Hallo ${name}`, greeting: (name) => `Hallo ${name}`,
serverAddress: "Serveradresse", serverAddress: "Serveradresse",
serverAddressPlaceholder: "wss://udn.vdpr.org", serverAddressPlaceholder: "wss://udn-s1.onrender.com",
connectAudioLabel: "mit Server verbinden", connectAudioLabel: "mit Server verbinden",
disconnectAudioLabel: "vom Server trennen", disconnectAudioLabel: "vom Server trennen",
manageConnectionsAudioLabel: "Verbindungen verwalten", manageConnectionsAudioLabel: "Verbindungen verwalten",
@@ -662,9 +659,7 @@
}, },
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: {
@@ -745,14 +740,13 @@
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: "Generieren", randomizeKey: "Zuf\xE4llig 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?",
@@ -801,7 +795,7 @@
filterTasksButtonAudioLabel: "Aufgaben filtern", filterTasksButtonAudioLabel: "Aufgaben filtern",
createTaskButtonAudioLabel: "Neue Aufgabe erstellen", createTaskButtonAudioLabel: "Neue Aufgabe erstellen",
boardSettingsHeadline: "Board-Einstellungen", boardSettingsHeadline: "Board-Einstellungen",
boardNameInputLabel: "Name", boardNameInputLabel: "Boardname",
deleteBoardButton: "Board und alle Aufgaben l\xF6schen", deleteBoardButton: "Board und alle Aufgaben l\xF6schen",
taskSettingsHeadline: "Aufgabe bearbeiten", taskSettingsHeadline: "Aufgabe bearbeiten",
taskNameLabel: "Titel", taskNameLabel: "Titel",
@@ -884,7 +878,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.vdpr.org", serverAddressPlaceholder: "wss://udn-s1.onrender.com",
connectAudioLabel: "conectar al servidor", connectAudioLabel: "conectar al servidor",
disconnectAudioLabel: "desconectar del servidor", disconnectAudioLabel: "desconectar del servidor",
manageConnectionsAudioLabel: "gestionar conexiones", manageConnectionsAudioLabel: "gestionar conexiones",
@@ -920,9 +914,7 @@
}, },
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: {
@@ -1003,7 +995,6 @@
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",
@@ -1539,10 +1530,6 @@
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);
@@ -5163,7 +5150,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, fileTransferViewModel2) { constructor(coreViewModel2, chatModel, settingsViewModel2, notificationViewModel, connectionViewModel2, chatListViewModel2, contactListViewModel2) {
super("chat", coreViewModel2); super("chat", coreViewModel2);
this.coreViewModel = coreViewModel2; this.coreViewModel = coreViewModel2;
this.chatModel = chatModel; this.chatModel = chatModel;
@@ -5172,7 +5159,6 @@
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(
@@ -5205,9 +5191,6 @@
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(
@@ -5407,12 +5390,11 @@
// src/ViewModel/Chat/chatListViewModel.ts // src/ViewModel/Chat/chatListViewModel.ts
var ChatListViewModel = class { var ChatListViewModel = class {
// init // init
constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2, fileTransferViewModel2) { constructor(coreViewModel2, settingsViewModel2, connectionViewModel2, contactListViewModel2) {
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
@@ -5452,8 +5434,7 @@
this.notificationViewModel, this.notificationViewModel,
this.connectionViewModel, this.connectionViewModel,
this, this,
this.contactListViewModel, this.contactListViewModel
this.fileTransferViewModel
); );
}; };
this.updateIndices = () => { this.updateIndices = () => {
@@ -6750,15 +6731,7 @@
} }
); );
}; };
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( 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(
"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,
@@ -8005,23 +7978,7 @@
}, },
/* @__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("hr", null), /* @__PURE__ */ createElement( ), /* @__PURE__ */ createElement("button", { class: "standard", "on:click": coreViewModel2.checkUpdates }, coreViewModel2.translations.settings.about.checkUpdatesButton)));
"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(
@@ -9360,14 +9317,13 @@
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,
+1 -1
View File
@@ -280,7 +280,7 @@ SIZES
body { body {
/* gap */ /* gap */
--gap-between-tiles: 4px; --gap-between-tiles: 4px;
--gap-in-controls: 9px; --gap-in-controls: 7px;
--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
View File
@@ -1,4 +1,4 @@
const VERSION = "2610 Beta 25" const VERSION = "2610 Beta 22"
function processUrl(event) { function processUrl(event) {
const url = event.request.url; const url = event.request.url;
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

+1 -1
View File
@@ -1 +1 @@
2610 Beta 25 2610 Beta 22
+1 -9
View File
@@ -36,15 +36,7 @@ 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>
+1 -20
View File
@@ -154,26 +154,7 @@ function SettingsInfoPane(
coreViewModel.translations.settings.about coreViewModel.translations.settings.about
.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>
); );
+888 -900
View File
File diff suppressed because it is too large Load Diff
-3
View File
@@ -7,7 +7,6 @@ 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;
@@ -63,7 +62,6 @@ export default class ChatListViewModel {
this.connectionViewModel, this.connectionViewModel,
this, this,
this.contactListViewModel, this.contactListViewModel,
this.fileTransferViewModel
); );
}; };
@@ -101,7 +99,6 @@ 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,
-6
View File
@@ -22,7 +22,6 @@ 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;
@@ -82,10 +81,6 @@ 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(
@@ -156,7 +151,6 @@ 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);
-5
View File
@@ -153,11 +153,6 @@ 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,
+1 -2
View File
@@ -54,14 +54,13 @@ 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,