mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
Migrate report feature to current branch
This commit is contained in:
parent
d3a4071683
commit
def6f89e45
33 changed files with 432 additions and 33 deletions
|
|
@ -102,7 +102,7 @@
|
||||||
android:theme="@style/TextInputLayoutAppearanceTheme"
|
android:theme="@style/TextInputLayoutAppearanceTheme"
|
||||||
style="@style/TextInputLayoutAppearance"
|
style="@style/TextInputLayoutAppearance"
|
||||||
android:layout_marginTop="@dimen/spacing_large"
|
android:layout_marginTop="@dimen/spacing_large"
|
||||||
android:hint="@string/reason_for_report"
|
android:hint="@string/report_message_hint"
|
||||||
android:layout_marginBottom="@dimen/spacing_large">
|
android:layout_marginBottom="@dimen/spacing_large">
|
||||||
<androidx.appcompat.widget.AppCompatEditText
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
android:id="@+id/additional_info_edittext"
|
android:id="@+id/additional_info_edittext"
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
android:title="@string/copy_userid" />
|
android:title="@string/copy_userid" />
|
||||||
<item android:id="@+id/block_user"
|
<item android:id="@+id/block_user"
|
||||||
android:title="@string/block_user" />
|
android:title="@string/block_user" />
|
||||||
|
<item android:id="@+id/report_player"
|
||||||
|
android:title="@string/report_player" />
|
||||||
<group android:id="@+id/admin_items">
|
<group android:id="@+id/admin_items">
|
||||||
<item android:id="@+id/ban_user"
|
<item android:id="@+id/ban_user"
|
||||||
android:title="@string/ban_user" />
|
android:title="@string/ban_user" />
|
||||||
|
|
|
||||||
|
|
@ -796,7 +796,7 @@
|
||||||
<string name="become_x">Conviértete en un %s</string>
|
<string name="become_x">Conviértete en un %s</string>
|
||||||
<string name="x_class">Clase %s</string>
|
<string name="x_class">Clase %s</string>
|
||||||
<string name="report_message_title">Reporta a %s por violación:</string>
|
<string name="report_message_title">Reporta a %s por violación:</string>
|
||||||
<string name="reason_for_report">Razón para reportar (opcional)</string>
|
<string name="report_message_hint">Razón para reportar (opcional)</string>
|
||||||
<string name="mystery_sets">Conjuntos misteriosos</string>
|
<string name="mystery_sets">Conjuntos misteriosos</string>
|
||||||
<string name="guild_description">Descripción del Gremio</string>
|
<string name="guild_description">Descripción del Gremio</string>
|
||||||
<string name="invite_to_guild">Invitar al Gremio</string>
|
<string name="invite_to_guild">Invitar al Gremio</string>
|
||||||
|
|
|
||||||
|
|
@ -805,7 +805,7 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben.</string>
|
||||||
<string name="join_guild">Gilde beitreten</string>
|
<string name="join_guild">Gilde beitreten</string>
|
||||||
<string name="invite_to_guild">In Gilde einladen</string>
|
<string name="invite_to_guild">In Gilde einladen</string>
|
||||||
<string name="guild_description">Gildenbeschreibung</string>
|
<string name="guild_description">Gildenbeschreibung</string>
|
||||||
<string name="reason_for_report">Grund für die Meldung (optional)</string>
|
<string name="report_message_hint">Grund für die Meldung (optional)</string>
|
||||||
<string name="report_message_title">Melde %s wegen eines Verstoßes:</string>
|
<string name="report_message_title">Melde %s wegen eines Verstoßes:</string>
|
||||||
<string name="report_explanation">Melde einen Post **nur**, wenn er die [Community-Richtlinien](https://habitica.com/static/community-guidelines) und/oder die [Allgemeinen Geschäftsbedingungen](https://habitica.com/static/terms) verletzt. Zweckwidrige Meldungen können Dir eine Rüge einbringen.</string>
|
<string name="report_explanation">Melde einen Post **nur**, wenn er die [Community-Richtlinien](https://habitica.com/static/community-guidelines) und/oder die [Allgemeinen Geschäftsbedingungen](https://habitica.com/static/terms) verletzt. Zweckwidrige Meldungen können Dir eine Rüge einbringen.</string>
|
||||||
<string name="x_class">%s-Klasse</string>
|
<string name="x_class">%s-Klasse</string>
|
||||||
|
|
|
||||||
|
|
@ -790,7 +790,7 @@
|
||||||
<string name="defeat">Defeat</string>
|
<string name="defeat">Defeat</string>
|
||||||
<string name="guild_description">Guild Description</string>
|
<string name="guild_description">Guild Description</string>
|
||||||
<string name="mystery_sets">Mystery Sets</string>
|
<string name="mystery_sets">Mystery Sets</string>
|
||||||
<string name="reason_for_report">Reason for report (optional)</string>
|
<string name="report_message_hint">Reason for report (optional)</string>
|
||||||
<string name="report_message_title">Report %s for violation:</string>
|
<string name="report_message_title">Report %s for violation:</string>
|
||||||
<string name="invite_to_guild">Invite to Guild</string>
|
<string name="invite_to_guild">Invite to Guild</string>
|
||||||
<string name="join_guild">Join Guild</string>
|
<string name="join_guild">Join Guild</string>
|
||||||
|
|
|
||||||
|
|
@ -834,7 +834,7 @@
|
||||||
<string name="need_help_header_description">Publica un mensaje en el %s para que tus preguntas sean respondidas por otros jugadores.</string>
|
<string name="need_help_header_description">Publica un mensaje en el %s para que tus preguntas sean respondidas por otros jugadores.</string>
|
||||||
<string name="assigned_stat">Atributo Asignado</string>
|
<string name="assigned_stat">Atributo Asignado</string>
|
||||||
<string name="report_explanation">**Únicamente** reporta una publicación que viole las [Normas de la comunidad](https://habitica.com/static/community-guidelines) y/o los [Términos de servicio](https://habitica.com/static/terms). Reportar inadecuadamente una publicación puede conllevarte una infracción.</string>
|
<string name="report_explanation">**Únicamente** reporta una publicación que viole las [Normas de la comunidad](https://habitica.com/static/community-guidelines) y/o los [Términos de servicio](https://habitica.com/static/terms). Reportar inadecuadamente una publicación puede conllevarte una infracción.</string>
|
||||||
<string name="reason_for_report">Motivo de la denuncia (opcional)</string>
|
<string name="report_message_hint">Motivo de la denuncia (opcional)</string>
|
||||||
<string name="checklist_text">Texto de la lista</string>
|
<string name="checklist_text">Texto de la lista</string>
|
||||||
<string name="preference_push_party_activity">Actividad del equipo</string>
|
<string name="preference_push_party_activity">Actividad del equipo</string>
|
||||||
<string name="partyUpDescription">¡Te agrupaste con un miembro del equipo!</string>
|
<string name="partyUpDescription">¡Te agrupaste con un miembro del equipo!</string>
|
||||||
|
|
|
||||||
|
|
@ -742,7 +742,7 @@
|
||||||
<string name="invite_to_guild">Inviter dans la guilde</string>
|
<string name="invite_to_guild">Inviter dans la guilde</string>
|
||||||
<string name="guild_description">Description de la guilde</string>
|
<string name="guild_description">Description de la guilde</string>
|
||||||
<string name="mystery_sets">Ensembles mystère</string>
|
<string name="mystery_sets">Ensembles mystère</string>
|
||||||
<string name="reason_for_report">Motif du signalement (optionnel)</string>
|
<string name="report_message_hint">Motif du signalement (optionnel)</string>
|
||||||
<string name="report_message_title">Signaler %s pour violation :</string>
|
<string name="report_message_title">Signaler %s pour violation :</string>
|
||||||
<string name="report_explanation">Ne signalez **que** les messages qui enfreignent les [règles de vie en communauté](https://habitica.com/static/community-guidelines) et/ou les [conditions de service](https://habitica.com/static/terms). Signaler des messages de façon inadéquate pourrait vous valoir une infraction.</string>
|
<string name="report_explanation">Ne signalez **que** les messages qui enfreignent les [règles de vie en communauté](https://habitica.com/static/community-guidelines) et/ou les [conditions de service](https://habitica.com/static/terms). Signaler des messages de façon inadéquate pourrait vous valoir une infraction.</string>
|
||||||
<string name="x_class">Classe %s</string>
|
<string name="x_class">Classe %s</string>
|
||||||
|
|
|
||||||
|
|
@ -790,7 +790,7 @@
|
||||||
<string name="app_theme">Tema aplikacije</string>
|
<string name="app_theme">Tema aplikacije</string>
|
||||||
<string name="accept">Prihvati</string>
|
<string name="accept">Prihvati</string>
|
||||||
<string name="pref_emails_checkbox">Koristi obavijesti e-pošte</string>
|
<string name="pref_emails_checkbox">Koristi obavijesti e-pošte</string>
|
||||||
<string name="reason_for_report">Razlog prijave (neobavezno)</string>
|
<string name="report_message_hint">Razlog prijave (neobavezno)</string>
|
||||||
<string name="mystery_sets">Mistični setovi</string>
|
<string name="mystery_sets">Mistični setovi</string>
|
||||||
<string name="leave_guild">Napusti Ceh</string>
|
<string name="leave_guild">Napusti Ceh</string>
|
||||||
<string name="guild_description">Opis Ceha</string>
|
<string name="guild_description">Opis Ceha</string>
|
||||||
|
|
|
||||||
|
|
@ -760,7 +760,7 @@
|
||||||
<string name="trillion_abbrev">t</string>
|
<string name="trillion_abbrev">t</string>
|
||||||
<string name="report_violation">Laporkan pelanggaran</string>
|
<string name="report_violation">Laporkan pelanggaran</string>
|
||||||
<string name="mystery_sets">Set Misteri</string>
|
<string name="mystery_sets">Set Misteri</string>
|
||||||
<string name="reason_for_report">Alasan pelaporan (opsional)</string>
|
<string name="report_message_hint">Alasan pelaporan (opsional)</string>
|
||||||
<string name="report_message_title">Melaporkan %s atas pelanggaran:</string>
|
<string name="report_message_title">Melaporkan %s atas pelanggaran:</string>
|
||||||
<string name="report_explanation">**Laporkan** hanya jika postingan tersebut melanggar [Pedoman Komunitas](https://habitica.com/static/community-guidelines) dan/atau [Syarat Layanan](https://habitica.com/static/terms). Laporan yang tidak sesuai dapat memberimu pelanggaran.</string>
|
<string name="report_explanation">**Laporkan** hanya jika postingan tersebut melanggar [Pedoman Komunitas](https://habitica.com/static/community-guidelines) dan/atau [Syarat Layanan](https://habitica.com/static/terms). Laporan yang tidak sesuai dapat memberimu pelanggaran.</string>
|
||||||
<string name="become_x">Menjadi %s</string>
|
<string name="become_x">Menjadi %s</string>
|
||||||
|
|
|
||||||
|
|
@ -672,7 +672,7 @@
|
||||||
<string name="invite_to_guild">Invita nella Gilda</string>
|
<string name="invite_to_guild">Invita nella Gilda</string>
|
||||||
<string name="guild_description">Descrizione della Gilda</string>
|
<string name="guild_description">Descrizione della Gilda</string>
|
||||||
<string name="mystery_sets">Set del Mistero</string>
|
<string name="mystery_sets">Set del Mistero</string>
|
||||||
<string name="reason_for_report">Ragioni della segnalazione (facoltativo)</string>
|
<string name="report_message_hint">Ragioni della segnalazione (facoltativo)</string>
|
||||||
<string name="report_message_title">Segnala %s per violazione:</string>
|
<string name="report_message_title">Segnala %s per violazione:</string>
|
||||||
<string name="report_explanation">Segnala **SOLO** i messaggi che violano le [Linee Guida della Community](https://habitica.com/static/community-guidelines) and/o i [Termini di Servizio](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction. Se la segnalazione è inappropriata, potrai subire una sanzione.</string>
|
<string name="report_explanation">Segnala **SOLO** i messaggi che violano le [Linee Guida della Community](https://habitica.com/static/community-guidelines) and/o i [Termini di Servizio](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction. Se la segnalazione è inappropriata, potrai subire una sanzione.</string>
|
||||||
<string name="x_class">Classe %s</string>
|
<string name="x_class">Classe %s</string>
|
||||||
|
|
|
||||||
|
|
@ -708,7 +708,7 @@
|
||||||
<string name="repeats">くり返し</string>
|
<string name="repeats">くり返し</string>
|
||||||
<string name="x_class">%s クラス</string>
|
<string name="x_class">%s クラス</string>
|
||||||
<string name="become_x">%sになる</string>
|
<string name="become_x">%sになる</string>
|
||||||
<string name="reason_for_report">報告の理由(任意)</string>
|
<string name="report_message_hint">報告の理由(任意)</string>
|
||||||
<string name="report_message_title">違反として%sを報告する:</string>
|
<string name="report_message_title">違反として%sを報告する:</string>
|
||||||
<string name="update_available">アップデートが利用可能です:%1$s (%2$d)</string>
|
<string name="update_available">アップデートが利用可能です:%1$s (%2$d)</string>
|
||||||
<string name="leave_guild">ギルドを脱退する</string>
|
<string name="leave_guild">ギルドを脱退する</string>
|
||||||
|
|
|
||||||
|
|
@ -682,7 +682,7 @@
|
||||||
<string name="invite_to_guild">길드에 초대하기</string>
|
<string name="invite_to_guild">길드에 초대하기</string>
|
||||||
<string name="guild_description">길드 설명</string>
|
<string name="guild_description">길드 설명</string>
|
||||||
<string name="mystery_sets">미스터리 세트</string>
|
<string name="mystery_sets">미스터리 세트</string>
|
||||||
<string name="reason_for_report">신고 이유 (생략 가능)</string>
|
<string name="report_message_hint">신고 이유 (생략 가능)</string>
|
||||||
<string name="report_message_title">%s 을(를) 규정 위반으로 신고하기:</string>
|
<string name="report_message_title">%s 을(를) 규정 위반으로 신고하기:</string>
|
||||||
<string name="report_explanation">해당 글이 [커뮤니티 방침](https://habitica.com/static/community-guidelines)이나 [이용 약관](https://habitica.com/static/terms)을 **위반했을 때만** 신고하세요. 허위 신고는 규정 위반으로 간주됩니다.</string>
|
<string name="report_explanation">해당 글이 [커뮤니티 방침](https://habitica.com/static/community-guidelines)이나 [이용 약관](https://habitica.com/static/terms)을 **위반했을 때만** 신고하세요. 허위 신고는 규정 위반으로 간주됩니다.</string>
|
||||||
<string name="x_class">%s 직업</string>
|
<string name="x_class">%s 직업</string>
|
||||||
|
|
|
||||||
|
|
@ -854,7 +854,7 @@
|
||||||
<string name="invite_to_guild">Nodig uit voor Gilde</string>
|
<string name="invite_to_guild">Nodig uit voor Gilde</string>
|
||||||
<string name="guild_description">Gilde Beschrijving</string>
|
<string name="guild_description">Gilde Beschrijving</string>
|
||||||
<string name="mystery_sets">Mysteriesets</string>
|
<string name="mystery_sets">Mysteriesets</string>
|
||||||
<string name="reason_for_report">Reden voor melding (optioneel)</string>
|
<string name="report_message_hint">Reden voor melding (optioneel)</string>
|
||||||
<string name="report_message_title">%s melden wegens overtreding:</string>
|
<string name="report_message_title">%s melden wegens overtreding:</string>
|
||||||
<string name="report_explanation">Meld **alleen** een bericht dat de [Communityrichtlijnen](https://habitica.com/static/community-guidelines) en/of [Servicevoorwaarden](https://habitica.com/static/terms) schendt. Het ongepast melden van een bericht kan een overtreding opleveren.</string>
|
<string name="report_explanation">Meld **alleen** een bericht dat de [Communityrichtlijnen](https://habitica.com/static/community-guidelines) en/of [Servicevoorwaarden](https://habitica.com/static/terms) schendt. Het ongepast melden van een bericht kan een overtreding opleveren.</string>
|
||||||
<string name="gift_confirmation_text_sub_g1g1">Je hebt %s een %s-maand Habitica-abonnement gestuurd en hetzelfde abonnement is toegepast op je account voor onze Gift One Get One-promotie!</string>
|
<string name="gift_confirmation_text_sub_g1g1">Je hebt %s een %s-maand Habitica-abonnement gestuurd en hetzelfde abonnement is toegepast op je account voor onze Gift One Get One-promotie!</string>
|
||||||
|
|
|
||||||
|
|
@ -717,7 +717,7 @@
|
||||||
<string name="total_checkins">Wszystkich zalogowań</string>
|
<string name="total_checkins">Wszystkich zalogowań</string>
|
||||||
<string name="last_login">Ostatnie zalogowanie</string>
|
<string name="last_login">Ostatnie zalogowanie</string>
|
||||||
<string name="mystery_sets">Tajemnicze zestawy</string>
|
<string name="mystery_sets">Tajemnicze zestawy</string>
|
||||||
<string name="reason_for_report">Przyczyna zgłoszenia (opcjonalnie)</string>
|
<string name="report_message_hint">Przyczyna zgłoszenia (opcjonalnie)</string>
|
||||||
<string name="report_message_title">Zgłoś %s za naruszenie:</string>
|
<string name="report_message_title">Zgłoś %s za naruszenie:</string>
|
||||||
<string name="report_explanation">Zgłaszaj **wyłącznie** post który narusza [Standardy Społeczności](https://habitica.com/static/community-guidelines) i/lub [Warunki usługi](https://habitica.com/static/terms). Niewłaściwe zgłoszenie postu może przynieść Ci naganę.</string>
|
<string name="report_explanation">Zgłaszaj **wyłącznie** post który narusza [Standardy Społeczności](https://habitica.com/static/community-guidelines) i/lub [Warunki usługi](https://habitica.com/static/terms). Niewłaściwe zgłoszenie postu może przynieść Ci naganę.</string>
|
||||||
<string name="defeat">Porażka</string>
|
<string name="defeat">Porażka</string>
|
||||||
|
|
|
||||||
|
|
@ -784,7 +784,7 @@
|
||||||
<string name="invite_to_guild">Convidar para a Guilda</string>
|
<string name="invite_to_guild">Convidar para a Guilda</string>
|
||||||
<string name="guild_description">Descrição da Guilda</string>
|
<string name="guild_description">Descrição da Guilda</string>
|
||||||
<string name="mystery_sets">Conjuntos Misteriosos</string>
|
<string name="mystery_sets">Conjuntos Misteriosos</string>
|
||||||
<string name="reason_for_report">Motivo para reportar (opcional)</string>
|
<string name="report_message_hint">Motivo para reportar (opcional)</string>
|
||||||
<string name="report_message_title">Reportar %s por violação:</string>
|
<string name="report_message_title">Reportar %s por violação:</string>
|
||||||
<string name="report_explanation">Reporte uma mensagem **apenas** se esta violar as [Diretrizes da Comunidade](https://habitica.com/static/community-guidelines) e/ou os [Termos de Serviço](https://habitica.com/static/terms). Reportar uma postagem inadequadamente pode lhe dar uma infração.</string>
|
<string name="report_explanation">Reporte uma mensagem **apenas** se esta violar as [Diretrizes da Comunidade](https://habitica.com/static/community-guidelines) e/ou os [Termos de Serviço](https://habitica.com/static/terms). Reportar uma postagem inadequadamente pode lhe dar uma infração.</string>
|
||||||
<string name="x_class">%s Classe</string>
|
<string name="x_class">%s Classe</string>
|
||||||
|
|
|
||||||
|
|
@ -716,7 +716,7 @@
|
||||||
<string name="invite_to_guild">Пригласить в гильдию</string>
|
<string name="invite_to_guild">Пригласить в гильдию</string>
|
||||||
<string name="guild_description">Описание гильдии</string>
|
<string name="guild_description">Описание гильдии</string>
|
||||||
<string name="mystery_sets">Таинственные наборы</string>
|
<string name="mystery_sets">Таинственные наборы</string>
|
||||||
<string name="reason_for_report">Причина (необязательно)</string>
|
<string name="report_message_hint">Причина (необязательно)</string>
|
||||||
<string name="x_class">Класс персонажа %s</string>
|
<string name="x_class">Класс персонажа %s</string>
|
||||||
<string name="become_x">Стать %s</string>
|
<string name="become_x">Стать %s</string>
|
||||||
<string name="need_more_help">Нужна помощь\?</string>
|
<string name="need_more_help">Нужна помощь\?</string>
|
||||||
|
|
|
||||||
|
|
@ -785,7 +785,7 @@
|
||||||
<string name="invite_to_guild">Loncaya Davet Et</string>
|
<string name="invite_to_guild">Loncaya Davet Et</string>
|
||||||
<string name="guild_description">Lonca Açıklaması</string>
|
<string name="guild_description">Lonca Açıklaması</string>
|
||||||
<string name="mystery_sets">Gizem Setleri</string>
|
<string name="mystery_sets">Gizem Setleri</string>
|
||||||
<string name="reason_for_report">Bildirme nedeni (tercihen)</string>
|
<string name="report_message_hint">Bildirme nedeni (tercihen)</string>
|
||||||
<string name="report_message_title">%s kullanıcısını ihlal nedeniyle bildir:</string>
|
<string name="report_message_title">%s kullanıcısını ihlal nedeniyle bildir:</string>
|
||||||
<string name="report_explanation">**Sadece** [Topluluk Kuralları](https://habitica.com/static/community-guidelines)\'nı ve/veya [Kullanım Koşulları](https://habitica.com/static/terms)\' nı ihlal eden gönderileri bildirin. Aksi takdirde ceza alabilirsiniz.</string>
|
<string name="report_explanation">**Sadece** [Topluluk Kuralları](https://habitica.com/static/community-guidelines)\'nı ve/veya [Kullanım Koşulları](https://habitica.com/static/terms)\' nı ihlal eden gönderileri bildirin. Aksi takdirde ceza alabilirsiniz.</string>
|
||||||
<string name="x_class">%s Sınıfı</string>
|
<string name="x_class">%s Sınıfı</string>
|
||||||
|
|
|
||||||
|
|
@ -747,7 +747,7 @@
|
||||||
<string name="invite_to_guild">Запросити до гільдії</string>
|
<string name="invite_to_guild">Запросити до гільдії</string>
|
||||||
<string name="guild_description">Опис гільдії</string>
|
<string name="guild_description">Опис гільдії</string>
|
||||||
<string name="mystery_sets">Містичний комплект</string>
|
<string name="mystery_sets">Містичний комплект</string>
|
||||||
<string name="reason_for_report">Причина (опціонально)</string>
|
<string name="report_message_hint">Причина (опціонально)</string>
|
||||||
<string name="report_message_title">Помітити %s, як порушення за:</string>
|
<string name="report_message_title">Помітити %s, як порушення за:</string>
|
||||||
<string name="report_explanation">Будь ласка, повідомляйте **лише** про публікації, які порушують [Правила спільноти](https://habitica.com/static/community-guidelines) і/або [Умови надання послуг](https://habitica.com/static/terms). Неналежне повідомлення про публікацію може призвести до порушення.</string>
|
<string name="report_explanation">Будь ласка, повідомляйте **лише** про публікації, які порушують [Правила спільноти](https://habitica.com/static/community-guidelines) і/або [Умови надання послуг](https://habitica.com/static/terms). Неналежне повідомлення про публікацію може призвести до порушення.</string>
|
||||||
<string name="x_class">Клас %s</string>
|
<string name="x_class">Клас %s</string>
|
||||||
|
|
|
||||||
|
|
@ -644,7 +644,7 @@
|
||||||
<string name="collapse_notes">Thu lại</string>
|
<string name="collapse_notes">Thu lại</string>
|
||||||
<string name="guild_description">Mô tả Bang hội</string>
|
<string name="guild_description">Mô tả Bang hội</string>
|
||||||
<string name="mystery_sets">Bộ Bí ẩn</string>
|
<string name="mystery_sets">Bộ Bí ẩn</string>
|
||||||
<string name="reason_for_report">Lí do báo cáo (tùy chọn)</string>
|
<string name="report_message_hint">Lí do báo cáo (tùy chọn)</string>
|
||||||
<string name="report_message_title">Báo có %s vì vi phạm:</string>
|
<string name="report_message_title">Báo có %s vì vi phạm:</string>
|
||||||
<string name="report_explanation">**Chỉ** báo cáo một bài viết mà vi phạm [Nội quy Cộng đồng](https://habitica.com/static/community-guidelines) và/hoặc [Điều khoản Dịch vụ](https://habitica.com/static/terms). Báo cáo không hợp lí có thể khiến bạn nhận một cảnh cáo.</string>
|
<string name="report_explanation">**Chỉ** báo cáo một bài viết mà vi phạm [Nội quy Cộng đồng](https://habitica.com/static/community-guidelines) và/hoặc [Điều khoản Dịch vụ](https://habitica.com/static/terms). Báo cáo không hợp lí có thể khiến bạn nhận một cảnh cáo.</string>
|
||||||
<string name="x_class">Chức nghiệp %s</string>
|
<string name="x_class">Chức nghiệp %s</string>
|
||||||
|
|
|
||||||
|
|
@ -839,7 +839,7 @@
|
||||||
<string name="invite_to_guild">邀請加入公會</string>
|
<string name="invite_to_guild">邀請加入公會</string>
|
||||||
<string name="guild_description">公會描述</string>
|
<string name="guild_description">公會描述</string>
|
||||||
<string name="mystery_sets">神秘套裝</string>
|
<string name="mystery_sets">神秘套裝</string>
|
||||||
<string name="reason_for_report">報告原因(可選)</string>
|
<string name="report_message_hint">報告原因(可選)</string>
|
||||||
<string name="report_message_title">舉報%s違反:</string>
|
<string name="report_message_title">舉報%s違反:</string>
|
||||||
<string name="report_explanation">你**只能**舉報違反了【社會準則】(https://habitica.com/static/community-guidelines)和/或者【服務條款】(https://habitica.com/static/terms)的消息。不當的舉報會讓你違規。</string>
|
<string name="report_explanation">你**只能**舉報違反了【社會準則】(https://habitica.com/static/community-guidelines)和/或者【服務條款】(https://habitica.com/static/terms)的消息。不當的舉報會讓你違規。</string>
|
||||||
<string name="x_class">%s職業</string>
|
<string name="x_class">%s職業</string>
|
||||||
|
|
|
||||||
|
|
@ -772,7 +772,7 @@
|
||||||
<string name="invite_to_guild">邀请加入公会</string>
|
<string name="invite_to_guild">邀请加入公会</string>
|
||||||
<string name="guild_description">公会简介</string>
|
<string name="guild_description">公会简介</string>
|
||||||
<string name="mystery_sets">神秘套装</string>
|
<string name="mystery_sets">神秘套装</string>
|
||||||
<string name="reason_for_report">报告原因(可选)</string>
|
<string name="report_message_hint">报告原因(可选)</string>
|
||||||
<string name="report_message_title">举报%s违反:</string>
|
<string name="report_message_title">举报%s违反:</string>
|
||||||
<string name="report_explanation">你**只能**举报违反了【社会准则】(https://habitica.com/static/community-guidelines)和/或者【服务条款】(https://habitica.com/static/terms)的消息。不当的举报会让你违规。</string>
|
<string name="report_explanation">你**只能**举报违反了【社会准则】(https://habitica.com/static/community-guidelines)和/或者【服务条款】(https://habitica.com/static/terms)的消息。不当的举报会让你违规。</string>
|
||||||
<string name="gems_to_gift">宝石送礼</string>
|
<string name="gems_to_gift">宝石送礼</string>
|
||||||
|
|
|
||||||
|
|
@ -803,7 +803,16 @@
|
||||||
<string name="x_class">%s Class</string>
|
<string name="x_class">%s Class</string>
|
||||||
<string name="report_explanation">**Only** report a post that violates the [Community Guidelines](https://habitica.com/static/community-guidelines) and/or [Terms of Service](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction.</string>
|
<string name="report_explanation">**Only** report a post that violates the [Community Guidelines](https://habitica.com/static/community-guidelines) and/or [Terms of Service](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction.</string>
|
||||||
<string name="report_message_title">Report %s for violation:</string>
|
<string name="report_message_title">Report %s for violation:</string>
|
||||||
<string name="reason_for_report">Reason for report (optional)</string>
|
<string name="report_message_explanation">**Only** report a post that violates the [Community Guidelines](https://habitica.com/static/community-guidelines) and/or [Terms of Service](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction.</string>
|
||||||
|
<string name="report_user_explanation">**Only** report for a user that violates the [Community Guidelines](https://habitica.com/static/community-guidelines) and/or [Terms of Service](https://habitica.com/static/terms). Inappropriately reporting a user may give you an infraction.</string>
|
||||||
|
<string name="report_player_title">Report %s?</string>
|
||||||
|
<string name="report_player">Report Player</string>
|
||||||
|
<string name="report_player_hint">Reason for report (required)</string>
|
||||||
|
<string name="report_user_description">This will also block %s - A blocked user cannot send you Private Messages but you will still see their posts.</string>
|
||||||
|
<string name="report_message_hint">Reason for report (optional)</string>
|
||||||
|
<string name="report_successful">%s Reported</string>
|
||||||
|
<string name="report_failure">Report failed, please try again later</string>
|
||||||
|
<string name="report_player_toolbar_title">Report %s</string>
|
||||||
<string name="mystery_sets">Mystery Sets</string>
|
<string name="mystery_sets">Mystery Sets</string>
|
||||||
<string name="guild_description">Guild Description</string>
|
<string name="guild_description">Guild Description</string>
|
||||||
<string name="invite_to_guild">Invite to Guild</string>
|
<string name="invite_to_guild">Invite to Guild</string>
|
||||||
|
|
|
||||||
|
|
@ -265,6 +265,9 @@ interface ApiService {
|
||||||
@Body data: Map<String, String>
|
@Body data: Map<String, String>
|
||||||
): HabitResponse<Void>
|
): HabitResponse<Void>
|
||||||
|
|
||||||
|
@POST("members/{mid}/flag")
|
||||||
|
suspend fun reportMember(@Path("mid") mid: String, @Body data: Map<String, String>): HabitResponse<Void>
|
||||||
|
|
||||||
@POST("groups/{gid}/chat/seen")
|
@POST("groups/{gid}/chat/seen")
|
||||||
suspend fun seenMessages(@Path("gid") groupId: String): HabitResponse<Void>
|
suspend fun seenMessages(@Path("gid") groupId: String): HabitResponse<Void>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,8 @@ interface ApiClient {
|
||||||
suspend fun flagMessage(groupId: String, mid: String, data: MutableMap<String, String>): Void?
|
suspend fun flagMessage(groupId: String, mid: String, data: MutableMap<String, String>): Void?
|
||||||
suspend fun flagInboxMessage(mid: String, data: MutableMap<String, String>): Void?
|
suspend fun flagInboxMessage(mid: String, data: MutableMap<String, String>): Void?
|
||||||
|
|
||||||
|
suspend fun reportMember(mid: String, data: Map<String, String>): Void?
|
||||||
|
|
||||||
suspend fun seenMessages(groupId: String): Void?
|
suspend fun seenMessages(groupId: String): Void?
|
||||||
|
|
||||||
suspend fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): List<InviteResponse>?
|
suspend fun inviteToGroup(groupId: String, inviteData: Map<String, Any>): List<InviteResponse>?
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ interface SocialRepository : BaseRepository {
|
||||||
groupID: String? = null
|
groupID: String? = null
|
||||||
): Void?
|
): Void?
|
||||||
|
|
||||||
|
suspend fun reportMember(memberID: String, data: Map<String, String>): Void?
|
||||||
|
|
||||||
suspend fun likeMessage(chatMessage: ChatMessage): ChatMessage?
|
suspend fun likeMessage(chatMessage: ChatMessage): ChatMessage?
|
||||||
|
|
||||||
suspend fun deleteMessage(chatMessage: ChatMessage): Void?
|
suspend fun deleteMessage(chatMessage: ChatMessage): Void?
|
||||||
|
|
|
||||||
|
|
@ -583,6 +583,10 @@ class ApiClientImpl(
|
||||||
return process { apiService.likeMessage(groupId, mid) }
|
return process { apiService.likeMessage(groupId, mid) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun reportMember(mid: String, data: Map<String, String>): Void? {
|
||||||
|
return process { apiService.reportMember(mid, data) }
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun flagMessage(groupId: String, mid: String, data: MutableMap<String, String>): Void? {
|
override suspend fun flagMessage(groupId: String, mid: String, data: MutableMap<String, String>): Void? {
|
||||||
return process { apiService.flagMessage(groupId, mid, data) }
|
return process { apiService.flagMessage(groupId, mid, data) }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,10 @@ class SocialRepositoryImpl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun reportMember(memberID: String, data: Map<String, String>): Void? {
|
||||||
|
return apiClient.reportMember(memberID, data)
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun likeMessage(chatMessage: ChatMessage): ChatMessage? {
|
override suspend fun likeMessage(chatMessage: ChatMessage): ChatMessage? {
|
||||||
if (chatMessage.id.isBlank()) {
|
if (chatMessage.id.isBlank()) {
|
||||||
return null
|
return null
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import com.habitrpg.android.habitica.models.user.Outfit
|
||||||
import com.habitrpg.android.habitica.models.user.Permission
|
import com.habitrpg.android.habitica.models.user.Permission
|
||||||
import com.habitrpg.android.habitica.models.user.Stats
|
import com.habitrpg.android.habitica.models.user.Stats
|
||||||
import com.habitrpg.android.habitica.ui.adapter.social.AchievementProfileAdapter
|
import com.habitrpg.android.habitica.ui.adapter.social.AchievementProfileAdapter
|
||||||
|
import com.habitrpg.android.habitica.ui.fragments.ReportBottomSheetFragment
|
||||||
import com.habitrpg.android.habitica.ui.theme.HabiticaTheme
|
import com.habitrpg.android.habitica.ui.theme.HabiticaTheme
|
||||||
import com.habitrpg.android.habitica.ui.views.AppHeaderView
|
import com.habitrpg.android.habitica.ui.views.AppHeaderView
|
||||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||||
|
|
@ -270,6 +271,13 @@ class FullProfileActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
R.id.report_player -> {
|
||||||
|
showReportUserBottomSheet(
|
||||||
|
userIdBeingReported = userID,
|
||||||
|
usernameBeingReported = username ?: "",
|
||||||
|
)
|
||||||
|
true
|
||||||
|
}
|
||||||
R.id.ban_user -> {
|
R.id.ban_user -> {
|
||||||
banUser()
|
banUser()
|
||||||
true
|
true
|
||||||
|
|
@ -342,6 +350,20 @@ class FullProfileActivity : BaseActivity() {
|
||||||
alert.show()
|
alert.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showReportUserBottomSheet(userIdBeingReported : String, usernameBeingReported: String) {
|
||||||
|
val reportBottomSheetFragment = ReportBottomSheetFragment.newInstance(
|
||||||
|
reportType = ReportBottomSheetFragment.REPORT_TYPE_USER,
|
||||||
|
profileName = usernameBeingReported,
|
||||||
|
messageId = "",
|
||||||
|
messageText = "",
|
||||||
|
groupId = "",
|
||||||
|
userIdBeingReported = userIdBeingReported,
|
||||||
|
sourceView = this::class.simpleName ?: ""
|
||||||
|
)
|
||||||
|
|
||||||
|
reportBottomSheetFragment.show(supportFragmentManager, ReportBottomSheetFragment.TAG)
|
||||||
|
}
|
||||||
|
|
||||||
private fun banUser() {
|
private fun banUser() {
|
||||||
val isBanned = member.value?.authentication?.blocked == true
|
val isBanned = member.value?.authentication?.blocked == true
|
||||||
val alert = HabiticaAlertDialog(this)
|
val alert = HabiticaAlertDialog(this)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,183 @@
|
||||||
|
package com.habitrpg.android.habitica.ui.fragments
|
||||||
|
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.content.DialogInterface
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
|
import com.habitrpg.android.habitica.R
|
||||||
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
|
import com.habitrpg.common.habitica.databinding.FragmentReportMessageBinding
|
||||||
|
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||||
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
|
import com.habitrpg.common.habitica.helpers.setMarkdown
|
||||||
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@AndroidEntryPoint
|
||||||
|
class ReportBottomSheetFragment : BottomSheetDialogFragment() {
|
||||||
|
|
||||||
|
private lateinit var binding: FragmentReportMessageBinding
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var socialRepository: SocialRepository
|
||||||
|
|
||||||
|
private var reportType: String? = null
|
||||||
|
private var messageID: String? = null
|
||||||
|
private var messageText: String? = null
|
||||||
|
private var profileName: String? = null
|
||||||
|
private var reportingUserId: String? = null
|
||||||
|
private var groupID: String? = null
|
||||||
|
private var isReporting: Boolean = false
|
||||||
|
private var source: String? = null
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View? {
|
||||||
|
binding = FragmentReportMessageBinding.inflate(inflater, container, false)
|
||||||
|
return binding.root
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
val bottomSheetDialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
|
||||||
|
bottomSheetDialog.setOnShowListener { dialog: DialogInterface ->
|
||||||
|
val notificationDialog = dialog as BottomSheetDialog
|
||||||
|
notificationDialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED
|
||||||
|
notificationDialog.behavior.isDraggable = false
|
||||||
|
}
|
||||||
|
return bottomSheetDialog
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
reportType = arguments?.getString(REPORT_TYPE)
|
||||||
|
messageID = arguments?.getString(MESSAGE_ID)
|
||||||
|
groupID = arguments?.getString(GROUP_ID)
|
||||||
|
messageText = arguments?.getString(MESSAGE_TEXT)
|
||||||
|
profileName = arguments?.getString(PROFILE_NAME)
|
||||||
|
reportingUserId = arguments?.getString(REPORTING_USER_ID)
|
||||||
|
source = arguments?.getString(SOURCE_VIEW)
|
||||||
|
|
||||||
|
|
||||||
|
binding.messageTextView.text = arguments?.getString(messageText)
|
||||||
|
binding.reportButton.setOnClickListener {
|
||||||
|
if (reportType == REPORT_TYPE_MESSAGE)
|
||||||
|
reportMessage()
|
||||||
|
else if (reportType == REPORT_TYPE_USER)
|
||||||
|
reportUser()
|
||||||
|
}
|
||||||
|
binding.closeButton.setOnClickListener { dismiss() }
|
||||||
|
|
||||||
|
if (reportType == REPORT_TYPE_USER) {
|
||||||
|
binding.toolbarTitle.text = getString(R.string.report_player_toolbar_title, profileName)
|
||||||
|
binding.additionalExplanationTextview.visibility = View.VISIBLE
|
||||||
|
binding.infoTextInputLayout.hint = getString(R.string.report_player_hint)
|
||||||
|
binding.additionalExplanationTextview.setMarkdown(
|
||||||
|
getString(
|
||||||
|
R.string.report_user_description,
|
||||||
|
profileName
|
||||||
|
)
|
||||||
|
)
|
||||||
|
binding.reportExplanationTextview.setMarkdown(getString(R.string.report_user_explanation))
|
||||||
|
binding.titleTextView.text = getString(R.string.report_player_title, profileName)
|
||||||
|
binding.messageTextView.visibility = View.GONE
|
||||||
|
} else if (reportType == REPORT_TYPE_MESSAGE) {
|
||||||
|
binding.additionalExplanationTextview.visibility = View.GONE
|
||||||
|
binding.infoTextInputLayout.hint = getString(R.string.report_message_hint)
|
||||||
|
binding.reportExplanationTextview.setMarkdown(getString(R.string.report_message_explanation))
|
||||||
|
binding.titleTextView.text = getString(R.string.report_message_title, profileName)
|
||||||
|
binding.messageTextView.text = messageText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun reportMessage() {
|
||||||
|
if (isReporting) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isReporting = true
|
||||||
|
messageID?.let {
|
||||||
|
lifecycleScope.launch(
|
||||||
|
ExceptionHandler.coroutine {
|
||||||
|
isReporting = false
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
socialRepository.flagMessage(
|
||||||
|
messageID ?: "",
|
||||||
|
binding.additionalInfoEdittext.text.toString(),
|
||||||
|
groupID
|
||||||
|
)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun reportUser() {
|
||||||
|
if (isReporting) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val userIdBeingReported = reportingUserId
|
||||||
|
if (userIdBeingReported.isNullOrBlank()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
isReporting = true
|
||||||
|
lifecycleScope.launchCatching {
|
||||||
|
val reportReasonInfo = binding.additionalInfoEdittext.text.toString()
|
||||||
|
val updateData = mapOf(
|
||||||
|
"comment" to reportReasonInfo,
|
||||||
|
"source" to (source ?: "")
|
||||||
|
)
|
||||||
|
socialRepository.reportMember(userIdBeingReported, updateData)
|
||||||
|
socialRepository.blockMember(userIdBeingReported)
|
||||||
|
Toast.makeText(context, "$profileName Reported", Toast.LENGTH_SHORT).show()
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG = "ReportBottomSheetFragment"
|
||||||
|
const val REPORT_TYPE_MESSAGE = "report_type_message"
|
||||||
|
const val REPORT_TYPE_USER = "report_type_user"
|
||||||
|
|
||||||
|
private const val REPORTING_USER_ID = "reporting_user_id"
|
||||||
|
private const val REPORT_TYPE = "report_type"
|
||||||
|
private const val PROFILE_NAME = "profile_name"
|
||||||
|
private const val MESSAGE_ID = "message_id"
|
||||||
|
private const val MESSAGE_TEXT = "message_text"
|
||||||
|
private const val GROUP_ID = "group_id"
|
||||||
|
private const val SOURCE_VIEW = "source_view"
|
||||||
|
|
||||||
|
|
||||||
|
fun newInstance(
|
||||||
|
reportType: String,
|
||||||
|
profileName: String = "",
|
||||||
|
userIdBeingReported: String,
|
||||||
|
messageId: String = "",
|
||||||
|
messageText: String,
|
||||||
|
groupId: String,
|
||||||
|
sourceView: String
|
||||||
|
): ReportBottomSheetFragment {
|
||||||
|
val args = Bundle()
|
||||||
|
args.putString(REPORT_TYPE, reportType)
|
||||||
|
args.putString(PROFILE_NAME, profileName)
|
||||||
|
args.putString(REPORTING_USER_ID, userIdBeingReported)
|
||||||
|
args.putString(MESSAGE_ID, messageId)
|
||||||
|
args.putString(MESSAGE_TEXT, messageText)
|
||||||
|
args.putString(GROUP_ID, groupId)
|
||||||
|
args.putString(SOURCE_VIEW, sourceView)
|
||||||
|
val fragment = ReportBottomSheetFragment()
|
||||||
|
fragment.arguments = args
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@ import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
||||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||||
import com.habitrpg.android.habitica.ui.adapter.social.ChatRecyclerViewAdapter
|
import com.habitrpg.android.habitica.ui.adapter.social.ChatRecyclerViewAdapter
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||||
|
import com.habitrpg.android.habitica.ui.fragments.ReportBottomSheetFragment
|
||||||
import com.habitrpg.android.habitica.ui.helpers.AutocompleteAdapter
|
import com.habitrpg.android.habitica.ui.helpers.AutocompleteAdapter
|
||||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.GroupViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.GroupViewModel
|
||||||
|
|
@ -78,7 +79,7 @@ open class ChatFragment : BaseFragment<FragmentChatBinding>() {
|
||||||
chatAdapter?.let { adapter ->
|
chatAdapter?.let { adapter ->
|
||||||
adapter.onOpenProfile = { userId -> FullProfileActivity.open(userId) }
|
adapter.onOpenProfile = { userId -> FullProfileActivity.open(userId) }
|
||||||
adapter.onDeleteMessage = { this.showDeleteConfirmationDialog(it) }
|
adapter.onDeleteMessage = { this.showDeleteConfirmationDialog(it) }
|
||||||
adapter.onFlagMessage = { this.showFlagConfirmationDialog(it) }
|
adapter.onFlagMessage = { this.showFlagMessageBottomSheet(it) }
|
||||||
adapter.onReply = { setReplyTo(it) }
|
adapter.onReply = { setReplyTo(it) }
|
||||||
adapter.onCopyMessage = { this.copyMessageToClipboard(it) }
|
adapter.onCopyMessage = { this.copyMessageToClipboard(it) }
|
||||||
adapter.onMessageLike = { viewModel.likeMessage(it) }
|
adapter.onMessageLike = { viewModel.likeMessage(it) }
|
||||||
|
|
@ -181,14 +182,18 @@ open class ChatFragment : BaseFragment<FragmentChatBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showFlagConfirmationDialog(chatMessage: ChatMessage) {
|
private fun showFlagMessageBottomSheet(chatMessage : ChatMessage) {
|
||||||
val directions = MainNavDirections.actionGlobalReportMessageActivity(
|
val reportBottomSheetFragment = ReportBottomSheetFragment.newInstance(
|
||||||
chatMessage.text ?: "",
|
reportType = ReportBottomSheetFragment.REPORT_TYPE_MESSAGE,
|
||||||
chatMessage.user ?: "",
|
profileName = chatMessage.username ?: "",
|
||||||
chatMessage.id,
|
messageId = chatMessage.id,
|
||||||
chatMessage.groupId
|
messageText = chatMessage.text ?: "",
|
||||||
|
groupId = chatMessage.groupId ?: "",
|
||||||
|
userIdBeingReported = chatMessage.userID ?: "",
|
||||||
|
sourceView = this::class.simpleName ?: ""
|
||||||
)
|
)
|
||||||
MainNavigationController.navigate(directions)
|
|
||||||
|
reportBottomSheetFragment.show(childFragmentManager, ReportBottomSheetFragment.TAG)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) {
|
private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import com.habitrpg.android.habitica.ui.activities.FullProfileActivity
|
||||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||||
import com.habitrpg.android.habitica.ui.adapter.social.InboxAdapter
|
import com.habitrpg.android.habitica.ui.adapter.social.InboxAdapter
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
|
import com.habitrpg.android.habitica.ui.fragments.ReportBottomSheetFragment
|
||||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.InboxViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.InboxViewModel
|
||||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||||
|
|
@ -99,7 +100,7 @@ class InboxMessageListFragment : BaseMainFragment<FragmentInboxMessageListBindin
|
||||||
FullProfileActivity.open(it)
|
FullProfileActivity.open(it)
|
||||||
}
|
}
|
||||||
adapter.onDeleteMessage = { showDeleteConfirmationDialog(it) }
|
adapter.onDeleteMessage = { showDeleteConfirmationDialog(it) }
|
||||||
adapter.onFlagMessage = { showFlagConfirmationDialog(it) }
|
adapter.onFlagMessage = { showFlagMessageBottomSheet(it) }
|
||||||
adapter.onCopyMessage = { copyMessageToClipboard(it) }
|
adapter.onCopyMessage = { copyMessageToClipboard(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -201,9 +202,18 @@ class InboxMessageListFragment : BaseMainFragment<FragmentInboxMessageListBindin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showFlagConfirmationDialog(chatMessage: ChatMessage) {
|
private fun showFlagMessageBottomSheet(chatMessage : ChatMessage) {
|
||||||
val directions = MainNavDirections.actionGlobalReportMessageActivity(chatMessage.text ?: "", chatMessage.user ?: "", chatMessage.id, null)
|
val reportBottomSheetFragment = ReportBottomSheetFragment.newInstance(
|
||||||
MainNavigationController.navigate(directions)
|
reportType = ReportBottomSheetFragment.REPORT_TYPE_MESSAGE,
|
||||||
|
profileName = chatMessage.username ?: "",
|
||||||
|
messageId = chatMessage.id,
|
||||||
|
messageText = chatMessage.text ?: "",
|
||||||
|
groupId = chatMessage.groupId ?: "",
|
||||||
|
userIdBeingReported = chatMessage.userID ?: "",
|
||||||
|
sourceView = this::class.simpleName ?: ""
|
||||||
|
)
|
||||||
|
|
||||||
|
reportBottomSheetFragment.show(childFragmentManager, ReportBottomSheetFragment.TAG)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) {
|
private fun showDeleteConfirmationDialog(chatMessage: ChatMessage) {
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ dependencies {
|
||||||
implementation("androidx.recyclerview:recyclerview:1.3.1")
|
implementation("androidx.recyclerview:recyclerview:1.3.1")
|
||||||
implementation("androidx.navigation:navigation-common-ktx:2.7.0")
|
implementation("androidx.navigation:navigation-common-ktx:2.7.0")
|
||||||
implementation("androidx.navigation:navigation-runtime-ktx:2.7.0")
|
implementation("androidx.navigation:navigation-runtime-ktx:2.7.0")
|
||||||
|
implementation("com.google.android.material:material:1.9.0")
|
||||||
|
|
||||||
testImplementation("io.mockk:mockk:$mockk_version")
|
testImplementation("io.mockk:mockk:$mockk_version")
|
||||||
testImplementation("io.mockk:mockk-android:$mockk_version")
|
testImplementation("io.mockk:mockk-android:$mockk_version")
|
||||||
|
|
|
||||||
152
common/src/main/res/layout/fragment_report_message.xml
Normal file
152
common/src/main/res/layout/fragment_report_message.xml
Normal file
|
|
@ -0,0 +1,152 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/bottom_sheet"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:behavior_hideable="true">
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/app_bar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
app:elevation="0dp">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/colorContentBackground"
|
||||||
|
android:minHeight="?attr/actionBarSize"
|
||||||
|
android:theme="@style/Toolbar"
|
||||||
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
|
||||||
|
app:theme="@style/ReportMessageToolbar"
|
||||||
|
app:title=""
|
||||||
|
app:titleTextColor="@color/text_primary">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/close_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/transparent"
|
||||||
|
android:paddingEnd="@dimen/spacing_small"
|
||||||
|
android:src="@drawable/ic_close_grey_800_24dp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="36dp"
|
||||||
|
android:text="@string/report_violation"
|
||||||
|
android:textColor="@color/text_primary"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/report_button"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:text="@string/report"
|
||||||
|
android:textColor="@color/red_50" />
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginBottom="0dp">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginBottom="0dp"
|
||||||
|
android:focusableInTouchMode="true"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="24dp"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingEnd="24dp"
|
||||||
|
android:paddingBottom="25dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/title_text_view"
|
||||||
|
style="@style/Caption1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="13dp"
|
||||||
|
android:layout_marginBottom="@dimen/spacing_medium"
|
||||||
|
android:textColor="@color/text_primary"
|
||||||
|
tools:text="Report NAME for violation:" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/message_text_view"
|
||||||
|
style="@style/Body2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/border_1f000000"
|
||||||
|
android:lineSpacingExtra="4sp"
|
||||||
|
android:paddingStart="13dp"
|
||||||
|
android:paddingTop="11dp"
|
||||||
|
android:paddingEnd="13dp"
|
||||||
|
android:paddingBottom="11dp"
|
||||||
|
android:textColor="@color/text_quad"
|
||||||
|
tools:text="This is the message that is reported" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/info_text_input_layout"
|
||||||
|
style="@style/TextInputLayoutAppearance"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/spacing_large"
|
||||||
|
android:layout_marginBottom="@dimen/spacing_large"
|
||||||
|
android:hint="@string/report_message_hint"
|
||||||
|
android:theme="@style/TextInputLayoutAppearanceTheme">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
|
android:id="@+id/additional_info_edittext"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:overScrollMode="always"
|
||||||
|
android:paddingStart="@dimen/spacing_large"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingEnd="@dimen/spacing_large"
|
||||||
|
android:paddingBottom="34dp"
|
||||||
|
android:textColor="@color/text_primary" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/additional_explanation_textview"
|
||||||
|
style="@style/Caption3"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/spacing_medium"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/text_ternary"
|
||||||
|
android:textColorLink="?colorAccent"
|
||||||
|
android:textStyle="italic"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:text="@string/report_user_description" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/report_explanation_textview"
|
||||||
|
style="@style/Caption3"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textColor="@color/text_ternary"
|
||||||
|
android:textColorLink="?colorAccent"
|
||||||
|
tools:text="@string/report_message_explanation" />
|
||||||
|
</LinearLayout>
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
Loading…
Reference in a new issue