briar issueshttps://code.briarproject.org/groups/briar/-/issues2022-01-07T15:22:31Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/111Allow to log out of Briar Desktop without closing the window2022-01-07T15:22:31ZMikolai GütschowAllow to log out of Briar Desktop without closing the windowThe window should go back to the login screen after logging out. This action would be triggered by the last button in the left sidebar.The window should go back to the login screen after logging out. This action would be triggered by the last button in the left sidebar.Desktop 0.1.0SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/110Add UI support for introductions and invitations inside the private message view2022-01-06T17:04:06ZMikolai GütschowAdd UI support for introductions and invitations inside the private message viewCurrently, only private messages are supported and shown in the UI. Both introductions and invitations have similar demands on the UI with the possibility of reacting on them by pressing a button.
This is also a prerequisite to be able ...Currently, only private messages are supported and shown in the UI. Both introductions and invitations have similar demands on the UI with the possibility of reacting on them by pressing a button.
This is also a prerequisite to be able to test #12Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/109Special handling of "Enter" in message compose field2022-01-06T17:04:05ZMikolai GütschowSpecial handling of "Enter" in message compose fieldSee the discussion in https://code.briarproject.org/briar/briar-desktop/-/issues/94#note_56401.See the discussion in https://code.briarproject.org/briar/briar-desktop/-/issues/94#note_56401.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://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/107Glitch while displaying newly sent message2022-01-06T17:04:06ZSebastianGlitch while displaying newly sent messageWhile recording a demo I noticed a small glitch in the UI, apparently something is wrong when updating the conversation listWhile recording a demo I noticed a small glitch in the UI, apparently something is wrong when updating the conversation listDesktop 0.1.0https://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/105Use upstream ConversationMessageToBeSentEvent2021-12-06T14:25:08ZSebastianUse upstream ConversationMessageToBeSentEventOnce briar!1541 is merged, remove our own `ConversationMessageToBeSentEvent`Once briar!1541 is merged, remove our own `ConversationMessageToBeSentEvent`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/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/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/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/98Move Briar API calls to background thread2022-04-15T14:30:02ZMikolai GütschowMove Briar API calls to background threadWhile the Briar API calls will now be logically separated from the UI thanks to the view models (!33 and !34), all the calls are still executed on the main (UI) thread.
In the Android app, all those calls are run on a dedicated database...While the Briar API calls will now be logically separated from the UI thanks to the view models (!33 and !34), all the calls are still executed on the main (UI) thread.
In the Android app, all those calls are run on a dedicated database thread (see, for example, [here](https://code.briarproject.org/briar/briar/-/blob/master/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListViewModel.java#L65-73)).
We should use a similar approach, but we can take advantage of the nice Kotlin coroutines approach, that allows to run coroutines on a different `IO` thread (pool?).Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/96Pending Contact Status Bar2021-12-17T16:03:54ZpaulPending Contact Status BarIn the Briar android app, you can see your pending contacts with a bottom status bar on the contact list. This ticket will track the addition of this feature in the desktop app. Because we use a `Scaffold` for the `ContactList`, we might...In the Briar android app, you can see your pending contacts with a bottom status bar on the contact list. This ticket will track the addition of this feature in the desktop app. Because we use a `Scaffold` for the `ContactList`, we might be able to use the `BottomAppBar` to accomplish a similar UX.Desktop 0.1.0https://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/94Add Settings View2022-01-31T10:41:14ZpaulAdd Settings ViewThis ticket will track the progress of building a proper view for the "Settings" tab of the desktop client.This ticket will track the progress of building a proper view for the "Settings" tab of the desktop client.Desktop 0.1.0NicoNicohttps://code.briarproject.org/briar/briar-desktop/-/issues/93Add view model for private chat2021-12-06T14:25:09ZMikolai GütschowAdd view model for private chatPart of #90.Part of #90.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/92Finish view model for contact list2021-12-06T14:25:09ZMikolai GütschowFinish view model for contact listPart of #90. The view model should also handle filtering of the contact list while searching.Part of #90. The view model should also handle filtering of the contact list while searching.Desktop 0.1.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/91Wrong colors in introduction drawer2022-01-09T16:44:58ZMikolai GütschowWrong colors in introduction drawerThe text and arrow colors do not adapt to light and dark theme:
![image](/uploads/0bf8d7d71f75977772b5d2067ee89350/image.png)
![image](/uploads/7654ceda443981abd1191bff5eb841f2/image.png)The text and arrow colors do not adapt to light and dark theme:
![image](/uploads/0bf8d7d71f75977772b5d2067ee89350/image.png)
![image](/uploads/7654ceda443981abd1191bff5eb841f2/image.png)Desktop 0.1.0SebastianSebastianhttps://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/88Display real profile images2022-01-06T16:01:51ZSebastianDisplay real profile imagesNot only the identicons, but real user-set profile images, if available.Not only the identicons, but real user-set profile images, if available.Desktop 0.1.0SebastianSebastian