2021-07-09 03:14:21 +02:00
|
|
|
package org.thoughtcrime.securesms.home
|
2019-12-17 14:27:59 +01:00
|
|
|
|
2020-07-16 04:49:37 +02:00
|
|
|
import android.content.BroadcastReceiver
|
|
|
|
import android.content.Context
|
2019-12-17 15:15:13 +01:00
|
|
|
import android.content.Intent
|
2020-07-16 04:49:37 +02:00
|
|
|
import android.content.IntentFilter
|
2023-02-14 06:43:55 +01:00
|
|
|
import android.content.ClipData
|
|
|
|
import android.content.ClipboardManager
|
2019-12-17 14:27:59 +01:00
|
|
|
import android.os.Bundle
|
2020-01-09 01:35:43 +01:00
|
|
|
import android.text.SpannableString
|
2020-02-19 05:34:02 +01:00
|
|
|
import android.widget.Toast
|
2022-02-07 07:06:27 +01:00
|
|
|
import androidx.activity.viewModels
|
New app theming (#913)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
Co-authored-by: charles <charles@oxen.io>
2022-10-12 08:05:55 +02:00
|
|
|
import androidx.appcompat.app.AlertDialog
|
2021-12-16 05:47:26 +01:00
|
|
|
import androidx.core.os.bundleOf
|
2021-07-29 09:02:58 +02:00
|
|
|
import androidx.core.view.isVisible
|
2020-11-23 06:59:44 +01:00
|
|
|
import androidx.lifecycle.lifecycleScope
|
2020-09-03 14:15:03 +02:00
|
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
2022-03-04 07:46:39 +01:00
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
2021-10-04 09:51:19 +02:00
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
2020-11-23 06:59:44 +01:00
|
|
|
import kotlinx.coroutines.Dispatchers
|
2022-02-07 07:06:27 +01:00
|
|
|
import kotlinx.coroutines.flow.collect
|
2022-01-14 06:56:15 +01:00
|
|
|
import kotlinx.coroutines.flow.filter
|
2022-02-07 07:06:27 +01:00
|
|
|
import kotlinx.coroutines.flow.onEach
|
2020-11-23 06:59:44 +01:00
|
|
|
import kotlinx.coroutines.launch
|
2021-07-29 09:02:58 +02:00
|
|
|
import kotlinx.coroutines.withContext
|
2019-12-17 14:27:59 +01:00
|
|
|
import network.loki.messenger.R
|
2022-01-14 06:56:15 +01:00
|
|
|
import network.loki.messenger.databinding.ActivityHomeBinding
|
2022-03-04 07:46:39 +01:00
|
|
|
import network.loki.messenger.databinding.ViewMessageRequestBannerBinding
|
2021-03-03 01:33:35 +01:00
|
|
|
import org.greenrobot.eventbus.EventBus
|
|
|
|
import org.greenrobot.eventbus.Subscribe
|
|
|
|
import org.greenrobot.eventbus.ThreadMode
|
2021-03-17 01:30:03 +01:00
|
|
|
import org.session.libsession.messaging.jobs.JobQueue
|
2021-03-31 06:15:50 +02:00
|
|
|
import org.session.libsession.messaging.sending_receiving.MessageSender
|
2022-02-07 07:06:27 +01:00
|
|
|
import org.session.libsession.utilities.Address
|
2022-01-14 06:56:15 +01:00
|
|
|
import org.session.libsession.utilities.GroupUtil
|
|
|
|
import org.session.libsession.utilities.ProfilePictureModifiedEvent
|
|
|
|
import org.session.libsession.utilities.TextSecurePreferences
|
2022-02-07 07:06:27 +01:00
|
|
|
import org.session.libsession.utilities.recipients.Recipient
|
|
|
|
import org.session.libsignal.utilities.Log
|
2022-01-16 18:02:39 +01:00
|
|
|
import org.session.libsignal.utilities.ThreadUtils
|
2021-06-09 07:56:20 +02:00
|
|
|
import org.session.libsignal.utilities.toHexString
|
2019-12-17 14:27:59 +01:00
|
|
|
import org.thoughtcrime.securesms.ApplicationContext
|
2021-07-20 08:06:59 +02:00
|
|
|
import org.thoughtcrime.securesms.MuteDialog
|
2019-12-17 14:27:59 +01:00
|
|
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
2022-09-30 05:32:07 +02:00
|
|
|
import org.thoughtcrime.securesms.conversation.start.NewConversationFragment
|
2021-05-31 06:29:11 +02:00
|
|
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
2021-07-20 08:06:59 +02:00
|
|
|
import org.thoughtcrime.securesms.conversation.v2.utilities.NotificationUtils
|
2021-07-08 05:38:14 +02:00
|
|
|
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.thoughtcrime.securesms.database.GroupDatabase
|
2022-02-07 07:06:27 +01:00
|
|
|
import org.thoughtcrime.securesms.database.MmsSmsDatabase
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.thoughtcrime.securesms.database.RecipientDatabase
|
|
|
|
import org.thoughtcrime.securesms.database.ThreadDatabase
|
2019-12-17 15:15:13 +01:00
|
|
|
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
2021-07-09 05:25:57 +02:00
|
|
|
import org.thoughtcrime.securesms.groups.OpenGroupManager
|
2022-02-07 07:06:27 +01:00
|
|
|
import org.thoughtcrime.securesms.home.search.GlobalSearchAdapter
|
|
|
|
import org.thoughtcrime.securesms.home.search.GlobalSearchInputLayout
|
|
|
|
import org.thoughtcrime.securesms.home.search.GlobalSearchViewModel
|
2022-03-04 07:46:39 +01:00
|
|
|
import org.thoughtcrime.securesms.messagerequests.MessageRequestsActivity
|
2019-12-19 11:15:58 +01:00
|
|
|
import org.thoughtcrime.securesms.mms.GlideApp
|
|
|
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
2021-07-09 03:14:21 +02:00
|
|
|
import org.thoughtcrime.securesms.onboarding.SeedActivity
|
2021-07-20 08:06:59 +02:00
|
|
|
import org.thoughtcrime.securesms.onboarding.SeedReminderViewDelegate
|
2021-07-09 03:14:21 +02:00
|
|
|
import org.thoughtcrime.securesms.preferences.SettingsActivity
|
2022-01-14 06:56:15 +01:00
|
|
|
import org.thoughtcrime.securesms.util.ConfigurationMessageUtilities
|
2022-03-04 07:46:39 +01:00
|
|
|
import org.thoughtcrime.securesms.util.DateUtils
|
2022-01-14 06:56:15 +01:00
|
|
|
import org.thoughtcrime.securesms.util.IP2Country
|
|
|
|
import org.thoughtcrime.securesms.util.disableClipping
|
|
|
|
import org.thoughtcrime.securesms.util.push
|
|
|
|
import org.thoughtcrime.securesms.util.show
|
2022-10-18 09:05:41 +02:00
|
|
|
import org.thoughtcrime.securesms.util.themeState
|
2020-09-11 01:03:57 +02:00
|
|
|
import java.io.IOException
|
2022-03-04 07:46:39 +01:00
|
|
|
import java.util.Locale
|
2021-10-04 09:51:19 +02:00
|
|
|
import javax.inject.Inject
|
2019-12-17 14:27:59 +01:00
|
|
|
|
2021-10-04 09:51:19 +02:00
|
|
|
@AndroidEntryPoint
|
2022-02-07 07:06:27 +01:00
|
|
|
class HomeActivity : PassphraseRequiredActionBarActivity(),
|
2022-09-30 05:32:07 +02:00
|
|
|
ConversationClickListener,
|
|
|
|
SeedReminderViewDelegate,
|
|
|
|
GlobalSearchInputLayout.GlobalSearchInputLayoutListener {
|
2022-01-14 06:56:15 +01:00
|
|
|
|
|
|
|
private lateinit var binding: ActivityHomeBinding
|
2019-12-19 11:15:58 +01:00
|
|
|
private lateinit var glide: GlideRequests
|
2020-07-16 04:49:37 +02:00
|
|
|
private var broadcastReceiver: BroadcastReceiver? = null
|
2019-12-17 14:27:59 +01:00
|
|
|
|
2021-10-04 09:51:19 +02:00
|
|
|
@Inject lateinit var threadDb: ThreadDatabase
|
2022-02-07 07:06:27 +01:00
|
|
|
@Inject lateinit var mmsSmsDatabase: MmsSmsDatabase
|
2021-10-04 09:51:19 +02:00
|
|
|
@Inject lateinit var recipientDatabase: RecipientDatabase
|
|
|
|
@Inject lateinit var groupDatabase: GroupDatabase
|
2022-02-07 07:06:27 +01:00
|
|
|
@Inject lateinit var textSecurePreferences: TextSecurePreferences
|
|
|
|
|
|
|
|
private val globalSearchViewModel by viewModels<GlobalSearchViewModel>()
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
private val homeViewModel by viewModels<HomeViewModel>()
|
2021-10-04 09:51:19 +02:00
|
|
|
|
2020-07-15 06:26:20 +02:00
|
|
|
private val publicKey: String
|
2022-03-04 07:46:39 +01:00
|
|
|
get() = textSecurePreferences.getLocalNumber()!!
|
2020-01-06 04:26:52 +01:00
|
|
|
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
private val homeAdapter: HomeAdapter by lazy {
|
|
|
|
HomeAdapter(context = this, listener = this)
|
2021-12-10 00:18:56 +01:00
|
|
|
}
|
|
|
|
|
2022-02-07 07:06:27 +01:00
|
|
|
private val globalSearchAdapter = GlobalSearchAdapter { model ->
|
|
|
|
when (model) {
|
|
|
|
is GlobalSearchAdapter.Model.Message -> {
|
|
|
|
val threadId = model.messageResult.threadId
|
2022-12-19 01:29:05 +01:00
|
|
|
val timestamp = model.messageResult.sentTimestampMs
|
2022-02-07 07:06:27 +01:00
|
|
|
val author = model.messageResult.messageRecipient.address
|
|
|
|
|
|
|
|
val intent = Intent(this, ConversationActivityV2::class.java)
|
|
|
|
intent.putExtra(ConversationActivityV2.THREAD_ID, threadId)
|
|
|
|
intent.putExtra(ConversationActivityV2.SCROLL_MESSAGE_ID, timestamp)
|
|
|
|
intent.putExtra(ConversationActivityV2.SCROLL_MESSAGE_AUTHOR, author)
|
|
|
|
push(intent)
|
|
|
|
}
|
|
|
|
is GlobalSearchAdapter.Model.SavedMessages -> {
|
|
|
|
val intent = Intent(this, ConversationActivityV2::class.java)
|
|
|
|
intent.putExtra(ConversationActivityV2.ADDRESS, Address.fromSerialized(model.currentUserPublicKey))
|
|
|
|
push(intent)
|
|
|
|
}
|
|
|
|
is GlobalSearchAdapter.Model.Contact -> {
|
|
|
|
val address = model.contact.sessionID
|
|
|
|
|
|
|
|
val intent = Intent(this, ConversationActivityV2::class.java)
|
|
|
|
intent.putExtra(ConversationActivityV2.ADDRESS, Address.fromSerialized(address))
|
|
|
|
push(intent)
|
|
|
|
}
|
|
|
|
is GlobalSearchAdapter.Model.GroupConversation -> {
|
|
|
|
val groupAddress = Address.fromSerialized(model.groupRecord.encodedId)
|
|
|
|
val threadId = threadDb.getThreadIdIfExistsFor(Recipient.from(this, groupAddress, false))
|
|
|
|
if (threadId >= 0) {
|
|
|
|
val intent = Intent(this, ConversationActivityV2::class.java)
|
|
|
|
intent.putExtra(ConversationActivityV2.THREAD_ID, threadId)
|
|
|
|
push(intent)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else -> {
|
|
|
|
Log.d("Loki", "callback with model: $model")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-18 11:36:09 +01:00
|
|
|
// region Lifecycle
|
2019-12-17 14:27:59 +01:00
|
|
|
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
|
|
|
super.onCreate(savedInstanceState, isReady)
|
|
|
|
// Set content view
|
2022-01-14 06:56:15 +01:00
|
|
|
binding = ActivityHomeBinding.inflate(layoutInflater)
|
|
|
|
setContentView(binding.root)
|
2020-01-07 02:00:30 +01:00
|
|
|
// Set custom toolbar
|
2022-01-14 06:56:15 +01:00
|
|
|
setSupportActionBar(binding.toolbar)
|
2019-12-19 11:15:58 +01:00
|
|
|
// Set up Glide
|
|
|
|
glide = GlideApp.with(this)
|
2020-01-06 02:07:55 +01:00
|
|
|
// Set up toolbar buttons
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
binding.profileButton.root.glide = glide
|
|
|
|
binding.profileButton.root.setOnClickListener { openSettings() }
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.searchViewContainer.setOnClickListener {
|
|
|
|
binding.globalSearchInputLayout.requestFocus()
|
|
|
|
}
|
|
|
|
binding.sessionToolbar.disableClipping()
|
2020-01-09 01:35:43 +01:00
|
|
|
// Set up seed reminder view
|
2022-03-04 07:46:39 +01:00
|
|
|
val hasViewedSeed = textSecurePreferences.getHasViewedSeed()
|
2021-02-18 05:12:30 +01:00
|
|
|
if (!hasViewedSeed) {
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.seedReminderView.isVisible = true
|
|
|
|
binding.seedReminderView.title = SpannableString("You're almost finished! 80%") // Intentionally not yet translated
|
|
|
|
binding.seedReminderView.subtitle = resources.getString(R.string.view_seed_reminder_subtitle_1)
|
|
|
|
binding.seedReminderView.setProgress(80, false)
|
|
|
|
binding.seedReminderView.delegate = this@HomeActivity
|
2020-01-09 01:35:43 +01:00
|
|
|
} else {
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.seedReminderView.isVisible = false
|
2020-01-09 01:35:43 +01:00
|
|
|
}
|
2022-03-04 07:46:39 +01:00
|
|
|
setupMessageRequestsBanner()
|
2019-12-17 14:27:59 +01:00
|
|
|
// Set up recycler view
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.globalSearchInputLayout.listener = this
|
2021-02-04 06:57:24 +01:00
|
|
|
homeAdapter.setHasStableIds(true)
|
2019-12-19 11:15:58 +01:00
|
|
|
homeAdapter.glide = glide
|
2022-01-14 06:56:15 +01:00
|
|
|
binding.recyclerView.adapter = homeAdapter
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.globalSearchRecycler.adapter = globalSearchAdapter
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
|
2020-04-20 03:54:56 +02:00
|
|
|
// Set up empty state view
|
2022-09-30 05:32:07 +02:00
|
|
|
binding.createNewPrivateChatButton.setOnClickListener { showNewConversation() }
|
2021-07-30 05:42:39 +02:00
|
|
|
IP2Country.configureIfNeeded(this@HomeActivity)
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
startObservingUpdates()
|
|
|
|
|
2022-09-30 05:32:07 +02:00
|
|
|
// Set up new conversation button
|
|
|
|
binding.newConversationButton.setOnClickListener { showNewConversation() }
|
2020-07-16 04:49:37 +02:00
|
|
|
// Observe blocked contacts changed events
|
|
|
|
val broadcastReceiver = object : BroadcastReceiver() {
|
|
|
|
override fun onReceive(context: Context, intent: Intent) {
|
2022-01-14 06:56:15 +01:00
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2020-07-16 04:49:37 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
this.broadcastReceiver = broadcastReceiver
|
|
|
|
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter("blockedContactsChanged"))
|
Add one on one calls over clearnet (#864)
* feat: adding basic webrtc deps and test activity
* more testing code
* feat: add protos and bump version
* feat: added basic call functionality
* feat: adding UI and flipping cameras
* feat: add stats and starting call bottom sheet
* feat: hanging up and bottom sheet behaviors should work now
* feat: add call stats report on frontend
* feat: add relay toggle for answer and offer
* fix: add keep screen on and more end call message on back pressed / on finish
* refactor: removing and replacing dagger 1 dep with android hilt
* feat: include latest proto
* feat: update to utilise call ID
* feat: add stun and turn
* refactor: playing around with deps and transport types
* feat: adding call service functionality and permissions for calls
* feat: add call manager and more static intent building functions for WebRtcCallService.kt
* feat: adding ringers and more audio boilerplate
* feat: audio manager call service boilerplate
* feat: update kotlin and add in call view model and more management functions
* refactor: moving call code around to service and viewmodel interactions
* feat: plugging CallManager.kt into view model and service, fixing up dependencies
* feat: implementing more WebRtcCallService.kt functions and handlers for actions as well as lifecycle
* feat: adding more lifecycle vm and callmanager / call service functionality
* feat: adding more command handlers in WebRtcCallService.kt
* feat: more commands handled, adding lock manager and bluetooth permissions
* feat: adding remainder of basic functionality to services and CallManager.kt
* feat: hooking up calls and fixing broken dependencies and compile errors
* fix: add timestamp to incoming call
* feat: some connection and service launching / ring lifecycle
* feat: call establishing and displaying
* fix: fixing call connect flows
* feat: ringers and better state handling
* feat: updating call layout
* feat: add fixes to bluetooth and begin the network renegotiation
* feat: add call related permissions and more network handover tests
* fix: don't display call option in conversation and don't show notification if option not enabled
* fix: incoming ringer fix on receiving call, call notification priorities and notification channel update
* build: update build number for testing
* fix: bluetooth auto-connection and re-connection fixes, removing finished todos, allowing self-send call messages for deduping answers
* feat: add pre-offer information and action handling in web rtc call service
* refactor: discard offer messages from non-matching pre-offers we are already expecting
* build: build numbers and version name update
* feat: handle discarding pending calls from linked devices
* feat: add signing props to release config build
* docs: fix comment on time being 300s (5m) instead of 30s
* feat: adding call messages for incoming/outgoing/missed
* refactor: handle in-thread call notifications better and replace deny button intent with denyCallIntent instead of hangup
* feat: add a hangup via data channel message
* feat: process microphone enabled events and remove debuggable from build.gradle
* feat: add first call notification
* refactor: set the buttons to match iOS in terms of enable disable and colours
* refactor: change the call logos in control messages
* refactor: more bluetooth improvements
* refactor: move start ringer and init of audio manager to CallManager.kt and string fix up
* build: remove debuggable for release build
* refactor: replace call icons
* feat: adding a call time display
* refactor: change the call time to update every second
* refactor: testing out the full screen intents
* refactor: wrapper use corrected session description, set title to recipient displayName, indicate session calls
* fix: crash on view with a parent already attached
* refactor: aspect ratio fit preserved
* refactor: add wantsToAnswer ability in pre-init for fullscreenintent
* refactor: prevent calls from non hasSent participants
* build: update gradle code
* refactor: replace timeout schedule with a seconds count
* fix: various bug fixes for calls
* fix: remove end call from busy
* refactor: use answerCall instead of manual intent building again
* build: new version
* feat: add silenced notifications for call notification builder. check pre-offer and connecting state for pending connection
* build: update build number
* fix: text color uses overridden style value
* fix: remove wrap content for renderers and look more at recovering from network switches
* build: update build number
* refactor: remove whitespace
* build: update build number
* refactor: used shared number for BatchMessageReceiveJob.kt parameter across pollers
* fix: glide in update crash
* fix: bug fixes for self-send answer / hangup messages
* build: update build number
* build: update build.gradle number
* refactor: compile errors and refactoring to view binding
* fix: set the content to binding.root view
* build: increase build number
* build: update build numbers
* feat: adding base for rotation and picking random subset of turn servers
* feat: starting the screen rotation processing
* feat: setting up rotation for the remote render view
* refactor: applying rotation and mirroring based on front / rear cameras that wraps nicely, only scale reworking needed
* refactor: calls video stretching but consistent
* refactor: state machine and tests for the transition events
* feat: new call state processing
* refactor: adding reconnecting logic and visuals
* feat: state machine reconnect logic wip
* feat: add reconnecting and merge fixes
* feat: check new session based off current state
* feat: reconnection logic works correctly now
* refactor: reduce TIMEOUT_SECONDS to 30 from 90
* feat: reset peer connection on DC to prevent ICE messages from old connection or stale state in reconnecting
* refactor: add null case
* fix: set approved on new outgoing threads, use approved more deeply and invalidate the options menu on recipient modified. Add approvedMe flag toggles for visible message receive
* fix: add name update in action bar on modified, change where approvedMe is set
* build: increment build number
* build: update build number
* fix: merge compile errors and increment build number
* refactor: remove negotiation based on which party dropped connection
* refactor: call reconnection improvement tested cross platform to re-establish
* refactor: failed and disconnect events only handled if either the reconnect or the timeout runnables are not set
* build: update version number
* fix: reduce timeout
* fix: fixes the incoming hangup logic for linked devices
* refactor: match iOS styling for call activity closer
* chore: upgrade build numbers
* feat: add in call settings dialog for if calls is disabled in conversation
* feat: add a first call missed control message and info popup with link to privacy settings
* fix: looking at crash for specific large transaction in NotificationManager
* refactor: removing the people in case transaction size reduces to fix notif crash
* fix: comment out the entire send multiple to see if it fixes the issue
* refactor: revert to including the full notification process in a try/catch to handle weird responses from NotificationManager
* fix: add in notification settings prompt for calls and try to fall back to dirty full screen intent / start activity if we're allowed
* build: upgrade build number
2022-04-19 06:25:40 +02:00
|
|
|
|
2021-07-30 03:00:53 +02:00
|
|
|
lifecycleScope.launchWhenStarted {
|
2021-07-29 09:02:58 +02:00
|
|
|
launch(Dispatchers.IO) {
|
|
|
|
// Double check that the long poller is up
|
|
|
|
(applicationContext as ApplicationContext).startPollingIfNeeded()
|
|
|
|
// update things based on TextSecurePrefs (profile info etc)
|
|
|
|
// Set up remaining components if needed
|
|
|
|
val application = ApplicationContext.getInstance(this@HomeActivity)
|
|
|
|
application.registerForFCMIfNeeded(false)
|
2022-03-04 07:46:39 +01:00
|
|
|
if (textSecurePreferences.getLocalNumber() != null) {
|
2021-07-29 09:02:58 +02:00
|
|
|
OpenGroupManager.startPolling()
|
|
|
|
JobQueue.shared.resumePendingJobs()
|
|
|
|
}
|
2023-01-13 03:22:18 +01:00
|
|
|
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
updateProfileButton()
|
|
|
|
TextSecurePreferences.events.filter { it == TextSecurePreferences.PROFILE_NAME_PREF }.collect {
|
|
|
|
updateProfileButton()
|
|
|
|
}
|
|
|
|
}
|
2021-03-01 07:16:15 +01:00
|
|
|
}
|
2022-02-07 07:06:27 +01:00
|
|
|
// monitor the global search VM query
|
|
|
|
launch {
|
|
|
|
binding.globalSearchInputLayout.query
|
|
|
|
.onEach(globalSearchViewModel::postQuery)
|
|
|
|
.collect()
|
|
|
|
}
|
|
|
|
// Get group results and display them
|
|
|
|
launch {
|
|
|
|
globalSearchViewModel.result.collect { result ->
|
|
|
|
val currentUserPublicKey = publicKey
|
|
|
|
val contactAndGroupList = result.contacts.map { GlobalSearchAdapter.Model.Contact(it) } +
|
|
|
|
result.threads.map { GlobalSearchAdapter.Model.GroupConversation(it) }
|
|
|
|
|
|
|
|
val contactResults = contactAndGroupList.toMutableList()
|
|
|
|
|
|
|
|
if (contactResults.isEmpty()) {
|
|
|
|
contactResults.add(GlobalSearchAdapter.Model.SavedMessages(currentUserPublicKey))
|
|
|
|
}
|
|
|
|
|
|
|
|
val userIndex = contactResults.indexOfFirst { it is GlobalSearchAdapter.Model.Contact && it.contact.sessionID == currentUserPublicKey }
|
|
|
|
if (userIndex >= 0) {
|
|
|
|
contactResults[userIndex] = GlobalSearchAdapter.Model.SavedMessages(currentUserPublicKey)
|
|
|
|
}
|
|
|
|
|
|
|
|
if (contactResults.isNotEmpty()) {
|
|
|
|
contactResults.add(0, GlobalSearchAdapter.Model.Header(R.string.global_search_contacts_groups))
|
|
|
|
}
|
|
|
|
|
|
|
|
val unreadThreadMap = result.messages
|
|
|
|
.groupBy { it.threadId }.keys
|
|
|
|
.map { it to mmsSmsDatabase.getUnreadCount(it) }
|
|
|
|
.toMap()
|
|
|
|
|
|
|
|
val messageResults: MutableList<GlobalSearchAdapter.Model> = result.messages
|
|
|
|
.map { messageResult ->
|
|
|
|
GlobalSearchAdapter.Model.Message(
|
|
|
|
messageResult,
|
|
|
|
unreadThreadMap[messageResult.threadId] ?: 0
|
|
|
|
)
|
|
|
|
}.toMutableList()
|
|
|
|
|
|
|
|
if (messageResults.isNotEmpty()) {
|
|
|
|
messageResults.add(0, GlobalSearchAdapter.Model.Header(R.string.global_search_messages))
|
|
|
|
}
|
|
|
|
|
|
|
|
val newData = contactResults + messageResults
|
|
|
|
|
|
|
|
globalSearchAdapter.setNewData(result.query, newData)
|
|
|
|
}
|
|
|
|
}
|
2021-03-01 07:16:15 +01:00
|
|
|
}
|
2021-03-03 01:33:35 +01:00
|
|
|
EventBus.getDefault().register(this@HomeActivity)
|
2019-12-17 14:27:59 +01:00
|
|
|
}
|
2019-12-18 15:25:23 +01:00
|
|
|
|
2022-02-07 07:06:27 +01:00
|
|
|
override fun onInputFocusChanged(hasFocus: Boolean) {
|
|
|
|
if (hasFocus) {
|
|
|
|
setSearchShown(true)
|
|
|
|
} else {
|
|
|
|
setSearchShown(!binding.globalSearchInputLayout.query.value.isNullOrEmpty())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun setSearchShown(isShown: Boolean) {
|
|
|
|
binding.searchToolbar.isVisible = isShown
|
|
|
|
binding.sessionToolbar.isVisible = !isShown
|
|
|
|
binding.recyclerView.isVisible = !isShown
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
binding.emptyStateContainer.isVisible = (binding.recyclerView.adapter as HomeAdapter).itemCount == 0 && binding.recyclerView.isVisible
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.seedReminderView.isVisible = !TextSecurePreferences.getHasViewedSeed(this) && !isShown
|
|
|
|
binding.globalSearchRecycler.isVisible = isShown
|
2022-09-30 05:32:07 +02:00
|
|
|
binding.newConversationButton.isVisible = !isShown
|
2022-02-07 07:06:27 +01:00
|
|
|
}
|
|
|
|
|
2022-03-04 07:46:39 +01:00
|
|
|
private fun setupMessageRequestsBanner() {
|
|
|
|
val messageRequestCount = threadDb.unapprovedConversationCount
|
|
|
|
// Set up message requests
|
|
|
|
if (messageRequestCount > 0 && !textSecurePreferences.hasHiddenMessageRequests()) {
|
|
|
|
with(ViewMessageRequestBannerBinding.inflate(layoutInflater)) {
|
|
|
|
unreadCountTextView.text = messageRequestCount.toString()
|
|
|
|
timestampTextView.text = DateUtils.getDisplayFormattedTimeSpanString(
|
|
|
|
this@HomeActivity,
|
|
|
|
Locale.getDefault(),
|
|
|
|
threadDb.latestUnapprovedConversationTimestamp
|
|
|
|
)
|
|
|
|
root.setOnClickListener { showMessageRequests() }
|
|
|
|
root.setOnLongClickListener { hideMessageRequests(); true }
|
|
|
|
root.layoutParams = RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT)
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
val hadHeader = homeAdapter.hasHeaderView()
|
|
|
|
homeAdapter.header = root
|
|
|
|
if (hadHeader) homeAdapter.notifyItemChanged(0)
|
|
|
|
else homeAdapter.notifyItemInserted(0)
|
2022-03-04 07:46:39 +01:00
|
|
|
}
|
|
|
|
} else {
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
val hadHeader = homeAdapter.hasHeaderView()
|
|
|
|
homeAdapter.header = null
|
|
|
|
if (hadHeader) {
|
|
|
|
homeAdapter.notifyItemRemoved(0)
|
|
|
|
}
|
2022-03-04 07:46:39 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-01-09 01:35:43 +01:00
|
|
|
override fun onResume() {
|
|
|
|
super.onResume()
|
2021-07-13 08:31:16 +02:00
|
|
|
ApplicationContext.getInstance(this).messageNotifier.setHomeScreenVisible(true)
|
2022-03-04 07:46:39 +01:00
|
|
|
if (textSecurePreferences.getLocalNumber() == null) { return; } // This can be the case after a secondary device is auto-cleared
|
2021-06-09 07:56:20 +02:00
|
|
|
IdentityKeyUtil.checkUpdate(this)
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
binding.profileButton.root.recycle() // clear cached image before update tje profilePictureView
|
|
|
|
binding.profileButton.root.update()
|
2022-03-04 07:46:39 +01:00
|
|
|
if (textSecurePreferences.getHasViewedSeed()) {
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.seedReminderView.isVisible = false
|
2020-01-09 01:35:43 +01:00
|
|
|
}
|
2022-03-04 07:46:39 +01:00
|
|
|
if (textSecurePreferences.getConfigurationMessageSynced()) {
|
2021-03-04 04:43:02 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-07-09 05:01:16 +02:00
|
|
|
ConfigurationMessageUtilities.syncConfigurationIfNeeded(this@HomeActivity)
|
2021-03-04 04:43:02 +01:00
|
|
|
}
|
2021-03-04 04:19:07 +01:00
|
|
|
}
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
|
|
|
|
// If the theme hasn't changed then start observing updates again (if it does change then we
|
|
|
|
// will recreate the activity resulting in it responding to changes multiple times)
|
|
|
|
if (currentThemeState == textSecurePreferences.themeState() && !homeViewModel.getObservable(this).hasActiveObservers()) {
|
|
|
|
startObservingUpdates()
|
|
|
|
}
|
2021-01-13 06:13:49 +01:00
|
|
|
}
|
|
|
|
|
2021-07-13 08:31:16 +02:00
|
|
|
override fun onPause() {
|
|
|
|
super.onPause()
|
|
|
|
ApplicationContext.getInstance(this).messageNotifier.setHomeScreenVisible(false)
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
|
|
|
|
homeViewModel.getObservable(this).removeObservers(this)
|
2021-07-13 08:31:16 +02:00
|
|
|
}
|
|
|
|
|
2020-07-16 04:49:37 +02:00
|
|
|
override fun onDestroy() {
|
|
|
|
val broadcastReceiver = this.broadcastReceiver
|
|
|
|
if (broadcastReceiver != null) {
|
|
|
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver)
|
|
|
|
}
|
|
|
|
super.onDestroy()
|
2021-03-03 01:33:35 +01:00
|
|
|
EventBus.getDefault().unregister(this)
|
2020-07-16 04:49:37 +02:00
|
|
|
}
|
2020-01-09 01:35:43 +01:00
|
|
|
// endregion
|
|
|
|
|
2020-04-20 03:54:56 +02:00
|
|
|
// region Updating
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
private fun startObservingUpdates() {
|
|
|
|
homeViewModel.getObservable(this).observe(this) { newData ->
|
|
|
|
val manager = binding.recyclerView.layoutManager as LinearLayoutManager
|
|
|
|
val firstPos = manager.findFirstCompletelyVisibleItemPosition()
|
|
|
|
val offsetTop = if(firstPos >= 0) {
|
|
|
|
manager.findViewByPosition(firstPos)?.let { view ->
|
|
|
|
manager.getDecoratedTop(view) - manager.getTopDecorationHeight(view)
|
|
|
|
} ?: 0
|
|
|
|
} else 0
|
|
|
|
homeAdapter.data = newData
|
|
|
|
if(firstPos >= 0) { manager.scrollToPositionWithOffset(firstPos, offsetTop) }
|
|
|
|
setupMessageRequestsBanner()
|
|
|
|
updateEmptyState()
|
|
|
|
}
|
2023-01-13 03:22:18 +01:00
|
|
|
|
|
|
|
ApplicationContext.getInstance(this@HomeActivity).typingStatusRepository.typingThreads.observe(this) { threadIds ->
|
|
|
|
homeAdapter.typingThreadIDs = (threadIds ?: setOf())
|
|
|
|
}
|
New app theming (#1011)
* Fixed a bug where message requests could incorrectly appear in the thread list (#1009)
* New app theming (#1010)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
* Fix ocean light theme pin color
* Update classic dark unread indicator text color
* Reduce group name text size on join community screen
* Restore tab indicator color on join community and all media screens
* Home adapter rename
* Updated the HomeViewModel to cancel old executors when new ones are added (#1)
* Updated the HomeViewModel to cancel old executors when new ones are added
* Removed a seemingly unneeded update
* Explicitly remove observers when the HomeActivity is paused (#2)
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: Morgan Pretty <mpretty-cyro@users.noreply.github.com>
Co-authored-by: jubb <hjubb@users.noreply.github.com>
Co-authored-by: charles <charles@oxen.io>
2022-10-18 08:59:47 +02:00
|
|
|
}
|
|
|
|
|
2020-04-20 03:54:56 +02:00
|
|
|
private fun updateEmptyState() {
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
val threadCount = (binding.recyclerView.adapter)!!.itemCount
|
2022-02-07 07:06:27 +01:00
|
|
|
binding.emptyStateContainer.isVisible = threadCount == 0 && binding.recyclerView.isVisible
|
2020-04-20 03:54:56 +02:00
|
|
|
}
|
2021-03-01 07:16:15 +01:00
|
|
|
|
2021-03-03 01:33:35 +01:00
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
|
fun onUpdateProfileEvent(event: ProfilePictureModifiedEvent) {
|
|
|
|
if (event.recipient.isLocalNumber) {
|
|
|
|
updateProfileButton()
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
} else {
|
|
|
|
homeViewModel.tryUpdateChannel()
|
2021-03-03 01:33:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-01 07:16:15 +01:00
|
|
|
private fun updateProfileButton() {
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
binding.profileButton.root.publicKey = publicKey
|
|
|
|
binding.profileButton.root.displayName = textSecurePreferences.getProfileName()
|
|
|
|
binding.profileButton.root.recycle()
|
|
|
|
binding.profileButton.root.update()
|
2021-03-01 07:16:15 +01:00
|
|
|
}
|
2020-04-20 03:54:56 +02:00
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region Interaction
|
2022-02-07 07:06:27 +01:00
|
|
|
override fun onBackPressed() {
|
|
|
|
if (binding.globalSearchRecycler.isVisible) {
|
|
|
|
binding.globalSearchInputLayout.clearSearch(true)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
super.onBackPressed()
|
|
|
|
}
|
|
|
|
|
2020-01-09 01:35:43 +01:00
|
|
|
override fun handleSeedReminderViewContinueButtonTapped() {
|
|
|
|
val intent = Intent(this, SeedActivity::class.java)
|
|
|
|
show(intent)
|
|
|
|
}
|
|
|
|
|
2022-01-14 06:56:15 +01:00
|
|
|
override fun onConversationClick(thread: ThreadRecord) {
|
|
|
|
val intent = Intent(this, ConversationActivityV2::class.java)
|
|
|
|
intent.putExtra(ConversationActivityV2.THREAD_ID, thread.threadId)
|
|
|
|
push(intent)
|
2019-12-17 15:15:13 +01:00
|
|
|
}
|
|
|
|
|
2022-01-14 06:56:15 +01:00
|
|
|
override fun onLongConversationClick(thread: ThreadRecord) {
|
New app theming (#913)
* feat: start new app theming feature
* feat: add some theming colours
* refactor: start refactoring themes and colours to use dynamic attributes
* feat: adding more colours and switching over default colours to be theme based instead of hard-coded or day/night specific
* refactor: take a look at ocean light and logo colour
* feat: global search colours for light and dark ocean
* feat: more styling
* feat: adding themes to conversation activity and refactoring the base theme to apply over the top of the activity's theme so it retains noActionBar etc
* feat: add dynamic accent color
* docs: add todo for changing how accent colour is applied
* feat: update new theming to use override primary style so that the regular colorAccent attribute can be used in existing layouts
* feat: coordinating styles across layouts, fixing up pinned icons and naming for conversation list items
* refactor: re-styling layouts to match new themes and attributes. Need to figure out action mode close button
* refactor: remove @color/text and replace with ?android:textColorPrimary to override in themes
* refactor: add context theme wrapper to bottom sheet dialog that references accent color
* fix: input bar bug fix and preference activity themes
* refactor: new settings menu options
* fix: crash for PNModeActivity.kt
refactor: move ordering in seed dialog to match designs, copy changes to match new settings menu
* feat: add new appearance settings activity
* refactor: title and VM changes
* fix: correct override
* feat: add theme appearance screen UI features and start VM implementation. re-add legacy theme utils to get default for migration
* fix: compile errors and missing themes from emoji features
* refactor: remove background shape alteration and old bottom sheet styles, re-add the theme mode attr
* feat: appearance screen wired up, just need to refresh theme
* feat: add theme state recreation and fix match system settings option
* refactor: add bottom margin
* feat: explore custom preference category
* feat: add the customized session theme for CorrectedPreferenceFragment
* feat: replace AppProtectionPreferenceFragment to extend ListSummaryPreferenceFragment
* refactor: change drawable style and remove explicit dividers
* refactor: remove divider in CorrectedPreferenceFragment
* feat: add theme state check on resume, might be jarring currently
* feat: add preference divider elements for settings menu
* refactor: settings menu redesigns
* refactor: change led preference to integer and refactor TextSecurePreferences.kt
* feat: add scroll parcel to save/restore hierarchy on restart with appearance changes
* feat: add the conversations blocked contacts and refactor preference order and copy
* feat: add blocked contacts activity, basic layout and vm
* feat: add unblock DB functions and storage protocol, start working on the DB query state flow, might have to just implement recipient on modified listener
* feat: add blocked contacts and notif recipient listeners
* feat: add recipient db reader
* feat: add blocked contact interactions and fix a theming crash for notifications
* feat: introduce better equals and hashcode implementations to recipient, replace home diff util content check with hashcode-based comparison
* feat: add settings menu vectors
* fix: preview compile error
* refactor: migrating settings menu to new designs
* feat: help menu
* refactor: simplify link opening
* refactor: remove space
* feat: refactor preferences and start theming for light mode options
* refactor: fixing dark and light modes with dialogs
* refactor: popup dialogs use proper themes now
* refactor: alert dialogs and media edit fragments use attribute references
* refactor: use input bar button attribute instead color control normal in vector tint
* refactor: transparency, dialog fixes, notification fix
* refactor: attrs and styles for buttons
* fix: use prominent button color on the outline button's border
* fix: fix the trash
* refactor: remove the appearance
* refactor: avatar placeholder generation, chips and element border styles
* refactor: use colors instead of style references
* refactor: theming changes to match designs and feedback
* refactor: the titles are bold and the categories are tertiary coloured now
* fix: appearance settings match preferences, search bottom bar uses themed attributes
* refactor: increase setting button height
* Update clear all data dialog
* Update seed dialog
* refactor: more qa feedback changes
* feat: add new TLs and fa-rIR TLs
* Update notification content dialog
* Fix message requests clear all button text color
* feat: re-add screenshot observer
* refactor: make send tint accent color
* feat: add unread background differences
* fix: change unread count indicator
* build: upgrade build numbers
* Fix message requests popupmenu background color
* fix: crash from attr reference in color attribute
* build: upgrade build number
* fix: message bubbles, thumbnail backgrounds, search bar visibility with input bar, attachment buttons
* fix: tertiary text for keyboard page search view
* fix: emoji overflow colour differences
* fix: reaction pill dialog background is now correct colour
* Add style to reactions tab layout
* fix: appearance activity reverting primary color at correct time
* fix: show call privacy warning every time instead of just once
* fix: gradient background(?) and audio autoplay disable
* fix: crash in all media containing documents
* fix: reaction dialog heading fixes
* Add style to reactions tab layout
* fix: remove gradient backgrounds
* fix: adding new reaction normal text attribute to try correct the tab layout
* fix: ocean dark unread/read colours
* build; update build number
* build: update build number
Co-authored-by: charles <charles@oxen.io>
2022-10-12 08:05:55 +02:00
|
|
|
val bottomSheet = ConversationOptionsBottomSheet(this)
|
2021-12-10 00:18:56 +01:00
|
|
|
bottomSheet.thread = thread
|
2020-09-07 02:57:25 +02:00
|
|
|
bottomSheet.onViewDetailsTapped = {
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
val userDetailsBottomSheet = UserDetailsBottomSheet()
|
2021-12-16 05:47:26 +01:00
|
|
|
val bundle = bundleOf(
|
|
|
|
UserDetailsBottomSheet.ARGUMENT_PUBLIC_KEY to thread.recipient.address.toString(),
|
|
|
|
UserDetailsBottomSheet.ARGUMENT_THREAD_ID to thread.threadId
|
|
|
|
)
|
2020-09-07 07:20:32 +02:00
|
|
|
userDetailsBottomSheet.arguments = bundle
|
2020-09-07 02:57:25 +02:00
|
|
|
userDetailsBottomSheet.show(supportFragmentManager, userDetailsBottomSheet.tag)
|
|
|
|
}
|
2023-02-14 06:43:55 +01:00
|
|
|
bottomSheet.onCopyConversationId = onCopyConversationId@{
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
if (!thread.recipient.isGroupRecipient && !thread.recipient.isLocalNumber) {
|
|
|
|
val clip = ClipData.newPlainText("Session ID", thread.recipient.address.toString())
|
|
|
|
val manager = getSystemService(PassphraseRequiredActionBarActivity.CLIPBOARD_SERVICE) as ClipboardManager
|
|
|
|
manager.setPrimaryClip(clip)
|
|
|
|
Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
|
|
|
|
}
|
|
|
|
else if (thread.recipient.isOpenGroupRecipient) {
|
|
|
|
val threadId = threadDb.getThreadIdIfExistsFor(thread.recipient) ?: return@onCopyConversationId Unit
|
|
|
|
val openGroup = DatabaseComponent.get(this@HomeActivity).lokiThreadDatabase().getOpenGroupChat(threadId) ?: return@onCopyConversationId Unit
|
|
|
|
|
|
|
|
val clip = ClipData.newPlainText("Community URL", openGroup.joinURL)
|
|
|
|
val manager = getSystemService(PassphraseRequiredActionBarActivity.CLIPBOARD_SERVICE) as ClipboardManager
|
|
|
|
manager.setPrimaryClip(clip)
|
|
|
|
Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
|
|
|
|
}
|
|
|
|
}
|
2020-08-21 07:06:39 +02:00
|
|
|
bottomSheet.onBlockTapped = {
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
if (!thread.recipient.isBlocked) {
|
|
|
|
blockConversation(thread)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bottomSheet.onUnblockTapped = {
|
2020-07-16 03:58:11 +02:00
|
|
|
bottomSheet.dismiss()
|
|
|
|
if (thread.recipient.isBlocked) {
|
|
|
|
unblockConversation(thread)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bottomSheet.onDeleteTapped = {
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
deleteConversation(thread)
|
|
|
|
}
|
2021-07-20 08:06:59 +02:00
|
|
|
bottomSheet.onSetMuteTapped = { muted ->
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
setConversationMuted(thread, muted)
|
|
|
|
}
|
|
|
|
bottomSheet.onNotificationTapped = {
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
NotificationUtils.showNotifyDialog(this, thread.recipient) { notifyType ->
|
|
|
|
setNotifyType(thread, notifyType)
|
|
|
|
}
|
|
|
|
}
|
2021-12-10 00:18:56 +01:00
|
|
|
bottomSheet.onPinTapped = {
|
|
|
|
bottomSheet.dismiss()
|
2022-01-14 06:56:15 +01:00
|
|
|
setConversationPinned(thread.threadId, true)
|
2021-12-10 00:18:56 +01:00
|
|
|
}
|
|
|
|
bottomSheet.onUnpinTapped = {
|
|
|
|
bottomSheet.dismiss()
|
2022-01-14 06:56:15 +01:00
|
|
|
setConversationPinned(thread.threadId, false)
|
2021-12-10 00:18:56 +01:00
|
|
|
}
|
2022-01-16 18:02:39 +01:00
|
|
|
bottomSheet.onMarkAllAsReadTapped = {
|
|
|
|
bottomSheet.dismiss()
|
|
|
|
markAllAsRead(thread)
|
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
bottomSheet.show(supportFragmentManager, bottomSheet.tag)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun blockConversation(thread: ThreadRecord) {
|
|
|
|
AlertDialog.Builder(this)
|
2021-03-03 01:33:35 +01:00
|
|
|
.setTitle(R.string.RecipientPreferenceActivity_block_this_contact_question)
|
|
|
|
.setMessage(R.string.RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact)
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
.setPositiveButton(R.string.RecipientPreferenceActivity_block) { dialog, _ ->
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
recipientDatabase.setBlocked(thread.recipient, true)
|
2022-01-14 06:56:15 +01:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2021-03-03 01:33:35 +01:00
|
|
|
dialog.dismiss()
|
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
2021-03-03 01:33:35 +01:00
|
|
|
}.show()
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private fun unblockConversation(thread: ThreadRecord) {
|
|
|
|
AlertDialog.Builder(this)
|
2021-03-03 01:33:35 +01:00
|
|
|
.setTitle(R.string.RecipientPreferenceActivity_unblock_this_contact_question)
|
|
|
|
.setMessage(R.string.RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact)
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
.setPositiveButton(R.string.RecipientPreferenceActivity_unblock) { dialog, _ ->
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
recipientDatabase.setBlocked(thread.recipient, false)
|
2022-01-14 06:56:15 +01:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2021-03-03 01:33:35 +01:00
|
|
|
dialog.dismiss()
|
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
2021-03-03 01:33:35 +01:00
|
|
|
}.show()
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
|
|
|
|
2021-07-20 08:06:59 +02:00
|
|
|
private fun setConversationMuted(thread: ThreadRecord, isMuted: Boolean) {
|
|
|
|
if (!isMuted) {
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
recipientDatabase.setMuted(thread.recipient, 0)
|
2022-01-14 06:56:15 +01:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2021-07-20 08:06:59 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
MuteDialog.show(this) { until: Long ->
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
recipientDatabase.setMuted(thread.recipient, until)
|
2022-01-14 06:56:15 +01:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2021-07-20 08:06:59 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun setNotifyType(thread: ThreadRecord, newNotifyType: Int) {
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
recipientDatabase.setNotifyType(thread.recipient, newNotifyType)
|
2022-01-14 06:56:15 +01:00
|
|
|
withContext(Dispatchers.Main) {
|
|
|
|
binding.recyclerView.adapter!!.notifyDataSetChanged()
|
2021-07-20 08:06:59 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-14 06:56:15 +01:00
|
|
|
private fun setConversationPinned(threadId: Long, pinned: Boolean) {
|
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
|
|
|
threadDb.setPinned(threadId, pinned)
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
homeViewModel.tryUpdateChannel()
|
2021-12-10 00:18:56 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-16 18:02:39 +01:00
|
|
|
private fun markAllAsRead(thread: ThreadRecord) {
|
|
|
|
ThreadUtils.queue {
|
|
|
|
threadDb.markAllAsRead(thread.threadId, thread.recipient.isOpenGroupRecipient)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-07-16 03:58:11 +02:00
|
|
|
private fun deleteConversation(thread: ThreadRecord) {
|
|
|
|
val threadID = thread.threadId
|
|
|
|
val recipient = thread.recipient
|
2022-01-14 06:56:15 +01:00
|
|
|
val message = if (recipient.isGroupRecipient) {
|
2021-10-04 09:51:19 +02:00
|
|
|
val group = groupDatabase.getGroup(recipient.address.toString()).orNull()
|
2022-03-04 07:46:39 +01:00
|
|
|
if (group != null && group.admins.map { it.toString() }.contains(textSecurePreferences.getLocalNumber())) {
|
2022-01-14 06:56:15 +01:00
|
|
|
"Because you are the creator of this group it will be deleted for everyone. This cannot be undone."
|
2021-01-13 06:13:49 +01:00
|
|
|
} else {
|
2022-01-14 06:56:15 +01:00
|
|
|
resources.getString(R.string.activity_home_leave_group_dialog_message)
|
2021-01-13 06:13:49 +01:00
|
|
|
}
|
|
|
|
} else {
|
2022-01-14 06:56:15 +01:00
|
|
|
resources.getString(R.string.activity_home_delete_conversation_dialog_message)
|
2021-01-13 06:13:49 +01:00
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
val dialog = AlertDialog.Builder(this)
|
2021-05-14 05:13:02 +02:00
|
|
|
dialog.setMessage(message)
|
2021-03-03 01:33:35 +01:00
|
|
|
dialog.setPositiveButton(R.string.yes) { _, _ ->
|
|
|
|
lifecycleScope.launch(Dispatchers.Main) {
|
|
|
|
val context = this@HomeActivity as Context
|
2021-05-14 05:13:02 +02:00
|
|
|
// Cancel any outstanding jobs
|
2021-10-04 09:51:19 +02:00
|
|
|
DatabaseComponent.get(context).sessionJobDatabase().cancelPendingMessageSendJobs(threadID)
|
2021-03-03 01:33:35 +01:00
|
|
|
// Send a leave group message if this is an active closed group
|
2021-10-04 09:51:19 +02:00
|
|
|
if (recipient.address.isClosedGroup && DatabaseComponent.get(context).groupDatabase().isActive(recipient.address.toGroupString())) {
|
2021-03-03 01:33:35 +01:00
|
|
|
var isClosedGroup: Boolean
|
|
|
|
var groupPublicKey: String?
|
|
|
|
try {
|
|
|
|
groupPublicKey = GroupUtil.doubleDecodeGroupID(recipient.address.toString()).toHexString()
|
2021-10-04 09:51:19 +02:00
|
|
|
isClosedGroup = DatabaseComponent.get(context).lokiAPIDatabase().isClosedGroup(groupPublicKey)
|
2021-03-03 01:33:35 +01:00
|
|
|
} catch (e: IOException) {
|
|
|
|
groupPublicKey = null
|
|
|
|
isClosedGroup = false
|
|
|
|
}
|
|
|
|
if (isClosedGroup) {
|
2021-03-26 05:46:37 +01:00
|
|
|
MessageSender.explicitLeave(groupPublicKey!!, false)
|
2021-03-03 01:33:35 +01:00
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
2021-05-14 05:13:02 +02:00
|
|
|
// Delete the conversation
|
2021-10-04 09:51:19 +02:00
|
|
|
val v2OpenGroup = DatabaseComponent.get(this@HomeActivity).lokiThreadDatabase().getOpenGroupChat(threadID)
|
2021-05-21 07:02:34 +02:00
|
|
|
if (v2OpenGroup != null) {
|
2021-05-19 03:12:29 +02:00
|
|
|
OpenGroupManager.delete(v2OpenGroup.server, v2OpenGroup.room, this@HomeActivity)
|
2021-05-14 05:13:02 +02:00
|
|
|
} else {
|
2022-01-14 06:56:15 +01:00
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
2021-10-04 09:51:19 +02:00
|
|
|
threadDb.deleteConversation(threadID)
|
2021-05-20 05:35:43 +02:00
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
}
|
2021-05-14 05:13:02 +02:00
|
|
|
// Update the badge count
|
|
|
|
ApplicationContext.getInstance(context).messageNotifier.updateNotification(context)
|
2021-03-03 01:33:35 +01:00
|
|
|
// Notify the user
|
|
|
|
val toastMessage = if (recipient.isGroupRecipient) R.string.MessageRecord_left_group else R.string.activity_home_conversation_deleted_message
|
|
|
|
Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show()
|
|
|
|
}
|
|
|
|
}
|
2020-07-16 03:58:11 +02:00
|
|
|
dialog.setNegativeButton(R.string.no) { _, _ ->
|
|
|
|
// Do nothing
|
|
|
|
}
|
|
|
|
dialog.create().show()
|
2019-12-17 15:15:13 +01:00
|
|
|
}
|
|
|
|
|
2020-01-06 02:07:55 +01:00
|
|
|
private fun openSettings() {
|
2020-01-06 04:26:52 +01:00
|
|
|
val intent = Intent(this, SettingsActivity::class.java)
|
2021-03-01 07:16:15 +01:00
|
|
|
show(intent, isForResult = true)
|
2020-01-06 02:07:55 +01:00
|
|
|
}
|
|
|
|
|
2022-03-04 07:46:39 +01:00
|
|
|
private fun showMessageRequests() {
|
|
|
|
val intent = Intent(this, MessageRequestsActivity::class.java)
|
|
|
|
push(intent)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun hideMessageRequests() {
|
|
|
|
AlertDialog.Builder(this)
|
|
|
|
.setMessage("Hide message requests?")
|
|
|
|
.setPositiveButton(R.string.yes) { _, _ ->
|
|
|
|
textSecurePreferences.setHasHiddenMessageRequests()
|
|
|
|
setupMessageRequestsBanner()
|
Performance improvements and bug fixes (#869)
* refactor: fail on testSnode instead of recursively using up snode list. add call timeout on http client
* refactor: refactoring batch message receives and pollers
* refactor: reduce thread utils pool count to a 2 thread fixed pool. Do a check against pubkey instead of room names for oxenHostedOpenGroup
* refactor: caching lib with potential loader fixes and no-cache for giphy
* refactor: remove store and instead use ConcurrentHashMap with a backing update coroutine
* refactor: queue trim thread jobs instead of add every message processed
* fix: wrapping auth token and initial sync for open groups in a threadutils queued runnable, getting initial sync times down
* fix: fixing the user contacts cache in ConversationAdapter.kt
* refactor: improve polling and initial sync, move group joins from config messages into a background job fetching image.
* refactor: improving the job queuing for open groups, replacing placeholder avatar generation with a custom glide loader and archiving initial sync of open groups
* feat: add OpenGroupDeleteJob.kt
* feat: add open group delete job to process deletions after batch adding
* feat: add vacuum and fix job queue re-adding jobs forever, only try to set message hash values in DB if they have changed
* refactor: remove redundant inflation for profile image views throughout app
* refactor(wip): reducing layout inflation and starting to refactor the open group deletion issues taking a long time
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* refactor(wip): refactoring group deletion to not iterate through and delete messages individually
* fix: group deletion optimisation
* build: bump build number
* build: bump build number and fix batch message receive retry logic
* fix: clear out open group deletes
* fix: update visible ConversationAdapter.kt binding for initial contact fetching and better traces for debugging background jobs
* fix: add in check for / force sync latest encryption key pair from linked devices if we already have that closed group
* Rename .java to .kt
* refactor: change MmsDatabase to kotlin to make list operations easier
* fix: nullable type
* fix: compilation issues and constants in .kt instead of .java
* fix: bug fix expiration timer on closed group recipient
* feat: use the job queue properly across executors
* feat: start on open group dispatcher-specific logic, probably a queue factory based on openGroupId if that is the same across new message and deletion jobs to ensure consistent entry and removal
* refactor: removing redundant code and fixing jobqueue per opengroup
* fix: allow attachments in note to self
* fix: make the minWidth in quote view bind max of text / title and body, wrapped ?
* fix: fixing up layouts and code view layouts
* fix: remove TODO, remove timestamp binding
* feat: fix view logic, avatars and padding, downloading attachments lazily (on bind), fixing potential crash, add WindowDebouncer.kt
* fix: NPE on viewModel recipient from removed thread while tearing down the Recipient observer in ConversationActivityV2.kt
* refactor: replace conversation notification debouncer handler with handlerthread, same as conversation list debouncer
* refactor: UI for groups and poller improvements
* fix: revert some changes in poller
* feat: add header back in for message requests
* refactor: remove Trace calls, add more conditions to the HomeDiffUtil for updating more efficiently
* feat: try update the home adapter if we get a profile picture modified event
* feat: bump build numbers
* fix: try to start with list in homeViewModel if we don't have already, render quotes to be width of attachment slide view instead of fixed
* fix: set channel to be conflated instead of no buffer
* fix: set unreads based off last local user message vs incrementing unreads to be all amount
* feat: add profile update flag, update build number
* fix: link preview thumbnails download on bind
* fix: centercrop placeholder in glide request
* feat: recycle the contact selection list and profile image in unbind
* fix: try to prevent user KP crash at weird times
* fix: remove additional log, improve attachment download success rate, fix share logs dialog issue
2022-06-08 09:12:34 +02:00
|
|
|
homeViewModel.tryUpdateChannel()
|
2022-03-04 07:46:39 +01:00
|
|
|
}
|
|
|
|
.setNegativeButton(R.string.no) { _, _ ->
|
|
|
|
// Do nothing
|
|
|
|
}
|
|
|
|
.create().show()
|
|
|
|
}
|
|
|
|
|
2022-09-30 05:32:07 +02:00
|
|
|
private fun showNewConversation() {
|
|
|
|
NewConversationFragment().show(supportFragmentManager, "NewConversationFragment")
|
2020-01-31 03:57:24 +01:00
|
|
|
}
|
|
|
|
|
2019-12-18 15:25:23 +01:00
|
|
|
// endregion
|
2021-05-20 07:41:16 +02:00
|
|
|
}
|