diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fa344b86b..d2add7046 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -122,6 +122,7 @@
+
diff --git a/app/src/main/java/app/pachli/MainActivity.kt b/app/src/main/java/app/pachli/MainActivity.kt
index b8bbd0301..13a5d9369 100644
--- a/app/src/main/java/app/pachli/MainActivity.kt
+++ b/app/src/main/java/app/pachli/MainActivity.kt
@@ -89,6 +89,7 @@ import app.pachli.core.navigation.ListActivityIntent
import app.pachli.core.navigation.LoginActivityIntent
import app.pachli.core.navigation.LoginActivityIntent.LoginMode
import app.pachli.core.navigation.MainActivityIntent
+import app.pachli.core.navigation.NotificationsActivityIntent
import app.pachli.core.navigation.PreferencesActivityIntent
import app.pachli.core.navigation.PreferencesActivityIntent.PreferenceScreen
import app.pachli.core.navigation.ScheduledStatusActivityIntent
@@ -575,10 +576,19 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
tintStatusBar = true
addItems(
primaryDrawerItem {
- nameRes = R.string.action_edit_profile
- iconicsIcon = GoogleMaterial.Icon.gmd_person
+ nameRes = R.string.title_notifications
+ iconicsIcon = GoogleMaterial.Icon.gmd_notifications
onClick = {
- val intent = EditProfileActivityIntent(context)
+ startActivityWithSlideInAnimation(
+ NotificationsActivityIntent(context),
+ )
+ }
+ },
+ primaryDrawerItem {
+ nameRes = R.string.action_view_bookmarks
+ iconicsIcon = GoogleMaterial.Icon.gmd_bookmark
+ onClick = {
+ val intent = StatusListActivityIntent.bookmarks(context)
startActivityWithSlideInAnimation(intent)
}
},
@@ -591,14 +601,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
startActivityWithSlideInAnimation(intent)
}
},
- primaryDrawerItem {
- nameRes = R.string.action_view_bookmarks
- iconicsIcon = GoogleMaterial.Icon.gmd_bookmark
- onClick = {
- val intent = StatusListActivityIntent.bookmarks(context)
- startActivityWithSlideInAnimation(intent)
- }
- },
primaryDrawerItem {
nameRes = R.string.action_view_follow_requests
iconicsIcon = GoogleMaterial.Icon.gmd_person_add
@@ -658,6 +660,14 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, MenuProvider {
startActivityWithSlideInAnimation(intent)
}
},
+ primaryDrawerItem {
+ nameRes = R.string.action_edit_profile
+ iconicsIcon = GoogleMaterial.Icon.gmd_person
+ onClick = {
+ val intent = EditProfileActivityIntent(context)
+ startActivityWithSlideInAnimation(intent)
+ }
+ },
secondaryDrawerItem {
nameRes = app.pachli.feature.about.R.string.about_title_activity
iconicsIcon = GoogleMaterial.Icon.gmd_info
diff --git a/app/src/main/java/app/pachli/components/notifications/NotificationsActivity.kt b/app/src/main/java/app/pachli/components/notifications/NotificationsActivity.kt
new file mode 100644
index 000000000..e054a4153
--- /dev/null
+++ b/app/src/main/java/app/pachli/components/notifications/NotificationsActivity.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2024 Pachli Association
+ *
+ * This file is a part of Pachli.
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * Pachli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+ * Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Pachli; if not,
+ * see .
+ */
+
+package app.pachli.components.notifications
+
+import android.os.Bundle
+import android.view.Menu
+import android.view.MenuInflater
+import android.view.MenuItem
+import androidx.core.view.MenuProvider
+import androidx.fragment.app.commit
+import app.pachli.R
+import app.pachli.core.activity.BottomSheetActivity
+import app.pachli.core.common.extensions.viewBinding
+import app.pachli.core.navigation.ComposeActivityIntent
+import app.pachli.databinding.ActivityNotificationsBinding
+import app.pachli.interfaces.ActionButtonActivity
+import app.pachli.interfaces.AppBarLayoutHost
+import app.pachli.util.unsafeLazy
+import com.google.android.material.appbar.AppBarLayout
+
+class NotificationsActivity : BottomSheetActivity(), ActionButtonActivity, AppBarLayoutHost, MenuProvider {
+ private val binding by viewBinding(ActivityNotificationsBinding::inflate)
+
+ override val actionButton by unsafeLazy { binding.composeButton }
+
+ override val appBarLayout: AppBarLayout
+ get() = binding.includedToolbar.appbar
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(binding.root)
+
+ setSupportActionBar(binding.includedToolbar.toolbar)
+
+ supportActionBar?.run {
+ setTitle(R.string.title_notifications)
+ setDisplayHomeAsUpEnabled(true)
+ setDisplayShowHomeEnabled(true)
+ }
+
+ if (supportFragmentManager.findFragmentById(R.id.fragmentContainer) == null) {
+ supportFragmentManager.commit {
+ val fragment = NotificationsFragment.newInstance()
+ replace(R.id.fragmentContainer, fragment)
+ }
+ }
+
+ binding.composeButton.setOnClickListener {
+ val composeIntent = ComposeActivityIntent(applicationContext)
+ startActivity(composeIntent)
+ }
+ }
+
+ override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
+ super.onCreateMenu(menu, menuInflater)
+ menuInflater.inflate(R.menu.activity_trending, menu)
+ }
+
+ override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
+ super.onMenuItemSelected(menuItem)
+ return super.onOptionsItemSelected(menuItem)
+ }
+}
diff --git a/app/src/main/res/layout/activity_notifications.xml b/app/src/main/res/layout/activity_notifications.xml
new file mode 100644
index 000000000..66589c32a
--- /dev/null
+++ b/app/src/main/res/layout/activity_notifications.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/navigation/src/main/kotlin/app/pachli/core/navigation/Navigation.kt b/core/navigation/src/main/kotlin/app/pachli/core/navigation/Navigation.kt
index 6d3cbca6d..a07ba63dd 100644
--- a/core/navigation/src/main/kotlin/app/pachli/core/navigation/Navigation.kt
+++ b/core/navigation/src/main/kotlin/app/pachli/core/navigation/Navigation.kt
@@ -562,6 +562,12 @@ class LoginWebViewActivityIntent(context: Context) : Intent() {
}
}
+class NotificationsActivityIntent(context: Context) : Intent() {
+ init {
+ setClassName(context, QuadrantConstants.NOTIFICATIONS_ACTIVITY)
+ }
+}
+
class ScheduledStatusActivityIntent(context: Context) : Intent() {
init {
setClassName(context, QuadrantConstants.SCHEDULED_STATUS_ACTIVITY)