Skip to content

Commit 956d4f5

Browse files
committed
add SetStatusMessageBottomSheet
Signed-off-by: alperozturk <[email protected]>
1 parent 7c7f464 commit 956d4f5

File tree

8 files changed

+30
-61
lines changed

8 files changed

+30
-61
lines changed

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/SetStatusMessageBottomSheet.kt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import androidx.lifecycle.lifecycleScope
2323
import androidx.recyclerview.widget.LinearLayoutManager
2424
import com.nextcloud.android.sso.helper.SingleAccountHelper
2525
import com.owncloud.android.lib.common.utils.Log_OC
26+
import com.owncloud.android.lib.resources.users.ClearAt
27+
import com.owncloud.android.lib.resources.users.PredefinedStatus
2628
import com.owncloud.android.lib.resources.users.Status
2729
import com.owncloud.android.lib.resources.users.StatusType
2830
import com.vanniktech.emoji.EmojiManager
@@ -33,8 +35,6 @@ import com.vanniktech.emoji.installForceSingleEmoji
3335
import it.niedermann.owncloud.notes.R
3436
import it.niedermann.owncloud.notes.accountswitcher.adapter.PredefinedStatusClickListener
3537
import it.niedermann.owncloud.notes.accountswitcher.adapter.PredefinedStatusListAdapter
36-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedClearAt
37-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
3838
import it.niedermann.owncloud.notes.accountswitcher.repository.UserStatusRepository
3939
import it.niedermann.owncloud.notes.branding.BrandedBottomSheetDialogFragment
4040
import it.niedermann.owncloud.notes.branding.BrandingUtil
@@ -99,7 +99,7 @@ class SetStatusMessageBottomSheet :
9999
}
100100
}
101101

102-
private fun initPredefinedStatusAdapter(predefinedStatus: ArrayList<ExposedPredefinedStatus>) {
102+
private fun initPredefinedStatusAdapter(predefinedStatus: ArrayList<PredefinedStatus>) {
103103
adapter = PredefinedStatusListAdapter(this, requireContext())
104104
Log_OC.d(TAG, "PredefinedStatusListAdapter initialized")
105105
adapter.list = predefinedStatus
@@ -159,11 +159,14 @@ class SetStatusMessageBottomSheet :
159159
}
160160

161161
override fun applyBrand(color: Int) {
162-
val viewThemeUtils = BrandingUtil.of(color, requireContext())
163-
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(binding.clearStatus)
164-
viewThemeUtils.material.colorMaterialButtonPrimaryTonal(binding.setStatus)
165-
viewThemeUtils.material.colorTextInputLayout(binding.customStatusInputContainer)
166-
viewThemeUtils.platform.themeDialog(binding.root)
162+
BrandingUtil.of(color, requireContext()).run {
163+
platform.themeDialog(binding.root)
164+
material.run {
165+
colorMaterialButtonPrimaryBorderless(binding.clearStatus)
166+
colorMaterialButtonPrimaryTonal(binding.setStatus)
167+
colorTextInputLayout(binding.customStatusInputContainer)
168+
}
169+
}
167170
}
168171

169172
private fun updateCurrentStatusViews(it: Status) {
@@ -235,7 +238,7 @@ class SetStatusMessageBottomSheet :
235238
}
236239
}
237240

238-
private fun clearAtToUnixTime(clearAt: ExposedClearAt?): Long = when {
241+
private fun clearAtToUnixTime(clearAt: ClearAt?): Long = when {
239242
clearAt?.type == CLEAR_AT_TYPE_PERIOD -> {
240243
System.currentTimeMillis() / ONE_SECOND_IN_MILLIS + clearAt.time.toLong()
241244
}
@@ -302,9 +305,9 @@ class SetStatusMessageBottomSheet :
302305
return binding.root
303306
}
304307

305-
override fun onClick(predefinedStatus: ExposedPredefinedStatus) {
308+
override fun onClick(predefinedStatus: PredefinedStatus) {
306309
selectedPredefinedMessageId = predefinedStatus.id
307-
clearAt = clearAtToUnixTime(predefinedStatus.exposedClearAt)
310+
clearAt = clearAtToUnixTime(predefinedStatus.clearAt)
308311
binding.emoji.setText(predefinedStatus.icon)
309312
binding.customStatusInput.text?.clear()
310313
binding.customStatusInput.text?.append(predefinedStatus.message)
@@ -313,7 +316,7 @@ class SetStatusMessageBottomSheet :
313316
binding.clearStatusAfterSpinner.visibility = View.VISIBLE
314317
binding.clearStatusMessageTextView.text = getString(R.string.clear_status_after)
315318

316-
val clearAt = predefinedStatus.exposedClearAt
319+
val clearAt = predefinedStatus.clearAt
317320
if (clearAt == null) {
318321
binding.clearStatusAfterSpinner.setSelection(0)
319322
} else {
@@ -325,7 +328,7 @@ class SetStatusMessageBottomSheet :
325328
setClearStatusAfterValue(binding.clearStatusAfterSpinner.selectedItemPosition)
326329
}
327330

328-
private fun updateClearAtViewsForPeriod(clearAt: ExposedClearAt) {
331+
private fun updateClearAtViewsForPeriod(clearAt: ClearAt) {
329332
when (clearAt.time) {
330333
"1800" -> binding.clearStatusAfterSpinner.setSelection(POS_HALF_AN_HOUR)
331334
"3600" -> binding.clearStatusAfterSpinner.setSelection(POS_AN_HOUR)
@@ -334,7 +337,7 @@ class SetStatusMessageBottomSheet :
334337
}
335338
}
336339

337-
private fun updateClearAtViewsForEndOf(clearAt: ExposedClearAt) {
340+
private fun updateClearAtViewsForEndOf(clearAt: ClearAt) {
338341
when (clearAt.time) {
339342
"day" -> binding.clearStatusAfterSpinner.setSelection(POS_TODAY)
340343
"week" -> binding.clearStatusAfterSpinner.setSelection(POS_END_OF_WEEK)

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/adapter/PredefinedStatusClickListener.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88
package it.niedermann.owncloud.notes.accountswitcher.adapter
99

10-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
10+
import com.owncloud.android.lib.resources.users.PredefinedStatus
1111

1212
interface PredefinedStatusClickListener {
13-
fun onClick(predefinedStatus: ExposedPredefinedStatus)
13+
fun onClick(predefinedStatus: PredefinedStatus)
1414
}

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/adapter/PredefinedStatusListAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import android.content.Context
1111
import android.view.LayoutInflater
1212
import android.view.ViewGroup
1313
import androidx.recyclerview.widget.RecyclerView
14-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
14+
import com.owncloud.android.lib.resources.users.PredefinedStatus
1515
import it.niedermann.owncloud.notes.databinding.PredefinedStatusBinding
1616

1717
class PredefinedStatusListAdapter(private val clickListener: PredefinedStatusClickListener, val context: Context) :
1818
RecyclerView.Adapter<PredefinedStatusViewHolder>() {
19-
internal var list: List<ExposedPredefinedStatus> = emptyList()
19+
internal var list: List<PredefinedStatus> = emptyList()
2020

2121
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PredefinedStatusViewHolder {
2222
val itemBinding = PredefinedStatusBinding.inflate(LayoutInflater.from(parent.context), parent, false)

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/adapter/PredefinedStatusViewHolder.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,33 @@ package it.niedermann.owncloud.notes.accountswitcher.adapter
99

1010
import android.content.Context
1111
import androidx.recyclerview.widget.RecyclerView
12+
import com.owncloud.android.lib.resources.users.PredefinedStatus
1213
import it.niedermann.owncloud.notes.R
13-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
1414
import it.niedermann.owncloud.notes.databinding.PredefinedStatusBinding
1515
import it.niedermann.owncloud.notes.shared.util.DisplayUtils
1616

1717
private const val ONE_SECOND_IN_MILLIS = 1000
1818

1919
class PredefinedStatusViewHolder(private val binding: PredefinedStatusBinding) : RecyclerView.ViewHolder(binding.root) {
2020

21-
fun bind(status: ExposedPredefinedStatus, clickListener: PredefinedStatusClickListener, context: Context) {
21+
fun bind(status: PredefinedStatus, clickListener: PredefinedStatusClickListener, context: Context) {
2222
binding.root.setOnClickListener { clickListener.onClick(status) }
2323
binding.icon.text = status.icon
2424
binding.name.text = status.message
2525

26-
if (status.exposedClearAt == null) {
26+
if (status.clearAt == null) {
2727
binding.clearAt.text = context.getString(R.string.dontClear)
2828
} else {
29-
val clearAt = status.exposedClearAt
30-
if (clearAt.type == "period") {
29+
val clearAt = status.clearAt
30+
if (clearAt?.type == "period") {
3131
binding.clearAt.text = DisplayUtils.getRelativeTimestamp(
3232
context,
3333
System.currentTimeMillis() + clearAt.time.toInt() * ONE_SECOND_IN_MILLIS,
3434
true
3535
)
3636
} else {
3737
// end-of
38-
if (clearAt.time == "day") {
38+
if (clearAt?.time == "day") {
3939
binding.clearAt.text = context.getString(R.string.today)
4040
}
4141
}

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/model/ExposedPredefinedStatus.kt

Lines changed: 0 additions & 32 deletions
This file was deleted.

app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/repository/UserStatusRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package it.niedermann.owncloud.notes.accountswitcher.repository
33
import android.content.Context
44
import com.nextcloud.android.sso.model.SingleSignOnAccount
55
import com.owncloud.android.lib.common.utils.Log_OC
6+
import com.owncloud.android.lib.resources.users.PredefinedStatus
67
import com.owncloud.android.lib.resources.users.Status
78
import com.owncloud.android.lib.resources.users.StatusType
8-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
99
import it.niedermann.owncloud.notes.persistence.ApiProvider
1010
import kotlinx.coroutines.Dispatchers
1111
import kotlinx.coroutines.withContext
@@ -20,7 +20,7 @@ class UserStatusRepository(
2020

2121
private val api by lazy { ApiProvider.getInstance().getUserStatusAPI(context, ssoAccount) }
2222

23-
suspend fun fetchPredefinedStatuses(): ArrayList<ExposedPredefinedStatus> = withContext(Dispatchers.IO) {
23+
suspend fun fetchPredefinedStatuses(): ArrayList<PredefinedStatus> = withContext(Dispatchers.IO) {
2424
try {
2525
val response = api.fetchPredefinedStatuses().execute()
2626
if (response.isSuccessful) {

app/src/main/java/it/niedermann/owncloud/notes/persistence/ApiProvider.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ private synchronized NextcloudAPI getNextcloudAPI(@NonNull Context context, @Non
129129
final var nextcloudAPI = new NextcloudAPI(context.getApplicationContext(), ssoAccount,
130130
new GsonBuilder()
131131
.setStrictness(Strictness.LENIENT)
132-
.excludeFieldsWithoutExposeAnnotation()
133132
.registerTypeHierarchyAdapter(Calendar.class, (JsonSerializer<Calendar>) (src, typeOfSrc, ctx) -> new JsonPrimitive(src.getTimeInMillis() / 1_000))
134133
.registerTypeHierarchyAdapter(Calendar.class, (JsonDeserializer<Calendar>) (src, typeOfSrc, ctx) -> {
135134
final var calendar = Calendar.getInstance();

app/src/main/java/it/niedermann/owncloud/notes/persistence/sync/UserStatusAPI.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package it.niedermann.owncloud.notes.persistence.sync
22

33
import com.owncloud.android.lib.resources.users.PredefinedStatus
44
import com.owncloud.android.lib.resources.users.Status
5-
import it.niedermann.owncloud.notes.accountswitcher.model.ExposedPredefinedStatus
65
import it.niedermann.owncloud.notes.shared.model.OcsResponse
76
import retrofit2.Call
87
import retrofit2.http.Body
@@ -19,7 +18,7 @@ interface UserStatusAPI {
1918
fun clearStatusMessage(): Call<OcsResponse<Void>>
2019

2120
@GET("predefined_statuses?format=json")
22-
fun fetchPredefinedStatuses(): Call<OcsResponse<ArrayList<ExposedPredefinedStatus>>>
21+
fun fetchPredefinedStatuses(): Call<OcsResponse<ArrayList<PredefinedStatus>>>
2322

2423
@PUT("user_status/message/predefined?format=json")
2524
@Headers("Content-Type: application/json")

0 commit comments

Comments
 (0)