Skip to content

Commit b196b5d

Browse files
committed
[add] ユーザ名やメールアドレスを更新できるようにした
1 parent a2bab4a commit b196b5d

12 files changed

Lines changed: 226 additions & 31 deletions

File tree

.idea/assetWizardSettings.xml

Lines changed: 182 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/kotlin/com/cyder/android/syncpod/api/SyncPodApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ interface SyncPodApi {
2020
@POST("users")
2121
fun signUp(@Body user: SignUp): Single<Response>
2222

23+
@POST("users")
24+
fun editUser(@Query("email") email: String, @Query("name") name: String): Single<Response>
25+
2326
@GET("joined_rooms")
2427
fun getEnteredRooms(@Header("Authorization") token: String): Single<Response>
2528

app/src/main/kotlin/com/cyder/android/syncpod/repository/UserDataRepository.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ class UserDataRepository @Inject constructor(
4141
.toCompletable()
4242
}
4343

44+
override fun editUser(email: String, name: String): Completable {
45+
return editUserValidate(email, name)
46+
.andThen(syncPodApi.editUser(email, name))
47+
.subscribeOn(Schedulers.computation())
48+
.toCompletable()
49+
}
50+
4451
override fun getAccessToken(): Single<String> {
4552
val token = sharedPreferences.getString(STATE_USER_TOKEN, null)
4653
return Single.create { emitter ->
@@ -97,6 +104,16 @@ class UserDataRepository @Inject constructor(
97104
}
98105
}
99106

107+
private fun editUserValidate(email: String, name: String): Completable {
108+
return Completable.create { emitter ->
109+
if (email.isBlank() || name.isBlank()) {
110+
emitter.onError(NotFilledFormsException())
111+
} else {
112+
emitter.onComplete()
113+
}
114+
}
115+
}
116+
100117
private fun saveSharedPreferences(user: User) {
101118
sharedPreferences.edit {
102119
putString(STATE_USER_TOKEN, user.accessToken)

app/src/main/kotlin/com/cyder/android/syncpod/repository/UserRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ interface UserRepository {
1313
fun signIn(email: String, password: String, isAgreeTerms: Boolean): Completable
1414
@CheckResult
1515
fun signUp(email: String, name: String, password:String, passwordConfirm: String, isAgreeTerms: Boolean): Completable
16+
@CheckResult
17+
fun editUser(email: String, name: String): Completable
1618
fun getAccessToken(): Single<String>
1719
fun getMyselfId(): Single<Int>
1820
}
Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.cyder.android.syncpod.viewmodel
22

33
import android.databinding.ObservableField
4-
import android.os.Build
5-
import com.cyder.android.syncpod.repository.UserReportRepository
4+
import com.cyder.android.syncpod.R
5+
import com.cyder.android.syncpod.repository.UserRepository
66
import com.cyder.android.syncpod.view.helper.Navigator
77
import com.cyder.android.syncpod.viewmodel.base.ActivityViewModel
88
import javax.inject.Inject
@@ -13,8 +13,10 @@ import javax.inject.Inject
1313

1414
class SettingActivityViewModel @Inject constructor(
1515
private val navigator: Navigator,
16-
private val userReportRepository: UserReportRepository
16+
private val repository: UserRepository
1717
) : ActivityViewModel() {
18+
var mailAddress: ObservableField<String?> = ObservableField()
19+
var name: ObservableField<String?> = ObservableField()
1820
var callback: SnackbarCallback? = null
1921
var message: ObservableField<String> = ObservableField()
2022

@@ -40,29 +42,13 @@ class SettingActivityViewModel @Inject constructor(
4042
fun onBackButtonClicked() = navigator.closeActivity()
4143

4244
fun onSubmit() {
43-
// Single.create<String> { emitter ->
44-
// if ((message.get() ?: "").isNotBlank()) {
45-
// emitter.onSuccess(message.get())
46-
// } else {
47-
// emitter.onError(NotFilledFormsException())
48-
// }
49-
// }
50-
// .map { createDetailMessage(it) }
51-
// .flatMapCompletable { userReportRepository.sendUserReport(it) }
52-
// .subscribe({
53-
// navigator.closeActivity()
54-
// }, { error ->
55-
// when (error) {
56-
// is NotFilledFormsException -> callback?.onFailed(R.string.form_not_filled)
57-
// else -> callback?.onFailed(R.string.network_error)
58-
// }
59-
// })
60-
}
61-
62-
private fun createDetailMessage(message: String): String {
63-
return """$message
64-
65-
----------------------------------------
66-
端末: Android ${Build.VERSION.RELEASE}"""
45+
repository.editUser(
46+
mailAddress.get() ?: "",
47+
name.get() ?: ""
48+
).subscribe({
49+
navigator.navigateToTopActivity()
50+
}, {
51+
callback?.onFailed(R.string.sign_up_used_email)
52+
})
6753
}
6854
}
831 Bytes
Loading
552 Bytes
Loading
1.11 KB
Loading
1.83 KB
Loading

app/src/main/res/layout/activity_setting.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@
6767
android:layout_height="55dp"
6868
android:layout_marginBottom="20dp"
6969
android:layout_marginTop="20dp"
70-
android:background="@color/appGreen"
70+
android:background="@color/appBlue"
7171
android:onClick="@{(v) -> viewModel.onSubmit()}"
72-
android:text="@string/send_button"
72+
android:text="@string/update_button"
7373
android:textColor="@color/appWhite"
7474
android:textSize="18sp" />
7575
</LinearLayout>

0 commit comments

Comments
 (0)