diff --git a/Habitica/res/layout/fragment_no_party.xml b/Habitica/res/layout/fragment_no_party.xml
index 58d0ae609..ff4baa7f2 100644
--- a/Habitica/res/layout/fragment_no_party.xml
+++ b/Habitica/res/layout/fragment_no_party.xml
@@ -85,21 +85,14 @@
android:layout_marginTop="@dimen/spacing_large"/>
-
-
-
+ android:paddingBottom="60dp"
+ app:cardBackgroundColor="@color/window_background">
-
+
-
diff --git a/Habitica/res/layout/shop_armoire_gear.xml b/Habitica/res/layout/shop_armoire_gear.xml
index f72adffa0..9e375e00b 100644
--- a/Habitica/res/layout/shop_armoire_gear.xml
+++ b/Habitica/res/layout/shop_armoire_gear.xml
@@ -3,6 +3,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:background="@drawable/layout_rounded_bg_window"
android:layout_marginHorizontal="12dp"
@@ -35,13 +36,17 @@
diff --git a/Habitica/res/layout/shop_section_header.xml b/Habitica/res/layout/shop_section_header.xml
index 25bab857a..8d4d5248c 100644
--- a/Habitica/res/layout/shop_section_header.xml
+++ b/Habitica/res/layout/shop_section_header.xml
@@ -70,9 +70,10 @@
style="@style/Body1"
android:layout_marginBottom="1dp"/>
diff --git a/Habitica/res/navigation/navigation.xml b/Habitica/res/navigation/navigation.xml
index d25a6780f..bd526b888 100644
--- a/Habitica/res/navigation/navigation.xml
+++ b/Habitica/res/navigation/navigation.xml
@@ -69,8 +69,8 @@
+ android:name="com.habitrpg.android.habitica.ui.fragments.social.party.PartySeekingFragment"
+ android:label="@string/find_more_members">
Renunciando
¿Estás seguro de que quieres ser un %s\?
¡Ahora eres un %s!
- ¡Tienes nuevo Equipamiento de Combate predeterminado que puedes cambiar en Equipo!
+
Elegir Clase
Volver Atrás
¿Estás seguro de que quieres renunciar\?
@@ -905,4 +905,4 @@
Siguiente Reloj de Arena
Tienes que formar parte de un Grupo antes de comenzar una misión
¿Estás seguro de que quieres reiniciar\?
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-bg/strings.xml b/Habitica/res/values-bg/strings.xml
index 414edaa1a..98d00837d 100644
--- a/Habitica/res/values-bg/strings.xml
+++ b/Habitica/res/values-bg/strings.xml
@@ -233,7 +233,7 @@
Отказване
Наистина ли искате да бъдете %s?
Вие вече сте %s!
- Вече имате ново бойно снаряжение по подразбиране, което можете да намерите в „Екипировка“!
+
Избиране на класа
Назад
Наистина ли искате да се откажете?
@@ -647,4 +647,4 @@
%1$s]]>
%1$s]]>
%1$s]]>
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-ca/strings.xml b/Habitica/res/values-ca/strings.xml
index 3cda15ea3..f7ac02316 100755
--- a/Habitica/res/values-ca/strings.xml
+++ b/Habitica/res/values-ca/strings.xml
@@ -183,7 +183,7 @@
No optar per res
Segur que vols ser un %s?
Ara ets un %s!
- Tens un nou Equip de Batalla per defecte que pots canviar a Equipament.
+
Escull la classe
Torna enrere
Estàs segur que no vols optar per res?
@@ -278,4 +278,4 @@
Obrir
Has guanyat un/a %1$s com a recompensa per a la teva devoció per millorar la teva vida.
El pròxim premi es desbloquejarà d\'aquí a %1$d inicis de sessió
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-cs/strings.xml b/Habitica/res/values-cs/strings.xml
index b59278ade..f60f96322 100755
--- a/Habitica/res/values-cs/strings.xml
+++ b/Habitica/res/values-cs/strings.xml
@@ -212,7 +212,7 @@
Neúčastnit se
Opravdu chceš být %s?
Nyní jsi %s!
- Máš novou výchozí Bojovou výzbroj, kterou si můžeš změnit ve Vybavení!
+
Vybrat třidu
Jít zpět
Jsi si jist, že se chceš neúčastnit?
@@ -494,4 +494,4 @@
Nemáte dostatek drahokamů k vytvoření výzvy.
Dejte své výzvě krátké a výstižné jméno
K vytvoření této výzvy potřebujete zvolit jméno.
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-de/strings.xml b/Habitica/res/values-de/strings.xml
index 72e5b8d93..cc29b84cb 100644
--- a/Habitica/res/values-de/strings.xml
+++ b/Habitica/res/values-de/strings.xml
@@ -232,7 +232,7 @@
Später entscheiden
Bist Du sicher, dass Du %s werden willst?
Du bist jetzt ein/eine %s!
- Du hast neue Basis-Kampfausrüstung, die Du im Ausrüstungsreiter wechseln kannst!
+
Klasse wählen
Zurück
Bist Du sicher, dass Du Dich noch nicht entscheiden willst?
@@ -1265,4 +1265,4 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben.
- Du
- Du und %d andere
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-en-rGB/strings.xml b/Habitica/res/values-en-rGB/strings.xml
index 1599fc882..8af2b2f63 100644
--- a/Habitica/res/values-en-rGB/strings.xml
+++ b/Habitica/res/values-en-rGB/strings.xml
@@ -213,7 +213,7 @@
Opt Out
Are you sure you want to be a %s?
You are now a %s!
- You have new default Battle Gear that you can change under Equipment!
+
Choose Class
Go Back
Are you sure you want to Opt Out?
@@ -1053,4 +1053,4 @@
Between October 29th and November 2nd, simply purchase any Gem bundle like usual and your account will be credited with the promotional amount of Gems. More Gems to spend, share, or save for any future releases!
View Gem Bundles
The Fall Gala is in full swing so we thought it was the perfect time for a Gem Sale! Now you will get more Gems with each purchase than ever before.
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-es/strings.xml b/Habitica/res/values-es/strings.xml
index 41e189102..9bc99991f 100644
--- a/Habitica/res/values-es/strings.xml
+++ b/Habitica/res/values-es/strings.xml
@@ -233,7 +233,7 @@
No elegir
¿Seguro que quieres ser %s?
¡Ahora eres un %s!
- ¡Tienes un nuevo Equipo de Combate que puedes ponerte en tu Equipamiento!
+
Elegir clase
Volver
¿Seguro que no quieres elegir?
@@ -1142,4 +1142,4 @@
Ahora estás suscrito por %s meses
Ganaste %s gemas.
Equipo de %s
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-fr/strings.xml b/Habitica/res/values-fr/strings.xml
index f17136001..ee1e6275a 100644
--- a/Habitica/res/values-fr/strings.xml
+++ b/Habitica/res/values-fr/strings.xml
@@ -232,7 +232,7 @@
Désactiver
Êtes vous sûr de vouloir devenir un %s \?
Vous êtes maintenant un %s !
- Vous avez une nouvelle tenue de combat par défaut que vous pouvez changer dans l\'équipement !
+
Choisissez une classe
Revenir
Confirmez-vous vouloir désactiver votre compte ?
@@ -1263,4 +1263,4 @@
- %d personne
- %d personnes
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-hr-rHR/strings.xml b/Habitica/res/values-hr-rHR/strings.xml
index b18e35513..4571c240c 100644
--- a/Habitica/res/values-hr-rHR/strings.xml
+++ b/Habitica/res/values-hr-rHR/strings.xml
@@ -232,7 +232,7 @@
Izaberi kasnije
Jesi li siguran/na da želiš biti %s?
Sada si %s!
- Imaš novu zadanu Ratnu Opremu koju možeš promijeniti pod Opremom!
+
Odaberi Klasu
Idi natrag
Jesi li siguran/na da želiš izabrati kasnije?
@@ -1140,4 +1140,4 @@
Vrste popisa zadataka
Kompaktno
Minimalno
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-in/strings.xml b/Habitica/res/values-in/strings.xml
index be762b675..d911c2b87 100644
--- a/Habitica/res/values-in/strings.xml
+++ b/Habitica/res/values-in/strings.xml
@@ -220,7 +220,7 @@
Matikan Fitur
Apakah kamu yakin ingin menjadi seorang %s?
Kamu sekarang seorang %s!
- Kamu memiliki Baju Perang baru yang dapat diganti pada menu Perlengkapan!
+
Pilih Kelas
Kembali
Apakah kamu yakin kamu ingin mematikan fitur?
@@ -959,4 +959,4 @@
Kamu mengobrak-abrik isi Peti dan menemukan makanan. Kenapa bisa ada di sini\?
Jual
Buat party baru
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-it/strings.xml b/Habitica/res/values-it/strings.xml
index 0227734e8..91c03e85e 100644
--- a/Habitica/res/values-it/strings.xml
+++ b/Habitica/res/values-it/strings.xml
@@ -232,7 +232,7 @@
Rinuncia
Vuoi davvero essere un %s?
Ora sei un %s!
- Hai del nuovo equipaggiamento da battaglia che puoi indossare, vai nella sezione Equipaggiamento!
+
Scegli classe
Ritorna
Vuoi davvero rinunciare?
@@ -1260,4 +1260,4 @@
- Tu
- Voi, %d altri
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-ja/strings.xml b/Habitica/res/values-ja/strings.xml
index 93dcb9d99..d93f3447e 100644
--- a/Habitica/res/values-ja/strings.xml
+++ b/Habitica/res/values-ja/strings.xml
@@ -232,7 +232,7 @@
選ばない
%s になります。いいですか?
あなたは%s に転職した!
- 新たな標準の武装を手に入れました。「装備」で取り換えることもできます!
+
クラスを選ぶ
戻る
選ばないでいい?
@@ -1261,4 +1261,4 @@
- あなたと他 %d
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-ko/strings.xml b/Habitica/res/values-ko/strings.xml
index fa90c3b5a..87ec43833 100644
--- a/Habitica/res/values-ko/strings.xml
+++ b/Habitica/res/values-ko/strings.xml
@@ -220,7 +220,7 @@
선택 유예
%s 이(가) 되고싶은 것이 확실한가요\?
%s이(가) 되었습니다!
- 장비 메뉴에서 교체할 수 있는 새로운 기본 전투 장비를 얻었습니다!
+
직업 선택
뒤로 가기
선택을 유예하고 싶은 것이 확실한가요?
@@ -1259,4 +1259,4 @@
공유 중인 과제 복사
그룹 계획 설정
할당된 과제와 열려 있는 과제를 개인 과제 목록에 표시
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-lt/strings.xml b/Habitica/res/values-lt/strings.xml
index 962bebe49..3d4022dbe 100644
--- a/Habitica/res/values-lt/strings.xml
+++ b/Habitica/res/values-lt/strings.xml
@@ -292,7 +292,7 @@
Warriors surinko daugiau ir geresnių kritinių paspaudimų, kurie atsitiktinai suteikia premiją „Gold“, „Experience“ ir „drop“ šansams atlikti užduotį. Jie taip pat susiduria su sunkia boso monstrų žala. Žaisti Warrior, jei radote motyvaciją iš neprognozuojamų jackpoto stiliaus apdovanojimų, arba norėsite išvalyti skausmą bosas Quests!
Atsisakymas
Dabar esate %s!
- Turite naują numatytąjį „Battle Gear“, kurį galite keisti pagal „Įranga“!
+
Pakeiskite savo klasę ir grąžinkite savo statistinius taškus už 3 brangakmenius.
Jei turite draugų, kurie jau naudojasi Habitica, pakvieskite juos pagal vartotojo vardą.
Habiticoje pasiekiau %d lygį, gerindamas savo tikrojo gyvenimo įpročius!
@@ -352,4 +352,4 @@
Užsisakydami gaunate šias naudingas išmokas:
Prenumeratos būsena
Palikite iššūkį
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-nl/strings.xml b/Habitica/res/values-nl/strings.xml
index 2c83f649a..d06059989 100644
--- a/Habitica/res/values-nl/strings.xml
+++ b/Habitica/res/values-nl/strings.xml
@@ -233,7 +233,7 @@
Afmelden
Weet je zeker dat je een %s wilt zijn?
Je bent nu een %s!
- Je hebt een nieuwe standaard gevechtsuitrusting die je kan veranderen onder Uitrusting!
+
Kies een Klasse
Ga terug
Weet je zeker dat je je wil afmelden?
@@ -994,4 +994,4 @@
Mystieke zandlopers zijn een zeldzaam soort betaalmiddel dat je alleen ontvangt bij een abonnement op Habitica dat minstens drie opeenvolgende maanden duurt. Je kunt er in de Tijdreiziger\'s winkel voorafgaande uitrustingssets, huisdieren, rijdieren, geanimeerde acthergronden of zelfs speciale queestes voor kopen.
\n
\nJe kunt maximaal vier mystieke zandlopers per jaar ontvangen. Het tijdstip dat je ze krijgt hangt af van wanneer je abonnement wordt herniewd. Ze worden uitgezonden op de eerste dag van een nieuwe maand nadat je laatste abonnementsbetaling je heeft gequalificeerd voor een zandloper. Zie de [Abonnementen]-pagina voor meer details.
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-no/strings.xml b/Habitica/res/values-no/strings.xml
index e893428f0..679319234 100755
--- a/Habitica/res/values-no/strings.xml
+++ b/Habitica/res/values-no/strings.xml
@@ -202,7 +202,7 @@
Reserver Deg
Er du sikker på at du vil være en %s?
Du er nå en %s!
- Du har nytt standard stridsutstyr som du kan bytte til under Utstyr!
+
Velg Klasse
Gå Tilbake
Er du sikker på at du vil reservere deg?
@@ -417,4 +417,4 @@
Endre e-post adresse
Endre
Styrke
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-pl/strings.xml b/Habitica/res/values-pl/strings.xml
index b23a19a5a..4c54dc76e 100644
--- a/Habitica/res/values-pl/strings.xml
+++ b/Habitica/res/values-pl/strings.xml
@@ -223,7 +223,7 @@
Wycofaj się
Jesteś pewien, że chcesz być %s?
Jesteś teraz %s!
- Masz nowe domyślne wyposażenie bojowe, które możesz zmienić pod Wyposażeniem!
+
Wybierz klasę postaci
Wróć
Czy na pewno chcesz wyjść?
@@ -781,4 +781,4 @@
Dostępne dla %s
Niezapisane zmiany
Jesteś pewien, że chcesz porzucić zmiany w tym zadaniu\?
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-pt-rBR/strings.xml b/Habitica/res/values-pt-rBR/strings.xml
index b70b5b9d9..7dfc67fcd 100644
--- a/Habitica/res/values-pt-rBR/strings.xml
+++ b/Habitica/res/values-pt-rBR/strings.xml
@@ -232,7 +232,7 @@
Decidir mais tarde
Você tem certeza que quer ser um(a) %s\?
Você é um(a) %s agora!
- Você tem um novo Equipamento de Batalha padrão, que pode ser trocado em Equipamentos!
+
Escolha a sua Classe
Voltar
Você tem certeza de que ainda não quer escolher\?
@@ -1262,4 +1262,4 @@
- Você
- Vocês, %d outros
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-pt-rPT/strings.xml b/Habitica/res/values-pt-rPT/strings.xml
index 2724d0de4..40b7afee0 100644
--- a/Habitica/res/values-pt-rPT/strings.xml
+++ b/Habitica/res/values-pt-rPT/strings.xml
@@ -364,7 +364,7 @@
\n • Seus itens de missão de dano ou coleta de chefe permanecerão pendentes até o check-out
Guerreiros obtêm mais Golpes Críticos e infligem maior dano aos Monstros. Joga como Guerreiro se quiseres derrotar Monstros mais facilmente! Guerreiros beneficiam de uma elevada estatística de Força.
Optando por
- Você tem um novo Battle Gear padrão que pode ser alterado em Equipamento!
+
Mude sua classe e devolva seus pontos de status por 3 gemas.
Notificações
Já sabes tudo o que se passa!
@@ -718,4 +718,4 @@
Usar item em membro de equipa>
Alterações não gravadas
Tens a certeza de que queres descartar as alterações nesta tarefa\?
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-ro/strings.xml b/Habitica/res/values-ro/strings.xml
index e5fb00f96..8b7beabd5 100755
--- a/Habitica/res/values-ro/strings.xml
+++ b/Habitica/res/values-ro/strings.xml
@@ -208,7 +208,7 @@
Alege să nu iei parte
Ești sigur că vrei să fii %s?
De acum ești %s!
- Acum ai Echipament de Luptă de bază, pe care îl poți schimba de la Echipament!
+
Alege Clasa
Mergi înapoi
Ești sigur că vrei să nu iei parte?
@@ -509,4 +509,4 @@
Ian Ghidul Expedițiilor
Vrăjitoarea Sezonului
Atac furios:
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-ru/strings.xml b/Habitica/res/values-ru/strings.xml
index 1ccf4418b..956e4b4f7 100644
--- a/Habitica/res/values-ru/strings.xml
+++ b/Habitica/res/values-ru/strings.xml
@@ -230,7 +230,7 @@
Отказаться
Вы уверены, что хотите продолжить как %s\?
Теперь вы %s!
- У вас есть новая боевая экипировка по умолчанию, которую вы можете сменить в разделе Снаряжение!
+
Выбрать класс
Вернуться назад
Вы уверены, что хотите отказаться?
@@ -1266,4 +1266,4 @@
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-sv/strings.xml b/Habitica/res/values-sv/strings.xml
index eea1421ba..2ddbed534 100755
--- a/Habitica/res/values-sv/strings.xml
+++ b/Habitica/res/values-sv/strings.xml
@@ -202,7 +202,7 @@
Välj bort
Är du säker på att du vill vara en %s?
Du är nu en %s!
- Du har ny standard Stridsutrustning som du kan ändra under Utrustning!
+
Välj klass
Gå tillbaka
Är du säker på att du vill välja bort?
@@ -634,4 +634,4 @@
Ägar
Egenskapsfördelning
Erfarenhetspoäng
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-tr/strings.xml b/Habitica/res/values-tr/strings.xml
index bfd39404b..3f4185c37 100644
--- a/Habitica/res/values-tr/strings.xml
+++ b/Habitica/res/values-tr/strings.xml
@@ -233,7 +233,7 @@
Çekil
Bir %s olmak istediğine emin misin?
Yeni sınıfın: %s!
- Ekipmanlar menüsü altında değiştirebileceğin yeni varsayılan Savaş Ekipmanın var!
+
Sınıf Seç
Geri Dön
Çekilmek istediğinden emin misin?
@@ -1151,4 +1151,4 @@
Kazanan olarak seçildiniz! Zaferiniz Başarımlarınıza kaydedildi.
Davet edilmedikçe bu Takıma tekrar katılamazsınız.
Bir Meydan Okuma kazandınız
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-uk/strings.xml b/Habitica/res/values-uk/strings.xml
index 4e5aa8365..42d9bd0fa 100755
--- a/Habitica/res/values-uk/strings.xml
+++ b/Habitica/res/values-uk/strings.xml
@@ -296,7 +296,7 @@
Ви дійсно хочете відмовитись\?
Назад
Виберіть клас
- У вас є нове бойове спорядження за замовчуванням, яке ви можете змінити в розділі Спорядження!
+
Тепер ви - %s!
Ви впевнені, що хочете бути %s\?
Не приймати участь
@@ -1190,4 +1190,4 @@
Перегляньте рекламу, щоб відкрити знову
Шанси випадіння з чарівної скрині
Перегляньте рекламу, щоб відродитись
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-vi/strings.xml b/Habitica/res/values-vi/strings.xml
index d37475728..dc3f9b2c6 100755
--- a/Habitica/res/values-vi/strings.xml
+++ b/Habitica/res/values-vi/strings.xml
@@ -288,7 +288,7 @@
Bạn có chắc là muốn thay đổi chức nghiệp của mình không\? Điều này sẽ tốn 3 gem đấy.
Mở trong cửa hàng
Thay đổi chức nghiệp của bạn và hoàn lại điểm chỉ số với 3 gem.
- Bạn có Trang bị Chiến đấu mặc định mới mà bạn có thể thay đổi ở dưới phần Trang bị!
+
Cập nhập đội trên Trạng thái
Bạn đã hoàn thành tất cả Việc hằng ngày của mình. Giỏi lắm!
Thêm Phần thưởng
@@ -1076,4 +1076,4 @@
Chế độ Ban đêm
Một người dùng bị chặn không thể gửi bạn Tin nhắn Riêng tư nhưng bạn vẫn sẽ thấy bài đăng của họ ở Quán rượu hay Bang hội.
Hoàn thành
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-zh-rTW/strings.xml b/Habitica/res/values-zh-rTW/strings.xml
index 476742848..48d237cba 100644
--- a/Habitica/res/values-zh-rTW/strings.xml
+++ b/Habitica/res/values-zh-rTW/strings.xml
@@ -229,7 +229,7 @@
退出
你確定想要成為%1$s嗎?
你成為了%s!
- 你有新的默認的戰鬥裝備,你可以在裝備裡替換!
+
選擇職業
返回
你確定要退出嗎?
@@ -1229,4 +1229,4 @@
在訂閱時,你無法刪除你的帳號。請先取消訂閱。
調整你的日子什麼時候切換到默認的午夜。
但是你可以通過你的努力把它們贏回來!加油--你可以的。
-
\ No newline at end of file
+
diff --git a/Habitica/res/values-zh/strings.xml b/Habitica/res/values-zh/strings.xml
index 869d4af2f..00663b30c 100644
--- a/Habitica/res/values-zh/strings.xml
+++ b/Habitica/res/values-zh/strings.xml
@@ -233,7 +233,7 @@
退出
你确定想要成为%s吗?
你现在是 %s级了!
- 你有新的默认战斗装备,你可以在装备栏换上它们!
+
选择职业
返回
你确定要退出吗?
@@ -1262,4 +1262,4 @@
- %d人
-
\ No newline at end of file
+
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index fc168b6e8..e48f8a9c1 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -291,9 +291,9 @@
Opt Out
Opting Out
Are you sure you want to be a %s?
- Do you want to change your class to %s for %d gems?
+ Do you want to change your class to %s for %d Gems?
You are now a %s!
- You have new default Battle Gear that you can change under Equipment!
+ You can use %s skills and purchase gear from shops!
Choose Class
Go Back
Are you sure you want to Opt Out?
@@ -1381,6 +1381,7 @@
Change class to %s
You own all %s gear
New gear is released during the seasonal Galas. Until then, theres %d pieces of gear in the Enchanted Armoire to find!
+ Unlock %s gear and skills
- You
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
index 75dd45850..900dbafe3 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
@@ -4,21 +4,12 @@ import androidx.test.core.app.ActivityScenario
import androidx.test.core.app.launchActivity
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
-import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.R
-import com.habitrpg.android.habitica.components.UserComponent
-import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
-import com.habitrpg.android.habitica.ui.fragments.tasks.TaskRecyclerViewFragment
-import com.habitrpg.android.habitica.ui.fragments.tasks.TasksFragment
-import com.habitrpg.android.habitica.ui.viewmodels.MainActivityViewModel
-import com.habitrpg.android.habitica.ui.viewmodels.NotificationsViewModel
import io.github.kakaocup.kakao.common.views.KView
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.toolbar.KToolbar
import io.mockk.every
-import io.mockk.mockk
-import io.mockk.mockkObject
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -43,16 +34,6 @@ class MainActivityTest : ActivityTestCase() {
@Before
fun setup() {
every { hostConfig.hasAuthentication() } returns true
- val mockComponent: UserComponent = mockk(relaxed = true)
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- mockkObject(HabiticaBaseApplication)
- every { HabiticaBaseApplication.userComponent } returns mockComponent
}
@Test
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
index 82af0c4ca..2cff85672 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
@@ -10,7 +10,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.R
-import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.models.tasks.Task
import com.habitrpg.shared.habitica.models.tasks.Frequency
import com.habitrpg.shared.habitica.models.tasks.TaskType
@@ -65,10 +64,7 @@ class TaskFormActivityTest : ActivityTestCase() {
@Before
fun setup() {
every { sharedPreferences.getString("FirstDayOfTheWeek", any()) } returns "-1"
- val mockComponent: UserComponent = mockk(relaxed = true)
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
mockkObject(HabiticaBaseApplication)
- every { HabiticaBaseApplication.userComponent } returns mockComponent
}
private fun hasBasicTaskEditingViews() {
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragmentTest.kt
index 96be8d381..4fb4aee8a 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragmentTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragmentTest.kt
@@ -8,7 +8,6 @@ import androidx.test.espresso.UiController
import androidx.test.espresso.ViewAction
import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.R
-import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
import com.habitrpg.android.habitica.interactors.HatchPetUseCase
import com.habitrpg.android.habitica.models.inventory.Food
@@ -78,11 +77,6 @@ internal class ItemRecyclerFragmentTest : FragmentTestCase()) } answers { initializeInjects(this.args.first()) }
- mockkObject(HabiticaBaseApplication)
- every { HabiticaBaseApplication.userComponent } returns mockComponent
}
override fun launchFragment(args: Bundle?) {
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailFragmentTest.kt
index 95f8768b7..818af455b 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailFragmentTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailFragmentTest.kt
@@ -4,7 +4,6 @@ import android.os.Bundle
import androidx.fragment.app.testing.launchFragmentInContainer
import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.R
-import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.databinding.FragmentRecyclerviewBinding
import com.habitrpg.android.habitica.interactors.FeedPetUseCase
import com.habitrpg.android.habitica.models.user.OwnedItem
@@ -52,11 +51,6 @@ internal class PetDetailRecyclerFragmentTest :
fragment = spyk()
fragment.shouldInitializeComponent = false
-
- val mockComponent: UserComponent = mockk(relaxed = true)
- every { mockComponent.inject(any()) } answers { initializeInjects(this.args.first()) }
- mockkObject(HabiticaBaseApplication)
- every { HabiticaBaseApplication.userComponent } returns mockComponent
}
override fun launchFragment(args: Bundle?) {
diff --git a/Habitica/src/debug/java/com/habitrpg/android/habitica/HabiticaApplication.java b/Habitica/src/debug/java/com/habitrpg/android/habitica/HabiticaApplication.java
index afc43c2c9..cfb2767b5 100644
--- a/Habitica/src/debug/java/com/habitrpg/android/habitica/HabiticaApplication.java
+++ b/Habitica/src/debug/java/com/habitrpg/android/habitica/HabiticaApplication.java
@@ -1,8 +1,4 @@
package com.habitrpg.android.habitica;
-import com.habitrpg.android.habitica.components.AppComponent;
-import com.habitrpg.android.habitica.components.DaggerAppComponent;
-import com.habitrpg.android.habitica.modules.AppModule;
-
public class HabiticaApplication extends HabiticaBaseApplication {
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt
index b60edd96f..60af70990 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt
@@ -27,6 +27,7 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.helpers.AdHandler
import com.habitrpg.android.habitica.helpers.AmplitudeManager
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import com.habitrpg.android.habitica.ui.activities.BaseActivity
import com.habitrpg.android.habitica.ui.activities.LoginActivity
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
@@ -53,6 +54,8 @@ abstract class HabiticaBaseApplication : Application(), Application.ActivityLife
internal lateinit var analyticsManager: AnalyticsManager
@Inject
internal lateinit var pushNotificationManager: PushNotificationManager
+ @Inject
+ internal lateinit var authenticationHandler: AuthenticationHandler
/**
* For better performance billing class should be used as singleton
*/
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.kt
deleted file mode 100644
index b2e6ba145..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.habitrpg.android.habitica.components
-
-import com.habitrpg.android.habitica.modules.ApiModule
-import com.habitrpg.android.habitica.modules.AppModule
-import com.habitrpg.android.habitica.modules.DeveloperModule
-import com.habitrpg.android.habitica.modules.RepositoryModule
-import com.habitrpg.android.habitica.modules.UserModule
-import com.habitrpg.android.habitica.modules.UserRepositoryModule
-import dagger.Component
-import javax.inject.Singleton
-
-@Singleton
-@Component(modules = [DeveloperModule::class, AppModule::class, ApiModule::class, RepositoryModule::class])
-interface AppComponent {
- fun plus(
- userModule : UserModule?,
- userRepositoryModule : UserRepositoryModule?
- ) : UserComponent?
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.kt
deleted file mode 100644
index 78b152db1..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/UserComponent.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.habitrpg.android.habitica.components
-
-import com.habitrpg.android.habitica.modules.UserModule
-import com.habitrpg.android.habitica.modules.UserRepositoryModule
-import dagger.Subcomponent
-import dagger.hilt.android.scopes.ActivityRetainedScoped
-import dagger.hilt.android.scopes.ServiceScoped
-
-@ActivityRetainedScoped
-@ServiceScoped
-@Subcomponent(modules = [UserModule::class, UserRepositoryModule::class])
-interface UserComponent {
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt
index b768f2623..198e969b8 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.kt
@@ -57,8 +57,7 @@ interface TaskRepository : BaseRepository {
fun createTaskInBackground(task: Task, assignChanges: Map>)
- fun getTaskCopies(userId: String): Flow>
-
+ fun getTaskCopies(): Flow>
fun getTaskCopies(tasks: List): List
suspend fun retrieveDailiesFromDate(date: Date): TaskList?
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt
index f7754e49c..83f8b6744 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.kt
@@ -4,13 +4,17 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.data.BaseRepository
import com.habitrpg.android.habitica.data.local.BaseLocalRepository
import com.habitrpg.android.habitica.models.BaseObject
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
abstract class BaseRepositoryImpl(
protected val localRepository: T,
protected val apiClient: ApiClient,
- protected val userID: String = ""
+ protected val authenticationHandler : AuthenticationHandler
) : BaseRepository {
+ val currentUserID : String
+ get() = authenticationHandler.currentUserID ?: ""
+
override fun close() {
this.localRepository.close()
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt
index dec714963..0a900c4fb 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ChallengeRepositoryImpl.kt
@@ -8,6 +8,7 @@ import com.habitrpg.android.habitica.models.social.Challenge
import com.habitrpg.android.habitica.models.social.ChallengeMembership
import com.habitrpg.android.habitica.models.tasks.Task
import com.habitrpg.android.habitica.models.tasks.TaskList
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import com.habitrpg.shared.habitica.models.tasks.TaskType
import com.habitrpg.shared.habitica.models.tasks.TasksOrder
import kotlinx.coroutines.flow.Flow
@@ -15,19 +16,19 @@ import kotlinx.coroutines.flow.Flow
class ChallengeRepositoryImpl(
localRepository: ChallengeLocalRepository,
apiClient: ApiClient,
- userID: String
-) : BaseRepositoryImpl(localRepository, apiClient, userID), ChallengeRepository {
+ authenticationHandler: AuthenticationHandler
+) : BaseRepositoryImpl(localRepository, apiClient, authenticationHandler), ChallengeRepository {
override fun isChallengeMember(challengeID: String): Flow {
- return localRepository.isChallengeMember(userID, challengeID)
+ return localRepository.isChallengeMember(currentUserID, challengeID)
}
override fun getChallengepMembership(id: String): Flow {
- return localRepository.getChallengeMembership(userID, id)
+ return localRepository.getChallengeMembership(currentUserID, id)
}
override fun getChallengeMemberships(): Flow> {
- return localRepository.getChallengeMemberships(userID)
+ return localRepository.getChallengeMemberships(currentUserID)
}
override fun getChallenge(challengeId: String): Flow {
@@ -130,26 +131,26 @@ class ChallengeRepositoryImpl(
}
override fun getUserChallenges(userId: String?): Flow> {
- return localRepository.getUserChallenges(userId ?: userID)
+ return localRepository.getUserChallenges(userId ?: currentUserID)
}
override suspend fun retrieveChallenges(page: Int, memberOnly: Boolean): List? {
val challenges = apiClient.getUserChallenges(page, memberOnly)
if (challenges != null) {
- localRepository.saveChallenges(challenges, page == 0, memberOnly, userID)
+ localRepository.saveChallenges(challenges, page == 0, memberOnly, currentUserID)
}
return challenges
}
override suspend fun leaveChallenge(challenge: Challenge, keepTasks: String): Void? {
apiClient.leaveChallenge(challenge.id ?: "", LeaveChallengeBody(keepTasks))
- localRepository.setParticipating(userID, challenge.id ?: "", false)
+ localRepository.setParticipating(currentUserID, challenge.id ?: "", false)
return null
}
override suspend fun joinChallenge(challenge: Challenge): Challenge? {
val returnedChallenge = apiClient.joinChallenge(challenge.id ?: "") ?: return null
- localRepository.setParticipating(userID, returnedChallenge.id ?: "", true)
+ localRepository.setParticipating(currentUserID, returnedChallenge.id ?: "", true)
return returnedChallenge
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt
index 0800867f1..ea13d93ba 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/ContentRepositoryImpl.kt
@@ -8,6 +8,7 @@ import com.habitrpg.android.habitica.helpers.AprilFoolsHandler
import com.habitrpg.android.habitica.models.ContentResult
import com.habitrpg.android.habitica.models.WorldState
import com.habitrpg.android.habitica.models.inventory.SpecialItem
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import io.realm.RealmList
import kotlinx.coroutines.flow.Flow
import java.util.Date
@@ -15,8 +16,9 @@ import java.util.Date
class ContentRepositoryImpl(
localRepository: T,
apiClient: ApiClient,
- context: Context
-) : BaseRepositoryImpl(localRepository, apiClient), ContentRepository {
+ context: Context,
+ authenticationHandler: AuthenticationHandler
+) : BaseRepositoryImpl(localRepository, apiClient, authenticationHandler), ContentRepository {
private val mysteryItem = SpecialItem.makeMysteryItem(context)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt
index ee17bff76..fee731782 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/CustomizationRepositoryImpl.kt
@@ -4,13 +4,14 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.data.CustomizationRepository
import com.habitrpg.android.habitica.data.local.CustomizationLocalRepository
import com.habitrpg.android.habitica.models.inventory.Customization
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import kotlinx.coroutines.flow.Flow
class CustomizationRepositoryImpl(
localRepository: CustomizationLocalRepository,
apiClient: ApiClient,
- userID: String
-) : BaseRepositoryImpl(localRepository, apiClient, userID), CustomizationRepository {
+ authenticationHandler: AuthenticationHandler
+) : BaseRepositoryImpl(localRepository, apiClient, authenticationHandler), CustomizationRepository {
override fun getCustomizations(type: String, category: String?, onlyAvailable: Boolean): Flow> {
return localRepository.getCustomizations(type, category, onlyAvailable)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt
index 8c74b2722..d6c229a86 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/FAQRepositoryImpl.kt
@@ -4,14 +4,20 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.data.FAQRepository
import com.habitrpg.android.habitica.data.local.FAQLocalRepository
import com.habitrpg.android.habitica.models.FAQArticle
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import kotlinx.coroutines.flow.Flow
-class FAQRepositoryImpl(localRepository: FAQLocalRepository, apiClient: ApiClient, userID: String) : BaseRepositoryImpl(localRepository, apiClient, userID), FAQRepository {
- override fun getArticle(position: Int): Flow {
+class FAQRepositoryImpl(
+ localRepository : FAQLocalRepository,
+ apiClient : ApiClient,
+ authenticationHandler : AuthenticationHandler
+) : BaseRepositoryImpl(localRepository, apiClient, authenticationHandler),
+ FAQRepository {
+ override fun getArticle(position : Int) : Flow {
return localRepository.getArticle(position)
}
- override fun getArticles(): Flow> {
+ override fun getArticles() : Flow> {
return localRepository.articles
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt
index ae27eefa1..cf537109d 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/InventoryRepositoryImpl.kt
@@ -1,3 +1,5 @@
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
package com.habitrpg.android.habitica.data.implementation
import com.habitrpg.android.habitica.data.ApiClient
@@ -21,16 +23,19 @@ import com.habitrpg.android.habitica.models.user.OwnedItem
import com.habitrpg.android.habitica.models.user.OwnedMount
import com.habitrpg.android.habitica.models.user.OwnedPet
import com.habitrpg.android.habitica.models.user.User
+import com.habitrpg.android.habitica.modules.AuthenticationHandler
import com.habitrpg.shared.habitica.models.responses.FeedResponse
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.firstOrNull
+import kotlinx.coroutines.flow.flatMapLatest
class InventoryRepositoryImpl(
localRepository: InventoryLocalRepository,
apiClient: ApiClient,
- userID: String,
+ authenticationHandler: AuthenticationHandler,
var appConfigManager: AppConfigManager
-) : BaseRepositoryImpl(localRepository, apiClient, userID), InventoryRepository {
+) : BaseRepositoryImpl(localRepository, apiClient, authenticationHandler), InventoryRepository {
override fun getQuestContent(keys: List) = localRepository.getQuestContent(keys)
override fun getQuestContent(key: String) = localRepository.getQuestContent(key)
@@ -72,11 +77,11 @@ class InventoryRepositoryImpl(
}
override fun getOwnedItems(itemType: String, includeZero: Boolean): Flow> {
- return localRepository.getOwnedItems(itemType, userID, includeZero)
+ return authenticationHandler.userIDFlow.flatMapLatest { localRepository.getOwnedItems(itemType, it, includeZero) }
}
override fun getOwnedItems(includeZero: Boolean): Flow