Skip to content

Commit

Permalink
WIP Fixes + UI improvements
Browse files Browse the repository at this point in the history
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
  • Loading branch information
rapterjet2004 authored and mahibi committed Jul 15, 2024
1 parent 891f19c commit b96dc01
Show file tree
Hide file tree
Showing 10 changed files with 185 additions and 36 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/com/nextcloud/talk/api/NcApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -727,5 +727,5 @@ Observable<TalkBan> banActor(@Header("Authorization") String authorization,
@DELETE
Observable<GenericOverall> unbanActor(@Header("Authorization") String authorization,
@Url String url,
@Field("banId") int banId);
@Query("banId") int banId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
package com.nextcloud.talk.conversationinfo

import android.annotation.SuppressLint
import android.content.DialogInterface
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
Expand All @@ -35,7 +34,6 @@ import com.afollestad.materialdialogs.bottomsheets.BottomSheet
import com.afollestad.materialdialogs.datetime.dateTimePicker
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText
import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity
Expand All @@ -50,6 +48,7 @@ import com.nextcloud.talk.conversationinfo.viewmodel.ConversationInfoViewModel
import com.nextcloud.talk.conversationinfoedit.ConversationInfoEditActivity
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityConversationInfoBinding
import com.nextcloud.talk.databinding.DialogBanActorBinding
import com.nextcloud.talk.events.EventStatus
import com.nextcloud.talk.extensions.loadConversationAvatar
import com.nextcloud.talk.extensions.loadNoteToSelfAvatar
Expand Down Expand Up @@ -753,6 +752,13 @@ class ConversationInfoActivity :
binding.notificationSettingsView.callNotificationsSwitch.visibility = GONE
}

binding.listBansButton.visibility =
if (ConversationUtils.canModerate(conversationCopy, spreedCapabilities) &&
ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL != conversation!!.type
) {
VISIBLE
} else GONE

if (conversation!!.notificationCalls === null) {
binding.notificationSettingsView.callNotificationsSwitch.visibility = GONE
} else {
Expand Down Expand Up @@ -1290,9 +1296,9 @@ class ConversationInfoActivity :
if (CapabilitiesUtil.isBanningAvailable(conversationUser.capabilities?.spreedCapability!!)) {
items.add(
BasicListItemWithImage(
R.drawable.ic_baseline_do_not_touch_24,
"Ban Participant"
)
R.drawable.baseline_block_24,
"Ban Participant"
)
)
}

Expand Down Expand Up @@ -1343,24 +1349,7 @@ class ConversationInfoActivity :
}
3 -> {
// Ban from conversation
val editText = TextInputEditText(context)
val actorTypeConverter = EnumActorTypeConverter()
MaterialAlertDialogBuilder(context)
.setTitle("Include Note")
.setView(editText)
.setPositiveButton("Ok") { _: DialogInterface, _: Int ->

banActor(
actorTypeConverter.convertToString(participant.actorType!!),
participant.actorId!!,
editText.text.toString()
)
dismiss()
}
.setNegativeButton("Cancel") { _: DialogInterface, _: Int ->
dismiss()
}
.show()
handleBan(participant)
}
else -> {}
}
Expand All @@ -1370,6 +1359,34 @@ class ConversationInfoActivity :
return true
}

private fun MaterialDialog.handleBan(participant: Participant) {
val binding = DialogBanActorBinding.inflate(layoutInflater)
val actorTypeConverter = EnumActorTypeConverter()
val dialog = MaterialAlertDialogBuilder(context)
.setView(binding.root)
.create()
binding.avatarImage.loadUserAvatar(
conversationUser,
participant.actorId!!,
true,
false
)
binding.displayNameText.text = participant.actorId
binding.buttonBan.setOnClickListener {
banActor(
actorTypeConverter.convertToString(participant.actorType!!),
participant.actorId!!,
binding.banActorEdit.text.toString()
)
dialog.dismiss()
}
binding.buttonClose.setOnClickListener { dialog.dismiss() }
viewThemeUtils.material.colorTextInputLayout(binding.banActorEditLayout)
viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.buttonBan)
viewThemeUtils.material.colorMaterialButtonText(binding.buttonClose)
dialog.show()
}

private fun setUpNotificationSettings(module: DatabaseStorageModule) {
binding.notificationSettingsView.notificationSettingsImportantConversation.setOnClickListener {
val isChecked = binding.notificationSettingsView.importantConversationSwitch.isChecked
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ class TalkBan(
var actorId: String?,
@JsonField(name = ["bannedType"])
var bannedType: String?,
@JsonField(name = ["bannedId"])
var bannedId: String?,
@JsonField(name = ["bannedTime"])
var bannedTime: Int?,
@JsonField(name = ["internalNote"])
var internalNote: String?,
) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(null, null, null, null, null, null)
constructor() : this(null, null, null, null, null, null, null)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
*/
package com.nextcloud.talk.ui.dialog

import android.content.res.Resources
import android.os.Bundle
import android.text.format.DateUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -23,8 +23,6 @@ import com.nextcloud.talk.databinding.FragmentDialogBanListBinding
import com.nextcloud.talk.models.json.participants.TalkBan
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
import java.text.SimpleDateFormat
import java.util.Date
import javax.inject.Inject

@AutoInjector(NextcloudTalkApplication::class)
Expand Down Expand Up @@ -65,12 +63,14 @@ class DialogBanListFragment(val roomToken: String) : DialogFragment() {

override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val binding = BanItemListBinding.inflate(LayoutInflater.from(context))
binding.banActorName.text = bans[position].actorId

// TODO get this to work across time zones
val locale = Resources.getSystem().configuration.locale
binding.banTime.text = SimpleDateFormat("MM/dd/yyyy", locale).format( Date(bans[position].bannedTime!!
.toLong()))
binding.banActorName.text = bans[position].bannedId
// TODO check if unban works
val time = bans[position].bannedTime!!.toLong()
binding.banTime.text = DateUtils.formatDateTime(
requireContext(),
time,
DateUtils.FORMAT_SHOW_DATE
)
binding.banReason.text = bans[position].internalNote
binding.unbanBtn.setOnClickListener { unBanActor(bans[position].id!!.toInt()) }
return binding.root
Expand Down
19 changes: 19 additions & 0 deletions app/src/main/res/drawable/baseline_block_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!--
~ Nextcloud Talk - Android Client
~
~ SPDX-FileCopyrightText: 2024 Google LLC
~ SPDX-License-Identifier: Apache-2.0
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:tint="@color/design_default_color_error"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp">

<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM4,12c0,-4.42 3.58,-8 8,-8 1.85,0 3.55,0.63 4.9,1.69L5.69,16.9C4.63,15.55 4,13.85 4,12zM12,20c-1.85,0 -3.55,-0.63 -4.9,-1.69L18.31,7.1C19.37,8.45 20,10.15 20,12c0,4.42 -3.58,8 -8,8z" />

</vector>
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_conversation_info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@
android:layout_height="40dp"
android:layout_marginEnd="@dimen/standard_margin"
android:contentDescription="@null"
android:src="@drawable/ic_baseline_do_not_touch_24"
android:src="@drawable/baseline_block_24"
app:tint="@color/grey_600" />

<com.google.android.material.textview.MaterialTextView
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/ban_item_list.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/standard_half_margin"
android:orientation="vertical"
android:layout_weight="1">

Expand All @@ -34,6 +33,7 @@
android:id="@+id/ban_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textSize="@dimen/sm_text_size"
tools:text="11th August, 2023" />


Expand Down
107 changes: 107 additions & 0 deletions app/src/main/res/layout/dialog_ban_actor.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Nextcloud Talk - Android Client
~
~ SPDX-FileCopyrightText: 2024 Julius Linus <julius.linus@nextcloud.com>
~ SPDX-License-Identifier: GPL-3.0-or-later
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:background="@color/white"
tools:visibility="visible">

<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:text="@string/ban_actor"
android:textSize="@dimen/md_title_textsize" />

<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<RelativeLayout
android:id="@+id/ban_actor_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/standard_margin"
android:layout_marginTop="@dimen/standard_quarter_margin"
android:layout_marginEnd="@dimen/standard_margin"
android:animateLayoutChanges="true"
tools:visibility="visible">

<ImageView
android:id="@+id/avatar_image"
android:layout_width="@dimen/avatar_size_big"
android:layout_height="@dimen/avatar_size_big"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/standard_margin"
android:contentDescription="@string/avatar"
tools:src="@drawable/account_circle_48dp" />

<androidx.emoji2.widget.EmojiTextView
android:id="@+id/display_name_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/avatar_image"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_between_elements"
android:textSize="@dimen/headline_text_size"
tools:text="Jane Doe" />

</RelativeLayout>

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/ban_actor_edit_layout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin"
android:hint="@string/internal_note">

<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/ban_actor_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textShortMessage"
android:lines="1"
android:padding="@dimen/standard_half_padding" />

</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_half_margin"
android:gravity="end"
android:orientation="horizontal"
android:paddingStart="@dimen/dialog_padding"
android:paddingEnd="@dimen/dialog_padding"
android:paddingBottom="@dimen/dialog_padding_top_bottom">

<com.google.android.material.button.MaterialButton
android:id="@+id/button_close"
style="@style/Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_size_clickable_area"
android:text="@string/close" />

<com.google.android.material.button.MaterialButton
android:id="@+id/button_ban"
style="@style/Button.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_size_clickable_area"
android:text="@string/ban" />

</LinearLayout>

</LinearLayout>
1 change: 1 addition & 0 deletions app/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
<dimen name="notification_icon_width">24dp</dimen>
<dimen name="notification_icon_height">24dp</dimen>
<dimen name="notification_icon_layout_right_end_margin">21dp</dimen>
<dimen name="sm_text_size">12sp</dimen>


</resources>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -788,4 +788,7 @@ How to translate with transifex:
<string name="show_banned_participants">Show Banned Participants</string>
<string name="bans_list">Bans List</string>
<string name="unban">Unban</string>
<string name="internal_note">Internal Note</string>
<string name="ban_actor">Ban Actor</string>
<string name="ban">Ban</string>
</resources>

0 comments on commit b96dc01

Please sign in to comment.