Browse Source

Add Assistant under the notification in drawer for branded clients

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 year ago
parent
commit
69a4500924

+ 5 - 5
app/src/main/java/com/nextcloud/client/assistant/AssistantViewModel.kt

@@ -37,11 +37,11 @@ import kotlinx.coroutines.launch
 class AssistantViewModel(private val repository: AssistantRepositoryType) : ViewModel() {
 
     sealed class State {
-        data object Idle: State()
-        data object Loading: State()
-        data class Error(val messageId: Int): State()
-        data class TaskCreated(val messageId: Int): State()
-        data class TaskDeleted(val messageId: Int): State()
+        data object Idle : State()
+        data object Loading : State()
+        data class Error(val messageId: Int) : State()
+        data class TaskCreated(val messageId: Int) : State()
+        data class TaskDeleted(val messageId: Int) : State()
     }
 
     private val _state = MutableStateFlow<State>(State.Loading)

+ 2 - 1
app/src/main/java/com/nextcloud/client/assistant/AsssistantScreen.kt

@@ -153,7 +153,8 @@ fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
                     taskType.id?.let {
                         viewModel.createTask(input = input, type = it)
                     }
-                }, dismiss = {
+                },
+                dismiss = {
                     showAddTaskAlertDialog = false
                 }
             )

+ 1 - 1
app/src/main/java/com/nextcloud/client/assistant/component/AddTaskAlertDialog.kt

@@ -61,7 +61,7 @@ fun AddTaskAlertDialog(title: String?, description: String?, addTask: (String) -
                 value = input,
                 onValueChange = {
                     input = it
-                },
+                }
             )
         }
     )

+ 1 - 1
app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt

@@ -72,7 +72,7 @@ import com.owncloud.android.db.ProviderMeta
         AutoMigration(from = 75, to = 76),
         AutoMigration(from = 76, to = 77),
         AutoMigration(from = 77, to = 78),
-        AutoMigration(from = 78, to = 79, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class),
+        AutoMigration(from = 78, to = 79, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class)
     ],
     exportSchema = true
 )

+ 14 - 0
app/src/main/java/com/nextcloud/ui/composeActivity/ComposeActivity.kt

@@ -49,10 +49,12 @@ import kotlinx.coroutines.withContext
 class ComposeActivity : DrawerActivity() {
 
     lateinit var binding: ActivityComposeBinding
+    private var menuItemId: Int? = null
 
     companion object {
         const val DESTINATION = "DESTINATION"
         const val TITLE = "TITLE"
+        const val MENU_ITEM = "MENU_ITEM"
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -62,10 +64,15 @@ class ComposeActivity : DrawerActivity() {
 
         val destination = intent.getSerializableArgument(DESTINATION, ComposeDestination::class.java)
         val titleId = intent.getIntExtra(TITLE, R.string.empty)
+        menuItemId = intent.getIntExtra(MENU_ITEM, -1)
 
         setupToolbar()
         updateActionBarTitleAndHomeButtonByString(getString(titleId))
 
+        if (menuItemId != -1) {
+            setupDrawer(menuItemId!!)
+        }
+
         binding.composeView.setContent {
             MaterialTheme(
                 colorScheme = viewThemeUtils.getColorScheme(this),
@@ -76,6 +83,13 @@ class ComposeActivity : DrawerActivity() {
         }
     }
 
+    override fun onResume() {
+        super.onResume()
+        if (menuItemId != -1) {
+            setDrawerMenuItemChecked(R.id.nav_assistant)
+        }
+    }
+
     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         return when (item.itemId) {
             android.R.id.home -> {

+ 6 - 3
app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -369,7 +369,7 @@ public abstract class DrawerActivity extends ToolbarActivity
             views[0].setOnClickListener(v -> openAppOrStore("it.niedermann.owncloud.notes"));
             views[1].setOnClickListener(v -> openAppOrStore("com.nextcloud.talk2"));
             views[2].setOnClickListener(v -> openAppStore("Nextcloud", true));
-            views[3].setOnClickListener(v -> startComposeActivity(ComposeDestination.AssistantScreen, R.string.assistant_screen_top_bar_title));
+            views[3].setOnClickListener(v -> startComposeActivity(ComposeDestination.AssistantScreen, R.string.assistant_screen_top_bar_title, -1));
 
             int iconColor;
             if (Hct.fromInt(primaryColor).getTone() < 80.0) {
@@ -471,7 +471,7 @@ public abstract class DrawerActivity extends ToolbarActivity
         DrawerMenuUtil.filterTrashbinMenuItem(menu, capability);
         DrawerMenuUtil.filterActivityMenuItem(menu, capability);
         DrawerMenuUtil.filterGroupfoldersMenuItem(menu, capability);
-
+        DrawerMenuUtil.filterAssistantMenuItem(menu, capability);
         DrawerMenuUtil.setupHomeMenuItem(menu, getResources());
 
         DrawerMenuUtil.removeMenuItem(menu, R.id.nav_community,
@@ -539,6 +539,8 @@ public abstract class DrawerActivity extends ToolbarActivity
             startSharedSearch(menuItem);
         } else if (itemId == R.id.nav_recently_modified) {
             startRecentlyModifiedSearch(menuItem);
+        } else if (itemId == R.id.nav_assistant) {
+            startComposeActivity(ComposeDestination.AssistantScreen, R.string.assistant_screen_top_bar_title, itemId);
         } else if (itemId == R.id.nav_groupfolders) {
             MainApp.showOnlyFilesOnDevice(false);
             Intent intent = new Intent(getApplicationContext(), FileDisplayActivity.class);
@@ -557,10 +559,11 @@ public abstract class DrawerActivity extends ToolbarActivity
         }
     }
 
-    private void startComposeActivity(ComposeDestination destination, int titleId) {
+    private void startComposeActivity(ComposeDestination destination, int titleId, int menuItemId) {
         Intent composeActivity = new Intent(getApplicationContext(), ComposeActivity.class);
         composeActivity.putExtra(ComposeActivity.DESTINATION, destination);
         composeActivity.putExtra(ComposeActivity.TITLE, titleId);
+        composeActivity.putExtra(ComposeActivity.MENU_ITEM, menuItemId);
         startActivity(composeActivity);
     }
 

+ 6 - 0
app/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java

@@ -64,6 +64,12 @@ public final class DrawerMenuUtil {
         }
     }
 
+    public static void filterAssistantMenuItem(Menu menu, @Nullable OCCapability capability) {
+        if (capability != null && !capability.getAssistant().isTrue()) {
+            filterMenuItems(menu, R.id.nav_assistant);
+        }
+    }
+
     public static void filterGroupfoldersMenuItem(Menu menu, @Nullable OCCapability capability) {
         if (capability != null && !capability.getGroupfolders().isTrue()) {
             filterMenuItems(menu, R.id.nav_groupfolders);

+ 1 - 1
app/src/main/res/layout/drawer_header.xml

@@ -74,7 +74,7 @@
         <LinearLayout
             android:id="@+id/drawer_ecosystem_assistant"
             android:layout_width="wrap_content"
-            android:layout_marginEnd="40dp"
+            android:layout_marginEnd="30dp"
             android:layout_height="wrap_content"
             android:gravity="center"
             android:background="?android:selectableItemBackgroundBorderless"

+ 8 - 0
app/src/main/res/menu/partial_drawer_entries.xml

@@ -25,6 +25,7 @@
     <group
         android:id="@+id/drawer_menu_standard"
         android:checkableBehavior="single">
+
         <item
             android:id="@+id/nav_all_files"
             android:icon="@drawable/all_files"
@@ -75,6 +76,13 @@
             android:id="@+id/nav_notifications"
             android:icon="@drawable/nav_notifications"
             android:title="@string/drawer_item_notifications"/>
+
+        <item
+            android:id="@+id/nav_assistant"
+            android:icon="@drawable/ic_assistant"
+            android:orderInCategory="0"
+            android:title="@string/drawer_item_assistant" />
+
         <item
             android:id="@+id/nav_uploads"
             android:icon="@drawable/uploads"