briar issueshttps://code.briarproject.org/groups/briar/-/issues2021-12-06T14:25:34Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/69Ability to send messages in private chats2021-12-06T14:25:34ZMikolai GütschowAbility to send messages in private chatsDesktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/95Implement view model for private chat view2021-12-06T14:25:10ZMikolai GütschowImplement view model for private chat viewDesktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/90Move Briar API calls from @Composables to view models2021-12-06T14:25:10ZMikolai GütschowMove Briar API calls from @Composables to view modelsAs soon as no calls are left, we can remove the `CompositionLocalProvider` and (most of) the `*Manager` injections in `BriarUi`.
This is a follow up of !30 and #78 .As soon as no calls are left, we can remove the `CompositionLocalProvider` and (most of) the `*Manager` injections in `BriarUi`.
This is a follow up of !30 and #78 .Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/68Update UI to reflect state changes in Briar2021-12-06T14:25:34ZMikolai GütschowUpdate UI to reflect state changes in Briar- when new message arrives / is sent
- when new contact is added
- when contact goes online / offline
Depends on #49
Related to #33- when new message arrives / is sent
- when new contact is added
- when contact goes online / offline
Depends on #49
Related to #33Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/77Make it possible to run multiple versions of briar-desktop concurrently2021-12-06T14:25:33ZSebastianMake it possible to run multiple versions of briar-desktop concurrentlyFor interactive testing it is extremely useful to be able to start multiple UIs simultaneously and interact with them. A separate data directory can be specified already, the only thing preventing this is the hardcoded tor port (no two a...For interactive testing it is extremely useful to be able to start multiple UIs simultaneously and interact with them. A separate data directory can be specified already, the only thing preventing this is the hardcoded tor port (no two apps can listen on the same port). Let's see if we can make the Tor port configurable in upstream briar. I already solved this for [briar-swing here](https://code.briarproject.org/sebkur/briar-swing/-/commit/baa4d22d4011ee9b570301435a71d266ebcf11ab). It could be done that way, or a bit differently, but I think making the tor port configurable is something useful.Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/61Set up internationalization framework2021-12-06T14:25:34ZNicoSet up internationalization frameworkIt seems like there is no direct support for translations in Compose for Desktop: [JetBrains/compose-jb#425](https://github.com/JetBrains/compose-jb/issues/425)
Jetpack Compose on Android uses the already known _strings.xml_, but this d...It seems like there is no direct support for translations in Compose for Desktop: [JetBrains/compose-jb#425](https://github.com/JetBrains/compose-jb/issues/425)
Jetpack Compose on Android uses the already known _strings.xml_, but this doesn't work on the desktop.
In that issue they mentioned the following framework that allows using resources across various platforms: [icerockdev/moko-resources](https://github.com/icerockdev/moko-resources)
Once set up, we should import the translations from Briar GTK: https://code.briarproject.org/briar/briar-desktop/-/issues/4Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/62Set up translation project on Transifex2021-12-06T14:25:33ZNicoSet up translation project on TransifexOnce Briar Desktop is allowing localization (https://code.briarproject.org/briar/briar-desktop/-/issues/61) and we got a fair amount of strings to translate, we should configure Transifex to allow our translators to start their work. Whe...Once Briar Desktop is allowing localization (https://code.briarproject.org/briar/briar-desktop/-/issues/61) and we got a fair amount of strings to translate, we should configure Transifex to allow our translators to start their work. When doing so, we need to watch out that we re-use as much strings as possible from Briar GTK (https://code.briarproject.org/briar/briar-desktop/-/issues/4).Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/108Mark new messages as read and show proper unread counter in contact list2021-12-06T14:25:09ZMikolai GütschowMark new messages as read and show proper unread counter in contact listCurrently, all incoming messages are unread by default and never set to read. Therefore, unread count is always bigger than zero and the small (blue) dot is correspondingly shown in the contact list. We could also show the number of unre...Currently, all incoming messages are unread by default and never set to read. Therefore, unread count is always bigger than zero and the small (blue) dot is correspondingly shown in the contact list. We could also show the number of unread messages inside the blue circle similar to the way the Android app does it.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/101Show alias like in Android2021-12-06T14:25:10ZNicoShow alias like in AndroidIf an alias exists for a contact, Android shows the contact's name as "alias (author name)". In case there's no alias, it just shows "author name" where author name is the name chosen by the contact itself at registration.If an alias exists for a contact, Android shows the contact's name as "alias (author name)". In case there's no alias, it just shows "author name" where author name is the name chosen by the contact itself at registration.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/102Include alias in contact list filtering2021-12-06T14:25:10ZNicoInclude alias in contact list filteringRelated to #101. Follow-up to https://code.briarproject.org/briar/briar-desktop/-/merge_requests/33.Related to #101. Follow-up to https://code.briarproject.org/briar/briar-desktop/-/merge_requests/33.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/99Avoid passing individual view models around2022-01-07T21:51:07ZMikolai GütschowAvoid passing individual view models aroundFor now, all view models are injected by Dagger at the start of the application in the top composable and then passed to the individual composable functions that actually need it. This has several disadvantages:
- the composables further...For now, all view models are injected by Dagger at the start of the application in the top composable and then passed to the individual composable functions that actually need it. This has several disadvantages:
- the composables further up the tree have a lot of view models as parameters that are just passed down to other composables that actually need it. Also, adding a new view model adds a new function parameter to all composables up to the root resulting in a lot of unnecessary changes.
- all view models are initialized when the application starts and also start to listen for events, even if the respective screen is not shown (yet)
- there can always only be a single instance of a certain view model (unless we initialize two or more of them in the top composable). That would forbid us to support displaying several chats at the same time in separate windows (the Pidgin (?) way of doing things). That one might not be a big deal, though.
I would propose the following:
- implement a `ViewModelProvider` similar to the one available in Android that could either hold all view models from the application start on (not resolving the third point) or instantiating them on demand
- have a base `ViewModel` class/interface that provides the methods `onInit()` and `onCleared()` where such things as adding/removing the view model from the `eventBus` can be done
- adopt the convention of only instantiating view models within composables called `Screen` (e.g. `MainScreen` for the view model handling the global state, `PrivateMessageScreen` for the contact list view model) and always provide a second composable with the same name that takes the view model as a parameter (allowing for easier testability). The view model should always be instantiated as down in the UI tree as possible and as up in the tree as necessary. `Screen`s could be seen as analog to `Fragment` or `Activity` in the Android world.
- implement a helper composable function called `Screen` that takes a view model class name and does the repetitive process of obtaining the view model from the provider, call `onInit()` and `onCleared()` when appropiate (the compose `DisposableEffect` will come to handy here). Additionally, `Screen` would take a composable function where the view model is available (similar to the `ApplicationScope` that exposes `exitApplication` and is available after `runApplication`).
As a rough sketch, the usage might then look like the following:
```kotlin
@Composable
fun PrivateMessageScreen() = Screen(ContactListViewModel::class) {
PrivateMessageScreen(viewModel)
}
@Composable
fun PrivateMessageScreen(viewModel: ContactListViewModel) {
// actual content using the viewModel
}
```Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/104Make logging configurable2021-12-06T14:25:09ZSebastianMake logging configurableRelated to #80Related to #80Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/106Hitting Send on whitespace-only message clears the input2021-12-06T14:25:08ZSebastianHitting Send on whitespace-only message clears the inputDesktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/18Setup Transifex configuration2021-12-06T14:25:48ZNicoSetup Transifex configurationDesktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/44Support colorful Emojis 🤯️2023-01-09T21:29:50ZMikolai GütschowSupport colorful Emojis 🤯️Currently, only the black-and-white emojis are displayed (at least on Linux) and flags are only displayed as letters:
![image](/uploads/c2c6717f371fddab18d61f7d03f1395f/image.png)Currently, only the black-and-white emojis are displayed (at least on Linux) and flags are only displayed as letters:
![image](/uploads/c2c6717f371fddab18d61f7d03f1395f/image.png)Desktop 1.0.0https://code.briarproject.org/briar/briar-desktop/-/issues/49Basic Software Architecture2022-04-03T10:36:50ZMikolai GütschowBasic Software Architecture- decide on design pattern fitting to the UDF idea of Compose (interesting reads: https://proandroiddev.com/architecture-in-jetpack-compose-mvp-mvvm-mvi-17d8170a13fd, https://www.ericthecoder.com/2020/07/20/battle-of-the-android-architec...- decide on design pattern fitting to the UDF idea of Compose (interesting reads: https://proandroiddev.com/architecture-in-jetpack-compose-mvp-mvvm-mvi-17d8170a13fd, https://www.ericthecoder.com/2020/07/20/battle-of-the-android-architectures-mvp-vs-mvvm-vs-mvi/)
- decide on use of other third-party libraries to support design (e.g. Decompose, #25)
- restructure "root" function calls in `BriarService`
- (maybe) take later portability of parts of the code to Android/other platforms into accountMikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/43Milestone planning2021-12-06T14:25:33ZMikolai GütschowMilestone planningWhat was started by @sebkur in !19 is now available in the wiki:
https://code.briarproject.org/briar/briar-desktop/-/wikis/MilestonesWhat was started by @sebkur in !19 is now available in the wiki:
https://code.briarproject.org/briar/briar-desktop/-/wikis/MilestonesDesktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/41Investigate Bluetooth for desktop systems2022-10-31T17:07:58ZMikolai GütschowInvestigate Bluetooth for desktop systemshttps://code.briarproject.org/briar/briar-desktop/-/issues/39Use enum instead of string for `uiMode`2021-12-06T14:25:49ZMikolai GütschowUse enum instead of string for `uiMode`See https://code.briarproject.org/briar/briar-desktop/-/merge_requests/5#note_53372See https://code.briarproject.org/briar/briar-desktop/-/merge_requests/5#note_53372Desktop 0.1.0paulpaulhttps://code.briarproject.org/briar/briar-desktop/-/issues/38Decide on way of using `mutableStateOf`2022-04-03T10:36:51ZMikolai GütschowDecide on way of using `mutableStateOf`See https://code.briarproject.org/briar/briar-desktop/-/merge_requests/5#note_53434See https://code.briarproject.org/briar/briar-desktop/-/merge_requests/5#note_53434