-
-
Notifications
You must be signed in to change notification settings - Fork 6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3252871
commit 28310a8
Showing
24 changed files
with
1,232 additions
and
567 deletions.
There are no files selected for viewing
159 changes: 75 additions & 84 deletions
159
app/src/main/java/org/thoughtcrime/securesms/profiles/edit/EditProfileFragment.java
Large diffs are not rendered by default.
Oops, something went wrong.
46 changes: 46 additions & 0 deletions
46
.../main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package org.thoughtcrime.securesms.profiles.edit.pnp | ||
|
||
import androidx.fragment.app.viewModels | ||
import org.thoughtcrime.securesms.R | ||
import org.thoughtcrime.securesms.components.settings.DSLConfiguration | ||
import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter | ||
import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment | ||
import org.thoughtcrime.securesms.components.settings.DSLSettingsText | ||
import org.thoughtcrime.securesms.components.settings.configure | ||
import org.thoughtcrime.securesms.util.FeatureFlags | ||
import org.thoughtcrime.securesms.util.LifecycleDisposable | ||
|
||
/** | ||
* Allows the user to select who can see their phone number during registration. | ||
*/ | ||
class WhoCanSeeMyPhoneNumberFragment : DSLSettingsFragment(titleId = R.string.WhoCanSeeMyPhoneNumberFragment__who_can_find_me_by_number) { | ||
|
||
private val viewModel: WhoCanSeeMyPhoneNumberViewModel by viewModels() | ||
private val lifecycleDisposable = LifecycleDisposable() | ||
|
||
override fun bindAdapter(adapter: DSLSettingsAdapter) { | ||
require(FeatureFlags.phoneNumberPrivacy()) | ||
|
||
lifecycleDisposable += viewModel.state.subscribe { | ||
adapter.submitList(getConfiguration(it).toMappingModelList()) | ||
} | ||
} | ||
|
||
private fun getConfiguration(state: WhoCanSeeMyPhoneNumberState): DSLConfiguration { | ||
return configure { | ||
radioPref( | ||
title = DSLSettingsText.from(R.string.PhoneNumberPrivacy_everyone), | ||
summary = DSLSettingsText.from(R.string.WhoCanSeeMyPhoneNumberFragment__anyone_who_has), | ||
isChecked = state == WhoCanSeeMyPhoneNumberState.EVERYONE, | ||
onClick = { viewModel.onEveryoneCanSeeMyPhoneNumberSelected() } | ||
) | ||
|
||
radioPref( | ||
title = DSLSettingsText.from(R.string.PhoneNumberPrivacy_nobody), | ||
summary = DSLSettingsText.from(R.string.WhoCanSeeMyPhoneNumberFragment__nobody_on_signal), | ||
isChecked = state == WhoCanSeeMyPhoneNumberState.NOBODY, | ||
onClick = { viewModel.onNobodyCanSeeMyPhoneNumberSelected() } | ||
) | ||
} | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
...src/main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberState.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package org.thoughtcrime.securesms.profiles.edit.pnp | ||
|
||
enum class WhoCanSeeMyPhoneNumberState { | ||
EVERYONE, | ||
NOBODY | ||
} |
27 changes: 27 additions & 0 deletions
27
...main/java/org/thoughtcrime/securesms/profiles/edit/pnp/WhoCanSeeMyPhoneNumberViewModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package org.thoughtcrime.securesms.profiles.edit.pnp | ||
|
||
import androidx.lifecycle.ViewModel | ||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers | ||
import io.reactivex.rxjava3.core.Flowable | ||
import io.reactivex.rxjava3.disposables.CompositeDisposable | ||
import org.thoughtcrime.securesms.util.rx.RxStore | ||
|
||
class WhoCanSeeMyPhoneNumberViewModel : ViewModel() { | ||
|
||
private val store = RxStore(WhoCanSeeMyPhoneNumberState.EVERYONE) | ||
private val disposables = CompositeDisposable() | ||
|
||
val state: Flowable<WhoCanSeeMyPhoneNumberState> = store.stateFlowable.subscribeOn(AndroidSchedulers.mainThread()) | ||
|
||
fun onEveryoneCanSeeMyPhoneNumberSelected() { | ||
store.update { WhoCanSeeMyPhoneNumberState.EVERYONE } | ||
} | ||
|
||
fun onNobodyCanSeeMyPhoneNumberSelected() { | ||
store.update { WhoCanSeeMyPhoneNumberState.NOBODY } | ||
} | ||
|
||
override fun onCleared() { | ||
disposables.clear() | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
app/src/main/java/org/thoughtcrime/securesms/profiles/manage/CopyButton.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package org.thoughtcrime.securesms.profiles.manage | ||
|
||
import org.thoughtcrime.securesms.databinding.CopyButtonBinding | ||
import org.thoughtcrime.securesms.util.adapter.mapping.BindingFactory | ||
import org.thoughtcrime.securesms.util.adapter.mapping.BindingViewHolder | ||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter | ||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel | ||
|
||
/** | ||
* Outlined button that allows the user to copy a piece of data. | ||
*/ | ||
object CopyButton { | ||
fun register(mappingAdapter: MappingAdapter) { | ||
mappingAdapter.registerFactory(Model::class.java, BindingFactory(::ViewHolder, CopyButtonBinding::inflate)) | ||
} | ||
|
||
class Model( | ||
val text: CharSequence, | ||
val onClick: (Model) -> Unit | ||
) : MappingModel<Model> { | ||
override fun areItemsTheSame(newItem: Model): Boolean = true | ||
|
||
override fun areContentsTheSame(newItem: Model): Boolean = text == newItem.text | ||
} | ||
|
||
private class ViewHolder(binding: CopyButtonBinding) : BindingViewHolder<Model, CopyButtonBinding>(binding) { | ||
override fun bind(model: Model) { | ||
binding.root.text = model.text | ||
binding.root.setOnClickListener { model.onClick(model) } | ||
} | ||
} | ||
} |
Oops, something went wrong.