Эх сурвалжийг харах

check and show notification bell

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 9 сар өмнө
parent
commit
339168582f

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

@@ -583,7 +583,7 @@ public abstract class DrawerActivity extends ToolbarActivity
         startActivity(composeActivity);
     }
 
-    private void startActivity(Class<? extends Activity> activity) {
+    void startActivity(Class<? extends Activity> activity) {
         startActivity(new Intent(getApplicationContext(), activity));
     }
 

+ 24 - 0
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -83,6 +83,8 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.RestoreFileVersionRemoteOperation;
 import com.owncloud.android.lib.resources.files.SearchRemoteOperation;
+import com.owncloud.android.lib.resources.notifications.GetNotificationsRemoteOperation;
+import com.owncloud.android.lib.resources.notifications.models.Notification;
 import com.owncloud.android.operations.CopyFileOperation;
 import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.operations.DownloadType;
@@ -308,6 +310,7 @@ public class FileDisplayActivity extends FileActivity
         setupHomeSearchToolbarWithSortAndListButtons();
         mMenuButton.setOnClickListener(v -> openDrawer());
         mSwitchAccountButton.setOnClickListener(v -> showManageAccountsDialog());
+        mNotificationButton.setOnClickListener(v -> startActivity(NotificationsActivity.class));
         fastScrollUtils.fixAppBarForFastScroll(binding.appbar.appbar, binding.rootLayout);
     }
 
@@ -395,6 +398,7 @@ public class FileDisplayActivity extends FileActivity
 
         upgradeNotificationForInstantUpload();
         checkOutdatedServer();
+        checkNotifications();
     }
 
     private Activity getActivity() {
@@ -425,6 +429,24 @@ public class FileDisplayActivity extends FileActivity
             DisplayUtils.showServerOutdatedSnackbar(this, Snackbar.LENGTH_LONG);
         }
     }
+    
+    private void checkNotifications() {
+        new Thread(() -> {
+            try {
+                RemoteOperationResult<List<Notification>> result = new GetNotificationsRemoteOperation()
+                    .execute(clientFactory.createNextcloudClient(accountManager.getUser()));
+                
+                if (result.isSuccess() && !result.getResultData().isEmpty()) {
+                    runOnUiThread(() -> mNotificationButton.setVisibility(View.VISIBLE));
+                } else {
+                    runOnUiThread(() -> mNotificationButton.setVisibility(View.GONE));
+                }
+                
+            } catch (ClientFactory.CreationException e) {
+                Log_OC.e(TAG, "Could not fetch notifications!");
+            }
+        }).start();
+    }
 
     @Override
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
@@ -1153,6 +1175,8 @@ public class FileDisplayActivity extends FileActivity
         }
         //show in-app review dialog to user
         inAppReviewHelper.showInAppReview(this);
+        
+        checkNotifications();
 
         Log_OC.v(TAG, "onResume() end");
     }

+ 2 - 0
app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -52,6 +52,7 @@ public abstract class ToolbarActivity extends BaseActivity implements Injectable
     protected MaterialButton mMenuButton;
     protected MaterialTextView mSearchText;
     protected MaterialButton mSwitchAccountButton;
+    protected MaterialButton mNotificationButton;
 
     private AppBarLayout mAppBar;
     private RelativeLayout mDefaultToolbar;
@@ -82,6 +83,7 @@ public abstract class ToolbarActivity extends BaseActivity implements Injectable
         mMenuButton = findViewById(R.id.menu_button);
         mSearchText = findViewById(R.id.search_text);
         mSwitchAccountButton = findViewById(R.id.switch_account_button);
+        mNotificationButton = findViewById(R.id.notification_button);
 
         if (showSortListButtonGroup) {
             findViewById(R.id.sort_list_button_group).setVisibility(View.VISIBLE);

+ 14 - 1
app/src/main/res/layout/toolbar_standard.xml

@@ -197,10 +197,23 @@
                     android:textSize="16sp"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintLeft_toRightOf="@id/menu_button"
-                    app:layout_constraintRight_toLeftOf="@id/switch_account_button"
+                    app:layout_constraintRight_toLeftOf="@id/notification_button"
                     app:layout_constraintTop_toTopOf="parent"
                     tools:text="Search in Nextcloud" />
 
+                <com.google.android.material.button.MaterialButton
+                    android:id="@+id/notification_button"
+                    style="@style/Widget.AppTheme.Button.IconButton"
+                    android:layout_width="48dp"
+                    android:layout_height="48dp"
+                    app:cornerRadius="@dimen/button_corner_radius"
+                    app:iconSize="20dp"
+                    app:icon="@drawable/ic_notification"
+                    app:iconTint="@color/fontAppbar"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toStartOf="@id/switch_account_button"
+                    app:layout_constraintTop_toTopOf="parent" />
+
                 <com.google.android.material.button.MaterialButton
                     android:id="@+id/switch_account_button"
                     style="@style/Widget.AppTheme.Button.IconButton"