add possibility to un/lock accounts
This commit is contained in:
parent
361352c2e1
commit
3628b8431d
5 changed files with 42 additions and 5 deletions
|
@ -57,6 +57,7 @@ private const val AVATAR_FILE_NAME = "avatar.png"
|
|||
|
||||
private const val KEY_OLD_DISPLAY_NAME = "OLD_DISPLAY_NAME"
|
||||
private const val KEY_OLD_NOTE = "OLD_NOTE"
|
||||
private const val KEY_OLD_LOCKED = "OLD_LOCKED"
|
||||
private const val KEY_IS_SAVING = "IS_SAVING"
|
||||
private const val KEY_CURRENTLY_PICKING = "CURRENTLY_PICKING"
|
||||
private const val KEY_AVATAR_CHANGED = "AVATAR_CHANGED"
|
||||
|
@ -73,6 +74,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
|
||||
private var oldDisplayName: String? = null
|
||||
private var oldNote: String? = null
|
||||
private var oldLocked: Boolean = false
|
||||
private var isSaving: Boolean = false
|
||||
private var currentlyPicking: PickType = PickType.NOTHING
|
||||
private var avatarChanged: Boolean = false
|
||||
|
@ -101,6 +103,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
savedInstanceState?.let {
|
||||
oldDisplayName = it.getString(KEY_OLD_DISPLAY_NAME)
|
||||
oldNote = it.getString(KEY_OLD_NOTE)
|
||||
oldLocked = it.getBoolean(KEY_OLD_LOCKED)
|
||||
isSaving = it.getBoolean(KEY_IS_SAVING)
|
||||
currentlyPicking = it.getSerializable(KEY_CURRENTLY_PICKING) as PickType
|
||||
avatarChanged = it.getBoolean(KEY_AVATAR_CHANGED)
|
||||
|
@ -137,10 +140,12 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
val me = response.body()
|
||||
oldDisplayName = me!!.displayName
|
||||
oldNote = me.note.toString()
|
||||
|
||||
oldLocked = me.locked
|
||||
|
||||
displayNameEditText.setText(oldDisplayName)
|
||||
noteEditText.setText(oldNote)
|
||||
lockedCheckBox.isChecked = oldLocked
|
||||
|
||||
if (!avatarChanged) {
|
||||
Picasso.with(avatarPreview.context)
|
||||
.load(me.avatar)
|
||||
|
@ -165,6 +170,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
outState.run {
|
||||
putString(KEY_OLD_DISPLAY_NAME, oldDisplayName)
|
||||
putString(KEY_OLD_NOTE, oldNote)
|
||||
putBoolean(KEY_OLD_LOCKED, oldLocked)
|
||||
putBoolean(KEY_IS_SAVING, isSaving)
|
||||
putSerializable(KEY_CURRENTLY_PICKING, currentlyPicking)
|
||||
putBoolean(KEY_AVATAR_CHANGED, avatarChanged)
|
||||
|
@ -259,6 +265,13 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
RequestBody.create(MultipartBody.FORM, newNote)
|
||||
}
|
||||
|
||||
val newLocked = lockedCheckBox.isChecked
|
||||
val locked = if (oldLocked == newLocked) {
|
||||
null
|
||||
} else {
|
||||
RequestBody.create(MultipartBody.FORM, newLocked.toString())
|
||||
}
|
||||
|
||||
val avatar = if (avatarChanged) {
|
||||
val avatarBody = RequestBody.create(MediaType.parse("image/png"), getCacheFileForName(AVATAR_FILE_NAME))
|
||||
MultipartBody.Part.createFormData("avatar", getFileName(), avatarBody)
|
||||
|
@ -273,13 +286,13 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
|||
null
|
||||
}
|
||||
|
||||
if (displayName == null && note == null && avatar == null && header == null) {
|
||||
if (displayName == null && note == null && locked == null && avatar == null && header == null) {
|
||||
/** if nothing has changed, there is no need to make a network request */
|
||||
finish()
|
||||
return
|
||||
}
|
||||
|
||||
mastodonApi.accountUpdateCredentials(displayName, note, avatar, header).enqueue(object : Callback<Account> {
|
||||
mastodonApi.accountUpdateCredentials(displayName, note, locked, avatar, header).enqueue(object : Callback<Account> {
|
||||
override fun onResponse(call: Call<Account>, response: Response<Account>) {
|
||||
if (!response.isSuccessful) {
|
||||
onSaveFailure()
|
||||
|
|
|
@ -69,7 +69,6 @@ import javax.inject.Inject;
|
|||
|
||||
import dagger.android.AndroidInjector;
|
||||
import dagger.android.DispatchingAndroidInjector;
|
||||
import dagger.android.support.AndroidSupportInjection;
|
||||
import dagger.android.support.HasSupportFragmentInjector;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
|
@ -457,7 +456,6 @@ public class MainActivity extends BaseActivity implements ActionButtonActivity,
|
|||
.setTitle(R.string.action_logout)
|
||||
.setMessage(getString(R.string.action_logout_confirm, activeAccount.getFullName()))
|
||||
.setPositiveButton(android.R.string.yes, (dialog, which) -> {
|
||||
;
|
||||
|
||||
NotificationHelper.deleteNotificationChannelsForAccount(accountManager.getActiveAccount(), MainActivity.this);
|
||||
|
||||
|
@ -521,6 +519,8 @@ public class MainActivity extends BaseActivity implements ActionButtonActivity,
|
|||
.withSelectable(false)
|
||||
.withIcon(GoogleMaterial.Icon.gmd_person_add);
|
||||
drawer.addItemAtPosition(followRequestsItem, 3);
|
||||
} else {
|
||||
drawer.removeItem(DRAWER_ITEM_FOLLOW_REQUESTS);
|
||||
}
|
||||
|
||||
updateProfiles();
|
||||
|
|
|
@ -142,6 +142,7 @@ public interface MastodonApi {
|
|||
Call<Account> accountUpdateCredentials(
|
||||
@Nullable @Part(value="display_name") RequestBody displayName,
|
||||
@Nullable @Part(value="note") RequestBody note,
|
||||
@Nullable @Part(value="locked") RequestBody locked,
|
||||
@Nullable @Part MultipartBody.Part avatar,
|
||||
@Nullable @Part MultipartBody.Part header);
|
||||
|
||||
|
|
|
@ -112,6 +112,27 @@
|
|||
|
||||
</android.support.design.widget.TextInputLayout>
|
||||
|
||||
<android.support.v7.widget.AppCompatCheckBox
|
||||
android:id="@+id/lockedCheckBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:paddingStart="8dp"
|
||||
android:text="@string/lock_account_label"
|
||||
android:textSize="?attr/status_text_medium" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:paddingStart="40dp"
|
||||
android:text="@string/lock_account_label_description"
|
||||
android:textSize="?attr/status_text_small" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
|
|
@ -286,5 +286,7 @@
|
|||
<string name="hint_describe_for_visually_impaired">Describe for visually impaired</string>
|
||||
<string name="action_set_caption">Set caption</string>
|
||||
<string name="action_remove_media">Remove</string>
|
||||
<string name="lock_account_label">Lock account</string>
|
||||
<string name="lock_account_label_description">Requires you to manually approve followers</string>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue