diff --git a/Habitica/res/values-b+es+419/strings.xml b/Habitica/res/values-b+es+419/strings.xml index 8194f6d86..1673f8d0e 100644 --- a/Habitica/res/values-b+es+419/strings.xml +++ b/Habitica/res/values-b+es+419/strings.xml @@ -773,7 +773,7 @@ Tu grupo, %1$s, tiene nuevos mensajes Tienes %1$s puntos de atributo sin asignar Tienes un nuevo Objeto Misterioso - Fuiste invitado a unirte al grupo %1$s + %1$s fuiste invitado a unirte al grupo %2$s Fuiste invitado a ser parte del gremio privado %1$s Fuiste invitado a ser parte del gremio %1$s Fuiste invitado a participar de la misión %1$s diff --git a/Habitica/res/values-bg/strings.xml b/Habitica/res/values-bg/strings.xml index 98d00837d..ff0461285 100644 --- a/Habitica/res/values-bg/strings.xml +++ b/Habitica/res/values-bg/strings.xml @@ -643,7 +643,7 @@ %1$s]]> %1$s неразпределени показателни точки]]> тайнствен предмет]]> - %1$s]]> + %1$s Получихте покана за присъединяване към групата %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-de/strings.xml b/Habitica/res/values-de/strings.xml index cc29b84cb..a20e6a5f7 100644 --- a/Habitica/res/values-de/strings.xml +++ b/Habitica/res/values-de/strings.xml @@ -654,7 +654,7 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben. %1$s, hat neue Beiträge]]> %1$s Attributpunkt(e) verteilen]]> Überraschungsgegenstand]]> - %1$s eingeladen]]> + %1$s du wurdest zu der Gruppe %2$s eingeladen]]> Du wurdest eingeladen, der privaten Gilde %1$s beizutreten Du wurdest eingeladen, der Gilde %1$s beizutreten %1$s eingeladen]]> diff --git a/Habitica/res/values-en-rGB/strings.xml b/Habitica/res/values-en-rGB/strings.xml index 8af2b2f63..912817ff6 100644 --- a/Habitica/res/values-en-rGB/strings.xml +++ b/Habitica/res/values-en-rGB/strings.xml @@ -653,7 +653,7 @@ %1$s, has new posts]]> %1$s unallocated Stat Points]]> Mystery Items]]> - %1$s]]> + %1$s has invited you to join the party %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-es/strings.xml b/Habitica/res/values-es/strings.xml index 9bc99991f..a374877cb 100644 --- a/Habitica/res/values-es/strings.xml +++ b/Habitica/res/values-es/strings.xml @@ -653,7 +653,7 @@ %1$s, tiene nuevos mensajes]]> %1$s Puntos de Estadísticas sin asignar]]> Objetos Misteriosos nuevos]]> - %1$s]]> + %1$s has sido invitado a unirte al Equipo %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-fr/strings.xml b/Habitica/res/values-fr/strings.xml index ee1e6275a..e2a7b2f39 100644 --- a/Habitica/res/values-fr/strings.xml +++ b/Habitica/res/values-fr/strings.xml @@ -652,7 +652,7 @@ %1$s, a de nouveaux messages]]> %1$s points d\'attribut non alloués]]> objets mystère]]> - %1$s]]> + %1$s vous avez reçu une invitation à rejoindre l\'équipe %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-hr-rHR/strings.xml b/Habitica/res/values-hr-rHR/strings.xml index 4571c240c..461127a21 100644 --- a/Habitica/res/values-hr-rHR/strings.xml +++ b/Habitica/res/values-hr-rHR/strings.xml @@ -677,7 +677,7 @@ Godina %s Klasa Jesi li siguran/la da želiš odbaciti promjene ovom zadatku\? - Pozvan/a si da se pridružiš Družini %1$s + %1$s Pozvan/a si da se pridružiš Družini %2$s Trebaš li promjenu svakodnevnice\? Postani %s Vile obavijesti ti daju prodornu rundu pljeska! Svaka čast! diff --git a/Habitica/res/values-in/strings.xml b/Habitica/res/values-in/strings.xml index d911c2b87..2c9f2a9d1 100644 --- a/Habitica/res/values-in/strings.xml +++ b/Habitica/res/values-in/strings.xml @@ -733,7 +733,7 @@ Kamu telah diundang untuk melaksanakan Misi %1$s Kamu telah diundang untuk bergabung dengan Guild %1$s Kamu telah diundang untuk bergabung dengan Guild pribadi %1$s - Kamu telah diundang untuk bergabung dengan Party %1$s + %1$s Kamu telah diundang untuk bergabung dengan Party %2$s Kamu memiliki Item Misteri baru Kamu memiliki %1$s Poin Stat yang belum dialokasikan Party-mu, %1$s, ada postingan baru diff --git a/Habitica/res/values-it/strings.xml b/Habitica/res/values-it/strings.xml index 91c03e85e..25cfa8533 100644 --- a/Habitica/res/values-it/strings.xml +++ b/Habitica/res/values-it/strings.xml @@ -643,7 +643,7 @@ %1$s, ha nuovi messaggi]]> %1$s Punti Statistica non allocati]]> Oggetti Misteriosi]]> - %1$s]]> + %1$s hai ricevuto un invito per unirti alla Squadra %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-ja/strings.xml b/Habitica/res/values-ja/strings.xml index d93f3447e..54907a7c4 100644 --- a/Habitica/res/values-ja/strings.xml +++ b/Habitica/res/values-ja/strings.xml @@ -652,7 +652,7 @@ あなたのパーティー、%1$sに新しい投稿があります %1$sポイントが割り当てできます。]]> 新しいミステリーアイテム - パーティー「%1$s」に招待されました + パーティー「%1$s」に招待されました %2$s プライベートギルド「%1$s」に招待されました %1$s」ギルドに招待されました %1$sクエストに招待されました diff --git a/Habitica/res/values-ko/strings.xml b/Habitica/res/values-ko/strings.xml index 87ec43833..8b9b7f6c8 100644 --- a/Habitica/res/values-ko/strings.xml +++ b/Habitica/res/values-ko/strings.xml @@ -715,7 +715,7 @@ %1$s 퀘스트에 초대되었습니다 %1$s 길드에 초대되었습니다 %1$s 비공개 길드에 초대되었습니다 - %1$s 파티에 초대되었습니다 + %1$s 파티에 초대되었습니다 %2$s "새로운 "미스터리 아이템이 있습니다 %1$s 개의 배분되지 않은 능력치 포인트가 있습니다 %1$s 파티창에 새로운 글이 올라왔습니다 diff --git a/Habitica/res/values-nl/strings.xml b/Habitica/res/values-nl/strings.xml index d06059989..ee79acc29 100644 --- a/Habitica/res/values-nl/strings.xml +++ b/Habitica/res/values-nl/strings.xml @@ -628,7 +628,7 @@ %1$s, heeft nieuwe berichten]]> %1$s niet toegekende statuspunten]]> Mysterieuze items]]> - %1$s]]> + %1$s je werd uitgenodigd om je aan te sluiten bij de Groep %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-pl/strings.xml b/Habitica/res/values-pl/strings.xml index 4c54dc76e..ff903906d 100644 --- a/Habitica/res/values-pl/strings.xml +++ b/Habitica/res/values-pl/strings.xml @@ -585,7 +585,7 @@ %1$s ma nowe posty]]> nieprzydzielone Punkty Atrybutów: %1$s]]> Tajemniczy Przedmiot]]> - %1$s]]> + %1$s zostałeś/aś zaproszony/a do Dryżyny %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-pt-rBR/strings.xml b/Habitica/res/values-pt-rBR/strings.xml index 7dfc67fcd..a7fceef4f 100644 --- a/Habitica/res/values-pt-rBR/strings.xml +++ b/Habitica/res/values-pt-rBR/strings.xml @@ -651,7 +651,7 @@ Seu Grupo, %1$s, tem novas publicações %1$s Pontos de Atributos não distribuidos]]> Você possui novos Itens Misteriosos - %1$s]]> + %1$s Você foi convidado para entrar em um Grupo %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-pt-rPT/strings.xml b/Habitica/res/values-pt-rPT/strings.xml index 40b7afee0..fc8b73e37 100644 --- a/Habitica/res/values-pt-rPT/strings.xml +++ b/Habitica/res/values-pt-rPT/strings.xml @@ -375,7 +375,7 @@ %1$s, tem novas mensagens]]> %1$s Ponto(s) de Atributo por alocar]]> Items Mistério novos]]> - %1$s]]> + %1$s foi convidado a juntar-se à Equipa %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-ru/strings.xml b/Habitica/res/values-ru/strings.xml index 956e4b4f7..4d85d3056 100644 --- a/Habitica/res/values-ru/strings.xml +++ b/Habitica/res/values-ru/strings.xml @@ -651,7 +651,7 @@ %1$s есть новые сообщения]]> %1$s очков]]> Таинственный предмет]]> - %1$s]]> + %1$s Вас пригласили в команду %2$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/res/values-tr/strings.xml b/Habitica/res/values-tr/strings.xml index 3f4185c37..9e3e2cb08 100644 --- a/Habitica/res/values-tr/strings.xml +++ b/Habitica/res/values-tr/strings.xml @@ -652,7 +652,7 @@ %1$s adlı Takımında yeni mesajlar var]]> %1$s adet dağıtılmamış Nitelik Puanın var.]]> Gizemli Eşyaların var]]> - %1$s Takımına davet edildin]]> + %2$s Takımına davet edildin %1$s]]> %1$s adlı özel Loncaya davet edildin]]> %1$s adlı Loncaya davet edildin]]> %1$s Görevine davet edildin]]> diff --git a/Habitica/res/values-uk/strings.xml b/Habitica/res/values-uk/strings.xml index 42d9bd0fa..2bd88e9bc 100755 --- a/Habitica/res/values-uk/strings.xml +++ b/Habitica/res/values-uk/strings.xml @@ -1007,7 +1007,7 @@ Вас запросили в гільдію %1$s Вас запросили на квест %1$s Вас запросили приєднатися до приватної гільдії %1$s - Вас запросили до команди %1$s + %1$s Вас запросили до команди %2$s Ви відправили %s %s-місячну підписку Habitica. Ця ж підписка була застосована до вашого облікового запису, завдяки участі в акції «Подаруйте підписку, отримайте підписку»! Виберіть підписку, яку хочете подарувати внизу! Ця покупка не буде продовжена автоматично. Допоки ця акція активна, ви отримуєте відповідну підписку автоматично після відправки подарунка. diff --git a/Habitica/res/values-vi/strings.xml b/Habitica/res/values-vi/strings.xml index dc3f9b2c6..9e92ffbe3 100755 --- a/Habitica/res/values-vi/strings.xml +++ b/Habitica/res/values-vi/strings.xml @@ -682,7 +682,7 @@ Bạn đã được mời tham gia vào Nhiệm vụ %1$s Bạn đã được mời tham gia vào Bang hội %1$s Bạn đã được mời tham gia vào Bang hội kín %1$s - Bạn đã được mời tham gia vào Tổ đội %1$s + %1$s bạn đã được mời tham gia vào Tổ đội %2$s Bạn có Vật phẩm Bí ẩn mới Bạn có %1$s Điểm Chỉ số chưa phân bổ Tổ đội của bạn, %1$s, có bài viết mới diff --git a/Habitica/res/values-zh-rTW/strings.xml b/Habitica/res/values-zh-rTW/strings.xml index 48d237cba..4b172eef4 100644 --- a/Habitica/res/values-zh-rTW/strings.xml +++ b/Habitica/res/values-zh-rTW/strings.xml @@ -651,7 +651,7 @@ %1$s有新的貼文]]> %1$s點未分配屬性點]]> 神秘裝備]]> - %1$s隊伍]]> + %1$s 您受邀加入%2$s隊伍]]> %1$s私人公會]]> %1$s您受邀加入]]> %1$s副本]]> diff --git a/Habitica/res/values-zh/strings.xml b/Habitica/res/values-zh/strings.xml index 00663b30c..f90cd41f8 100644 --- a/Habitica/res/values-zh/strings.xml +++ b/Habitica/res/values-zh/strings.xml @@ -652,7 +652,7 @@ %1$s 有新消息]]> %1$s没分配的属性点]]> 神秘物品]]> - %1$s]]> + %1$s 你被邀请加入队伍%2$s]]> 您收到邀请加入一个私人公会%1$s 您收到了加入公会的邀请%1$s 你被邀请加入副本%1$s diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index e48f8a9c1..e9a2bbec9 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -764,7 +764,7 @@ %1$s, has new posts]]> %1$s unallocated Stat Points]]> Mystery Items]]> - %1$s]]> + %2$s has invited you to join the party %1$s]]> %1$s]]> %1$s]]> %1$s]]> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt index f47dc940b..b99a4304e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt @@ -15,6 +15,7 @@ import androidx.activity.viewModels import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.data.SocialRepository import com.habitrpg.android.habitica.databinding.ActivityNotificationsBinding @@ -39,6 +40,7 @@ import com.habitrpg.common.habitica.views.PixelArtView import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject @AndroidEntryPoint @@ -80,6 +82,10 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget binding.notificationsRefreshLayout.setOnRefreshListener(this) } + override fun injectActivity(component: UserComponent?) { + component?.inject(this) + } + override fun onSupportNavigateUp(): Boolean { if (supportFragmentManager.backStackEntryCount > 0) { onBackPressed() @@ -122,39 +128,29 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget createNotificationsHeaderView(notifications.count()) ) - //Currently retrieving the inviters username by user's id lifecycleScope.launch(ExceptionHandler.coroutine()) { - notifications.filter { it.type == Notification.Type.PARTY_INVITATION.type }.forEach { - val item = createPartyInvitationNotification(it) - val inviteView = binding.notificationItems.findViewWithTag(it.id) - if (item != null && inviteView == null) { - item.tag = it.id + notifications.map { + val item: View? = when (it.type) { + Notification.Type.NEW_CHAT_MESSAGE.type -> createNewChatMessageNotification(it) + Notification.Type.NEW_STUFF.type -> createNewStuffNotification(it) + Notification.Type.UNALLOCATED_STATS_POINTS.type -> createUnallocatedStatsNotification(it) + Notification.Type.NEW_MYSTERY_ITEMS.type -> createMysteryItemsNotification(it) + Notification.Type.GROUP_TASK_NEEDS_WORK.type -> createGroupTaskNeedsWorkNotification(it) + Notification.Type.GROUP_TASK_APPROVED.type -> createGroupTaskApprovedNotification(it) + Notification.Type.GROUP_TASK_REQUIRES_APPROVAL.type -> createGroupTaskNeedsApprovalNotification(it) + Notification.Type.PARTY_INVITATION.type -> createPartyInvitationNotification(it) + Notification.Type.GUILD_INVITATION.type -> createGuildInvitationNotification(it) + Notification.Type.QUEST_INVITATION.type -> createQuestInvitationNotification(it) + Notification.Type.ITEM_RECEIVED.type -> createItemReceivedNotification(it) + else -> null + } + + if (item != null) { binding.notificationItems.addView(item) } } } - notifications.map { - val item: View? = when (it.type) { - Notification.Type.NEW_CHAT_MESSAGE.type -> createNewChatMessageNotification(it) - Notification.Type.NEW_STUFF.type -> createNewStuffNotification(it) - Notification.Type.UNALLOCATED_STATS_POINTS.type -> createUnallocatedStatsNotification(it) - Notification.Type.NEW_MYSTERY_ITEMS.type -> createMysteryItemsNotification(it) - Notification.Type.GROUP_TASK_NEEDS_WORK.type -> createGroupTaskNeedsWorkNotification(it) - Notification.Type.GROUP_TASK_APPROVED.type -> createGroupTaskApprovedNotification(it) - Notification.Type.GROUP_TASK_REQUIRES_APPROVAL.type -> createGroupTaskNeedsApprovalNotification(it) - Notification.Type.GUILD_INVITATION.type -> createGuildInvitationNotification(it) - Notification.Type.QUEST_INVITATION.type -> createQuestInvitationNotification(it) - Notification.Type.ITEM_RECEIVED.type -> createItemReceivedNotification(it) - else -> null - } - - if (item != null) { - binding.notificationItems.addView(item) - } - } - - } private fun createNotificationsHeaderView(notificationCount: Int): View? { @@ -312,14 +308,21 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget return item } - + private suspend fun createPartyInvitationNotification(notification: Notification): View? = withContext(ExceptionHandler.coroutine()) { val data = notification.data as? PartyInvitationData - - return createActionableNotificationItem( - notification, - fromHtml(getString(R.string.invited_to_party_notification, data?.invitation?.name)) - ) + val inviterId = data?.invitation?.inviter + if (inviterId != null) { + val inviter = socialRepository.retrieveMember(inviterId, fromHall = false) + return@withContext createActionableNotificationItem( + notification, + fromHtml(getString(R.string.invited_to_party_notification, data.invitation?.name, inviter?.formattedUsername)), + openable = true, + inviterId + ) + } else { + return@withContext null + } } private fun createGuildInvitationNotification(notification: Notification): View? { @@ -384,17 +387,22 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget private fun createActionableNotificationItem( notification: Notification, messageText: CharSequence, - openable: Boolean = false + openable: Boolean = false, + inviterId: String? = null ): View? { val item = inflater?.inflate(R.layout.notification_item_actionable, binding.notificationItems, false) if (openable) { val container = item?.findViewById(R.id.notification_item) as? View container?.setOnClickListener { - val resultIntent = Intent() - resultIntent.putExtra("notificationId", notification.id) - setResult(Activity.RESULT_OK, resultIntent) - finish() + if (inviterId != null) { + FullProfileActivity.open(inviterId) + } else { + val resultIntent = Intent() + resultIntent.putExtra("notificationId", notification.id) + setResult(Activity.RESULT_OK, resultIntent) + finish() + } } }