From cad36de367ec6e8da31ae8c64d7ae3e90bd2a33d Mon Sep 17 00:00:00 2001
From: M M Arif <mmarif@swatian.com>
Date: Sun, 19 Jan 2025 16:38:07 +0000
Subject: [PATCH] Enhancements and improvements (#1403)

closes #1388

Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1403
Co-authored-by: M M Arif <mmarif@swatian.com>
Co-committed-by: M M Arif <mmarif@swatian.com>
---
 .woodpecker/build.yml                         |  15 +-
 .woodpecker/finish.yml                        |   1 -
 .woodpecker/locale.yml                        |   7 +-
 app/build.gradle                              |   6 +-
 .../AddCollaboratorToRepositoryActivity.java  |   4 +-
 .../activities/AddNewTeamMemberActivity.java  |   4 +-
 .../gitnex/activities/CreateNoteActivity.java |   1 +
 .../gitnex/activities/EditIssueActivity.java  | 472 +++++++++++++++++-
 .../activities/IssueDetailActivity.java       |   4 +-
 .../mian/gitnex/activities/MainActivity.java  |   2 +
 .../gitnex/activities/RepoDetailActivity.java |   4 +-
 .../adapters/CollaboratorSearchAdapter.java   |   9 +-
 .../gitnex/adapters/ReposListAdapter.java     |   9 +
 .../mian/gitnex/fragments/FilesFragment.java  |  85 +++-
 .../gitnex/fragments/RepoInfoFragment.java    |  22 -
 ...ctivity_add_collaborator_to_repository.xml | 108 ++--
 .../res/layout/activity_add_new_account.xml   |   4 +-
 .../layout/activity_add_new_team_member.xml   |  74 +--
 .../res/layout/activity_admin_cron_tasks.xml  |   9 +-
 .../res/layout/activity_admin_get_users.xml   |   1 +
 .../main/res/layout/activity_code_editor.xml  |   1 +
 .../res/layout/activity_commit_details.xml    |  10 +-
 app/src/main/res/layout/activity_commits.xml  |   9 +-
 .../main/res/layout/activity_create_file.xml  |   6 +-
 .../main/res/layout/activity_create_issue.xml |   6 +-
 .../main/res/layout/activity_create_label.xml |   6 +-
 .../res/layout/activity_create_milestone.xml  |   6 +-
 .../res/layout/activity_create_new_user.xml   |   6 +-
 .../main/res/layout/activity_create_note.xml  |  16 +-
 .../layout/activity_create_organization.xml   |   6 +-
 .../main/res/layout/activity_create_pr.xml    |   8 +-
 .../res/layout/activity_create_release.xml    |   6 +-
 .../main/res/layout/activity_create_repo.xml  |   6 +-
 .../layout/activity_create_team_by_org.xml    |   6 +-
 .../main/res/layout/activity_deeplinks.xml    |  19 +-
 app/src/main/res/layout/activity_diff.xml     |   7 +-
 .../main/res/layout/activity_edit_issue.xml   |  24 +-
 .../main/res/layout/activity_file_view.xml    |  14 +-
 .../main/res/layout/activity_issue_detail.xml |   1 +
 app/src/main/res/layout/activity_main.xml     |   3 +-
 .../layout/activity_merge_pull_request.xml    |   6 +-
 .../res/layout/activity_org_team_info.xml     |   9 +-
 .../main/res/layout/activity_repo_forks.xml   |  11 +-
 .../res/layout/activity_repo_stargazers.xml   |  77 +--
 .../res/layout/activity_repo_watchers.xml     |  59 ++-
 .../layout/activity_repository_settings.xml   |  27 +-
 .../layout/activity_settings_appearance.xml   |   6 +-
 .../activity_settings_backup_restore.xml      |   6 +-
 .../layout/activity_settings_code_editor.xml  |   6 +-
 .../res/layout/activity_settings_general.xml  |   6 +-
 .../activity_settings_notifications.xml       |   6 +-
 .../res/layout/activity_settings_security.xml |   6 +-
 app/src/main/res/layout/activity_wiki.xml     |  16 +-
 .../res/layout/add_new_team_repository.xml    |  10 +-
 app/src/main/res/layout/fragment_files.xml    | 104 +++-
 .../res/layout/fragment_organization_info.xml | 244 ++++-----
 .../main/res/layout/fragment_repo_info.xml    |   7 +-
 .../res/layout/list_collaborators_search.xml  |   6 +-
 app/src/main/res/layout/list_files.xml        |  78 ++-
 app/src/main/res/layout/list_repositories.xml |  27 +-
 app/src/main/res/layout/nav_header.xml        |   1 +
 .../res/menu/files_switch_branches_menu.xml   |   7 -
 app/src/main/res/values-v23/themes.xml        |   6 +-
 app/src/main/res/values-v31/themes.xml        |   4 +-
 app/src/main/res/values/strings.xml           |   5 +-
 app/src/main/res/values/themes.xml            |  10 +-
 build.gradle                                  |   2 +-
 67 files changed, 1232 insertions(+), 527 deletions(-)

diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml
index 9fc936ba..497f0171 100644
--- a/.woodpecker/build.yml
+++ b/.woodpecker/build.yml
@@ -13,9 +13,16 @@ steps:
       OUTPUT: "signed.apk"
       INSTANCE: "https://codeberg.org"
       KS_FILE: "gitnex_ci_keystore.jks"
+      BOT_TOKEN:
+        from_secret: BOT_TOKEN
+      KS_PASS:
+        from_secret: KS_PASS
+      KEY_PASS:
+        from_secret: KEY_PASS
+      KS_REPO:
+        from_secret: KS_REPO
     commands:
       - ./scripts/sign-build.sh
-    secrets: [ BOT_TOKEN, KS_PASS, KEY_PASS, KS_REPO ]
     when:
       event: [ push, tag ]
       branch: main
@@ -27,9 +34,10 @@ steps:
       WEBDAV_USERNAME: "GitNexBot"
       PLUGIN_FILE: "signed.apk"
       PLUGIN_DESTINATION: "https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk"
+      WEBDAV_PASSWORD:
+        from_secret: WEBDAV_PASSWORD
     commands:
       - curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" "$PLUGIN_DESTINATION"
-    secrets: [ WEBDAV_PASSWORD ]
     when:
       event: [ push, tag ]
       branch: main
@@ -40,9 +48,10 @@ steps:
     environment:
       WEBDAV_USERNAME: "GitNexBot"
       PLUGIN_FILE: "signed.apk"
+      WEBDAV_PASSWORD:
+        from_secret: WEBDAV_PASSWORD
     commands:
       - "[[ $CI_COMMIT_TAG == *'-rc'* ]] && echo 'Upload blocked. Build seems to be a release candidate.' && exit 0"
       - curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/releases/'"$CI_COMMIT_TAG"'.apk'
-    secrets: [ WEBDAV_PASSWORD ]
     when:
       event: [ tag ]
diff --git a/.woodpecker/finish.yml b/.woodpecker/finish.yml
index 035661c5..5d6f20af 100644
--- a/.woodpecker/finish.yml
+++ b/.woodpecker/finish.yml
@@ -3,7 +3,6 @@ depends_on:
   - locale
   - check
 
-run_on: [ success, failure ]
 skip_clone: true
 
 steps:
diff --git a/.woodpecker/locale.yml b/.woodpecker/locale.yml
index e5f4656d..4e4b31b7 100644
--- a/.woodpecker/locale.yml
+++ b/.woodpecker/locale.yml
@@ -4,7 +4,9 @@ steps:
     commands:
       - cp crowdin.example.yml crowdin.yml
       - sed -i 's/-removed-/'"$CROWDIN_TOKEN"'/' crowdin.yml
-    secrets: [ CROWDIN_TOKEN ]
+    environment:
+      CROWDIN_TOKEN:
+        from_secret: CROWDIN_TOKEN
     when:
       event: [ push, tag, cron ]
       branch: main
@@ -40,7 +42,8 @@ steps:
       - GITEA_BRANCH=main
       # Token that should be used to authenticate against the gitea instance
       # - BOT_TOKEN=secret
-    secrets: [ BOT_TOKEN ]
+      BOT_TOKEN:
+        from_secret: BOT_TOKEN
     commands:
       # Setup git credentials and checkout target branch
       - git config user.name  "$${GIT_AUTHOR_NAME}"
diff --git a/app/build.gradle b/app/build.gradle
index 40a08b36..db7de360 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,12 +7,12 @@ android {
     defaultConfig {
         applicationId "org.mian.gitnex"
         minSdkVersion 23
-        targetSdkVersion 34
+        targetSdkVersion 35
         versionCode 695
         versionName "7.0.0-dev"
         multiDexEnabled true
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-        compileSdk 34
+        compileSdk 35
     }
     flavorDimensions = ["default"]
     productFlavors {
@@ -106,7 +106,7 @@ dependencies {
     implementation 'ch.acra:acra-notification:5.11.3'
     implementation 'androidx.room:room-runtime:2.6.1'
     annotationProcessor 'androidx.room:room-compiler:2.6.1'
-    implementation "androidx.work:work-runtime:2.9.1"
+    implementation "androidx.work:work-runtime:2.10.0"
     implementation "io.mikael:urlbuilder:2.0.9"
     implementation "org.codeberg.gitnex-garage:emoji-java:v5.1.2"
     //noinspection GradleDependency
diff --git a/app/src/main/java/org/mian/gitnex/activities/AddCollaboratorToRepositoryActivity.java b/app/src/main/java/org/mian/gitnex/activities/AddCollaboratorToRepositoryActivity.java
index b2590c63..5bcd8bff 100644
--- a/app/src/main/java/org/mian/gitnex/activities/AddCollaboratorToRepositoryActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/AddCollaboratorToRepositoryActivity.java
@@ -61,7 +61,7 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
 										activityAddCollaboratorToRepositoryBinding
 												.addCollaboratorSearch.getText())
 								.toString()
-								.equals("")) {
+								.isEmpty()) {
 
 							activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(
 									View.VISIBLE);
@@ -128,7 +128,9 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
 			activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.GONE);
 		} else {
 
+			activityAddCollaboratorToRepositoryBinding.recyclerViewUserSearch.setAdapter(null);
 			activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.VISIBLE);
+			adapter.clearAdapter();
 		}
 
 		activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(View.GONE);
diff --git a/app/src/main/java/org/mian/gitnex/activities/AddNewTeamMemberActivity.java b/app/src/main/java/org/mian/gitnex/activities/AddNewTeamMemberActivity.java
index ec13050a..ce2fc6f7 100644
--- a/app/src/main/java/org/mian/gitnex/activities/AddNewTeamMemberActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/AddNewTeamMemberActivity.java
@@ -118,7 +118,7 @@ public class AddNewTeamMemberActivity extends BaseActivity {
 						if (response.isSuccessful()) {
 
 							assert response.body() != null;
-							if (response.body().getData().size() > 0) {
+							if (!response.body().getData().isEmpty()) {
 
 								dataList.clear();
 								dataList.addAll(response.body().getData());
@@ -126,7 +126,9 @@ public class AddNewTeamMemberActivity extends BaseActivity {
 								noData.setVisibility(View.GONE);
 							} else {
 
+								dataList.clear();
 								noData.setVisibility(View.VISIBLE);
+								mRecyclerView.setAdapter(null);
 							}
 
 							mProgressBar.setVisibility(View.GONE);
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java
index a8aae6f7..15c496c6 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java
@@ -61,6 +61,7 @@ public class CreateNoteActivity extends BaseActivity {
 		binding.close.setOnClickListener(close -> finish());
 		binding.toolbarTitle.setMovementMethod(new ScrollingMovementMethod());
 
+		assert action != null;
 		if (action.equalsIgnoreCase("edit")) {
 
 			noteId = getIntent().getIntExtra("noteId", 0);
diff --git a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
index 7c451823..143f2308 100644
--- a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
@@ -1,22 +1,47 @@
 package org.mian.gitnex.activities;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.content.Context;
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
+import androidx.core.app.NotificationCompat;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.request.target.CustomTarget;
+import com.bumptech.glide.request.transition.Transition;
+import com.google.android.material.bottomsheet.BottomSheetDialog;
+import com.google.android.material.card.MaterialCardView;
 import com.google.android.material.datepicker.MaterialDatePicker;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.vdurmont.emoji.EmojiParser;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.LinkedHashMap;
@@ -24,27 +49,41 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
 import java.util.TimeZone;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import org.apache.commons.io.FilenameUtils;
+import org.gitnex.tea4j.v2.models.Attachment;
 import org.gitnex.tea4j.v2.models.EditIssueOption;
 import org.gitnex.tea4j.v2.models.Issue;
 import org.gitnex.tea4j.v2.models.Milestone;
 import org.mian.gitnex.R;
+import org.mian.gitnex.adapters.AttachmentsAdapter;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.ActivityEditIssueBinding;
+import org.mian.gitnex.databinding.BottomSheetAttachmentsBinding;
+import org.mian.gitnex.databinding.CustomImageViewDialogBinding;
 import org.mian.gitnex.fragments.IssuesFragment;
 import org.mian.gitnex.fragments.PullRequestsFragment;
 import org.mian.gitnex.helpers.AlertDialogs;
 import org.mian.gitnex.helpers.AppDatabaseSettings;
+import org.mian.gitnex.helpers.AppUtil;
 import org.mian.gitnex.helpers.Constants;
 import org.mian.gitnex.helpers.Markdown;
 import org.mian.gitnex.helpers.SnackBar;
+import org.mian.gitnex.helpers.attachments.AttachmentUtils;
+import org.mian.gitnex.helpers.attachments.AttachmentsModel;
 import org.mian.gitnex.helpers.contexts.IssueContext;
+import org.mian.gitnex.notifications.Notifications;
 import retrofit2.Call;
 import retrofit2.Callback;
+import retrofit2.Response;
 
 /**
  * @author M M Arif
  */
-public class EditIssueActivity extends BaseActivity {
+public class EditIssueActivity extends BaseActivity
+		implements AttachmentsAdapter.AttachmentsReceiverListener {
 
 	private ActivityEditIssueBinding binding;
 	private final String msState = "open";
@@ -52,6 +91,147 @@ public class EditIssueActivity extends BaseActivity {
 	private int milestoneId = 0;
 	private IssueContext issue;
 	private boolean renderMd = false;
+	private MaterialAlertDialogBuilder materialAlertDialogBuilder;
+	private String token;
+	private String filename;
+	private Long filesize;
+	private String filehash;
+	private String instanceUrlOnly;
+	private AttachmentsAdapter attachmentsAdapter;
+	private static List<AttachmentsModel> attachmentsList;
+	private static final List<Uri> contentUri = new ArrayList<>();
+	private MenuItem create;
+
+	public ActivityResultLauncher<Intent> downloadAttachmentLauncher =
+			registerForActivityResult(
+					new ActivityResultContracts.StartActivityForResult(),
+					result -> {
+						if (result.getResultCode() == Activity.RESULT_OK) {
+
+							assert result.getData() != null;
+
+							try {
+
+								OutputStream outputStream =
+										getContentResolver()
+												.openOutputStream(
+														Objects.requireNonNull(
+																result.getData().getData()));
+
+								NotificationCompat.Builder builder =
+										new NotificationCompat.Builder(ctx, ctx.getPackageName())
+												.setContentTitle(
+														getString(
+																R.string
+																		.fileViewerNotificationTitleStarted))
+												.setContentText(
+														getString(
+																R.string
+																		.fileViewerNotificationDescriptionStarted,
+																filename))
+												.setSmallIcon(R.drawable.gitnex_transparent)
+												.setPriority(NotificationCompat.PRIORITY_LOW)
+												.setChannelId(
+														Constants.downloadNotificationChannelId)
+												.setProgress(100, 0, false)
+												.setOngoing(true);
+
+								int notificationId = Notifications.uniqueNotificationId(ctx);
+
+								NotificationManager notificationManager =
+										(NotificationManager)
+												getSystemService(Context.NOTIFICATION_SERVICE);
+								notificationManager.notify(notificationId, builder.build());
+
+								Thread thread =
+										new Thread(
+												() -> {
+													try {
+
+														Call<ResponseBody> call =
+																RetrofitClient.getWebInterface(
+																				ctx,
+																				instanceUrlOnly)
+																		.getAttachment(filehash);
+
+														Response<ResponseBody> response =
+																call.execute();
+
+														assert response.body() != null;
+
+														builder.setOngoing(false)
+																.setContentTitle(
+																		getString(
+																				R.string
+																						.fileViewerNotificationTitleFinished))
+																.setContentText(
+																		getString(
+																				R.string
+																						.fileViewerNotificationDescriptionFinished,
+																				filename));
+
+														AppUtil.copyProgress(
+																response.body().byteStream(),
+																outputStream,
+																filesize,
+																progress -> {
+																	builder.setProgress(
+																			100, progress, false);
+																	notificationManager.notify(
+																			notificationId,
+																			builder.build());
+																});
+
+													} catch (IOException ignored) {
+
+														builder.setOngoing(false)
+																.setContentTitle(
+																		getString(
+																				R.string
+																						.fileViewerNotificationTitleFailed))
+																.setContentText(
+																		getString(
+																				R.string
+																						.fileViewerNotificationDescriptionFailed,
+																				filename));
+
+													} finally {
+
+														builder.setProgress(0, 0, false)
+																.setOngoing(false);
+
+														notificationManager.notify(
+																notificationId, builder.build());
+													}
+												});
+
+								thread.start();
+
+							} catch (IOException ignored) {
+							}
+						}
+					});
+
+	ActivityResultLauncher<Intent> startActivityForResult =
+			registerForActivityResult(
+					new ActivityResultContracts.StartActivityForResult(),
+					result -> {
+						if (result.getResultCode() == Activity.RESULT_OK) {
+							Intent data = result.getData();
+							assert data != null;
+							contentUri.add(data.getData());
+							attachmentsList.add(
+									new AttachmentsModel(
+											AttachmentUtils.queryName(ctx, data.getData()),
+											data.getData()));
+							attachmentsAdapter.updateList(attachmentsList);
+						}
+					});
+
+	public void onDestroy() {
+		AttachmentsAdapter.setAttachmentsReceiveListener(null);
+		super.onDestroy();
+	}
 
 	@SuppressLint("ClickableViewAccessibility")
 	@Override
@@ -65,12 +245,27 @@ public class EditIssueActivity extends BaseActivity {
 		int resultLimit = Constants.getCurrentResultLimit(ctx);
 		issue = IssueContext.fromIntent(getIntent());
 
-		binding.topAppBar.setNavigationOnClickListener(v -> finish());
+		binding.topAppBar.setNavigationOnClickListener(
+				v -> {
+					finish();
+					contentUri.clear();
+				});
 
-		MenuItem attachment = binding.topAppBar.getMenu().getItem(0);
-		MenuItem create = binding.topAppBar.getMenu().getItem(2);
-		attachment.setVisible(false);
-		create.setTitle(getString(R.string.menuEditText));
+		materialAlertDialogBuilder =
+				new MaterialAlertDialogBuilder(ctx, R.style.ThemeOverlay_Material3_Dialog_Alert);
+
+		token = ((BaseActivity) ctx).getAccount().getAccount().getToken();
+
+		String instanceUrl = ((BaseActivity) ctx).getAccount().getAccount().getInstanceUrl();
+		instanceUrlOnly = instanceUrl.substring(0, instanceUrl.lastIndexOf("api/v1/"));
+
+		attachmentsList = new ArrayList<>();
+		attachmentsAdapter = new AttachmentsAdapter(attachmentsList, ctx);
+
+		AttachmentsAdapter.setAttachmentsReceiveListener(this);
+
+		create = binding.topAppBar.getMenu().getItem(2);
+		create.setTitle(getString(R.string.saveButton));
 
 		binding.editIssueDescription.setOnTouchListener(
 				(touchView, motionEvent) -> {
@@ -122,7 +317,15 @@ public class EditIssueActivity extends BaseActivity {
 
 						return true;
 					} else if (id == R.id.create) {
+						create.setVisible(false);
 						processEditIssue();
+						if (!contentUri.isEmpty()) {
+							processAttachments();
+							contentUri.clear();
+						}
+						return true;
+					} else if (id == R.id.attachment) {
+						checkForAttachments();
 						return true;
 					} else {
 						return super.onOptionsItemSelected(menuItem);
@@ -135,12 +338,116 @@ public class EditIssueActivity extends BaseActivity {
 				issue.getIssueIndex(),
 				resultLimit);
 
+		getAttachments();
+
 		if (!issue.getRepository().getPermissions().isPush()) {
 			findViewById(R.id.editIssueMilestoneSpinnerLayout).setVisibility(View.GONE);
 			findViewById(R.id.editIssueDueDateLayout).setVisibility(View.GONE);
 		}
 	}
 
+	@Override
+	public void setAttachmentsData(Uri filename) {
+		contentUri.remove(filename);
+	}
+
+	private void checkForAttachments() {
+
+		if (!contentUri.isEmpty()) {
+
+			BottomSheetAttachmentsBinding bottomSheetAttachmentsBinding =
+					BottomSheetAttachmentsBinding.inflate(getLayoutInflater());
+
+			BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(ctx);
+
+			bottomSheetAttachmentsBinding.addAttachment.setOnClickListener(
+					v1 -> openFileAttachmentActivity());
+
+			bottomSheetAttachmentsBinding.recyclerViewAttachments.setHasFixedSize(true);
+			bottomSheetAttachmentsBinding.recyclerViewAttachments.setLayoutManager(
+					new LinearLayoutManager(ctx));
+			bottomSheetAttachmentsBinding.recyclerViewAttachments.setAdapter(attachmentsAdapter);
+
+			bottomSheetDialog.setContentView(bottomSheetAttachmentsBinding.getRoot());
+			bottomSheetDialog.show();
+		} else {
+			attachmentsAdapter.clearAdapter();
+			openFileAttachmentActivity();
+		}
+	}
+
+	private void openFileAttachmentActivity() {
+
+		Intent data = new Intent(Intent.ACTION_GET_CONTENT);
+		data.addCategory(Intent.CATEGORY_OPENABLE);
+		data.setType("*/*");
+		Intent intent = Intent.createChooser(data, "Choose a file");
+		startActivityForResult.launch(intent);
+	}
+
+	private void processAttachments() {
+
+		for (int i = 0; i < contentUri.size(); i++) {
+
+			File file = AttachmentUtils.getFile(ctx, contentUri.get(i));
+
+			RequestBody requestFile =
+					RequestBody.create(
+							file,
+							MediaType.parse(
+									Objects.requireNonNull(
+											getContentResolver().getType(contentUri.get(i)))));
+
+			uploadAttachments(requestFile, file.getName());
+		}
+	}
+
+	private void uploadAttachments(RequestBody requestFile, String filename1) {
+
+		Call<Attachment> call3 =
+				RetrofitClient.getApiInterface(ctx)
+						.issueCreateIssueAttachment(
+								requestFile,
+								issue.getRepository().getOwner(),
+								issue.getRepository().getName(),
+								(long) issue.getIssueIndex(),
+								filename1);
+
+		call3.enqueue(
+				new Callback<>() {
+
+					@Override
+					public void onResponse(
+							@NonNull Call<Attachment> call,
+							@NonNull retrofit2.Response<Attachment> response2) {
+
+						if (response2.code() == 201) {
+							new Handler().postDelayed(() -> finish(), 3000);
+						} else if (response2.code() == 401) {
+
+							AlertDialogs.authorizationTokenRevokedDialog(ctx);
+						} else {
+
+							create.setVisible(true);
+							SnackBar.error(
+									ctx,
+									findViewById(android.R.id.content),
+									getString(R.string.attachmentsSaveError));
+						}
+					}
+
+					@Override
+					public void onFailure(@NonNull Call<Attachment> call, @NonNull Throwable t) {
+
+						create.setVisible(true);
+						SnackBar.error(
+								ctx,
+								findViewById(android.R.id.content),
+								getString(R.string.genericServerResponseError));
+					}
+				});
+	}
+
 	private void processEditIssue() {
 
 		String editIssueTitleForm =
@@ -149,7 +456,7 @@ public class EditIssueActivity extends BaseActivity {
 				Objects.requireNonNull(binding.editIssueDescription.getText()).toString();
 		String dueDate = Objects.requireNonNull(binding.editIssueDueDate.getText()).toString();
 
-		if (editIssueTitleForm.equals("")) {
+		if (editIssueTitleForm.isEmpty()) {
 
 			SnackBar.error(
 					ctx, findViewById(android.R.id.content), getString(R.string.issueTitleEmpty));
@@ -229,6 +536,7 @@ public class EditIssueActivity extends BaseActivity {
 							AlertDialogs.authorizationTokenRevokedDialog(ctx);
 						} else {
 
+							create.setVisible(true);
 							SnackBar.error(
 									ctx,
 									findViewById(android.R.id.content),
@@ -237,7 +545,9 @@ public class EditIssueActivity extends BaseActivity {
 					}
 
 					@Override
-					public void onFailure(@NonNull Call<Issue> call, @NonNull Throwable t) {}
+					public void onFailure(@NonNull Call<Issue> call, @NonNull Throwable t) {
+						create.setVisible(true);
+					}
 				});
 	}
 
@@ -326,7 +636,7 @@ public class EditIssueActivity extends BaseActivity {
 																			.issueCreatedNoMilestone));
 													milestonesList.put(ms.getTitle(), ms);
 
-													if (milestonesList_.size() > 0) {
+													if (!milestonesList_.isEmpty()) {
 
 														for (Milestone milestone :
 																milestonesList_) {
@@ -448,6 +758,150 @@ public class EditIssueActivity extends BaseActivity {
 				});
 	}
 
+	private void getAttachments() {
+
+		Call<List<Attachment>> call =
+				RetrofitClient.getApiInterface(ctx)
+						.issueListIssueAttachments(
+								issue.getRepository().getOwner(),
+								issue.getRepository().getName(),
+								(long) issue.getIssueIndex());
+
+		call.enqueue(
+				new Callback<>() {
+
+					@Override
+					public void onResponse(
+							@NonNull Call<List<Attachment>> call,
+							@NonNull retrofit2.Response<List<Attachment>> response) {
+
+						List<Attachment> attachment = response.body();
+
+						if (response.code() == 200) {
+							assert attachment != null;
+
+							if (!attachment.isEmpty()) {
+
+								binding.attachmentFrame.setVisibility(View.VISIBLE);
+								LinearLayout.LayoutParams paramsAttachment =
+										new LinearLayout.LayoutParams(96, 96);
+								paramsAttachment.setMargins(0, 0, 48, 0);
+
+								for (int i = 0; i < attachment.size(); i++) {
+
+									ImageView attachmentView = new ImageView(ctx);
+									MaterialCardView materialCardView = new MaterialCardView(ctx);
+									materialCardView.setLayoutParams(paramsAttachment);
+									materialCardView.setStrokeWidth(0);
+									materialCardView.setRadius(28);
+									materialCardView.setCardBackgroundColor(Color.TRANSPARENT);
+
+									if (Arrays.asList(
+													"bmp", "gif", "jpg", "jpeg", "png", "webp",
+													"heic", "heif")
+											.contains(
+													FilenameUtils.getExtension(
+																	attachment.get(i).getName())
+															.toLowerCase())) {
+
+										Glide.with(ctx)
+												.load(
+														attachment.get(i).getBrowserDownloadUrl()
+																+ "?token="
+																+ token)
+												.diskCacheStrategy(DiskCacheStrategy.ALL)
+												.placeholder(R.drawable.loader_animated)
+												.centerCrop()
+												.error(R.drawable.ic_close)
+												.into(attachmentView);
+
+										binding.attachmentsView.addView(materialCardView);
+										attachmentView.setLayoutParams(paramsAttachment);
+										materialCardView.addView(attachmentView);
+
+										int finalI1 = i;
+										materialCardView.setOnClickListener(
+												v1 ->
+														imageViewDialog(
+																attachment
+																		.get(finalI1)
+																		.getBrowserDownloadUrl()));
+
+									} else {
+
+										attachmentView.setImageResource(
+												R.drawable.ic_file_download);
+										attachmentView.setPadding(4, 4, 4, 4);
+										binding.attachmentsView.addView(materialCardView);
+										attachmentView.setLayoutParams(paramsAttachment);
+										materialCardView.addView(attachmentView);
+
+										int finalI = i;
+										materialCardView.setOnClickListener(
+												v1 -> {
+													filesize = attachment.get(finalI).getSize();
+													filename = attachment.get(finalI).getName();
+													filehash = attachment.get(finalI).getUuid();
+													requestFileDownload();
+												});
+									}
+								}
+							} else {
+								binding.attachmentFrame.setVisibility(View.GONE);
+							}
+						}
+					}
+
+					@Override
+					public void onFailure(
+							@NonNull Call<List<Attachment>> call, @NonNull Throwable t) {}
+				});
+	}
+
+	private void requestFileDownload() {
+
+		Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+		intent.addCategory(Intent.CATEGORY_OPENABLE);
+		intent.putExtra(Intent.EXTRA_TITLE, filename);
+		intent.setType("*/*");
+
+		downloadAttachmentLauncher.launch(intent);
+	}
+
+	private void imageViewDialog(String url) {
+
+		CustomImageViewDialogBinding imageViewDialogBinding =
+				CustomImageViewDialogBinding.inflate(LayoutInflater.from(ctx));
+		View view = imageViewDialogBinding.getRoot();
+		materialAlertDialogBuilder.setView(view);
+
+		materialAlertDialogBuilder.setNeutralButton(getString(R.string.close), null);
+
+		Glide.with(ctx)
+				.asBitmap()
+				.load(url + "?token=" + token)
+				.diskCacheStrategy(DiskCacheStrategy.ALL)
+				.placeholder(R.drawable.loader_animated)
+				.centerCrop()
+				.error(R.drawable.ic_close)
+				.into(
+						new CustomTarget<Bitmap>() {
+							@Override
+							public void onResourceReady(
+									@NonNull Bitmap resource,
+									Transition<? super Bitmap> transition) {
+								imageViewDialogBinding.imageView.setImageBitmap(resource);
+								imageViewDialogBinding.imageView.buildDrawingCache();
+							}
+
+							@Override
+							public void onLoadCleared(Drawable placeholder) {}
+						});
+
+		materialAlertDialogBuilder.create().show();
+	}
+
 	@Override
 	public void onResume() {
 		super.onResume();
diff --git a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
index b78aa6ca..573bdcf8 100644
--- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
@@ -535,7 +535,7 @@ public class IssueDetailActivity extends BaseActivity
 												viewBinding.commentReply.setText(null);
 												viewBinding.commentReply.clearFocus();
 												imm.toggleSoftInput(
-														InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
+														InputMethodManager.SHOW_IMPLICIT, 0);
 											} else {
 
 												Toasty.error(ctx, getString(R.string.genericError));
@@ -1785,7 +1785,7 @@ public class IssueDetailActivity extends BaseActivity
 							viewBinding.send.setEnabled(false);
 							viewBinding.commentReply.setText(null);
 							viewBinding.commentReply.clearFocus();
-							imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
+							imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
 
 						} else if (response.code() == 401) {
 
diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
index a492a9a1..e65fcd7a 100644
--- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
@@ -10,6 +10,7 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
+import androidx.activity.EdgeToEdge;
 import androidx.activity.OnBackPressedCallback;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.ActionBarDrawerToggle;
@@ -93,6 +94,7 @@ public class MainActivity extends BaseActivity
 	public void onCreate(Bundle savedInstanceState) {
 
 		super.onCreate(savedInstanceState);
+		EdgeToEdge.enable(this);
 
 		ActivityMainBinding activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
 		setContentView(activityMainBinding.getRoot());
diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
index 501b9aa4..adb5e78f 100644
--- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
@@ -222,11 +222,11 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
 			filterMilestoneBottomSheet.show(
 					getSupportFragmentManager(), "repoFilterMenuMilestoneBottomSheet");
 			return true;
-		} else if (id == R.id.switchBranches) {
+		} /*else if (id == R.id.switchBranches) {
 
 			chooseBranch();
 			return true;
-		} else if (id == R.id.branchCommits) {
+		}*/ else if (id == R.id.branchCommits) {
 
 			Intent intent = repository.getIntent(ctx, CommitsActivity.class);
 
diff --git a/app/src/main/java/org/mian/gitnex/adapters/CollaboratorSearchAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/CollaboratorSearchAdapter.java
index bdbdb848..7430adda 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/CollaboratorSearchAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/CollaboratorSearchAdapter.java
@@ -1,5 +1,6 @@
 package org.mian.gitnex.adapters;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Handler;
@@ -99,7 +100,7 @@ public class CollaboratorSearchAdapter
 									currentItem.getLogin());
 
 			call.enqueue(
-					new Callback<Void>() {
+					new Callback<>() {
 
 						@Override
 						public void onResponse(
@@ -138,6 +139,12 @@ public class CollaboratorSearchAdapter
 		return usersSearchList.size();
 	}
 
+	@SuppressLint("NotifyDataSetChanged")
+	public void clearAdapter() {
+		usersSearchList.clear();
+		notifyDataSetChanged();
+	}
+
 	public class CollaboratorSearchViewHolder extends RecyclerView.ViewHolder {
 
 		private final ImageView userAvatar;
diff --git a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
index e410ead8..a26f024d 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
@@ -18,6 +18,7 @@ import com.amulyakhare.textdrawable.TextDrawable;
 import com.amulyakhare.textdrawable.util.ColorGenerator;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.google.android.material.card.MaterialCardView;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -164,6 +165,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
 		private final View spacerView;
 		private org.gitnex.tea4j.v2.models.Repository userRepositories;
 		private CheckBox isRepoAdmin;
+		private MaterialCardView isRepoArchivedFrame;
 
 		ReposHolder(View itemView) {
 
@@ -176,6 +178,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
 			repoStars = itemView.findViewById(R.id.repoStars);
 			repoLastUpdated = itemView.findViewById(R.id.repoLastUpdated);
 			spacerView = itemView.findViewById(R.id.spacerView);
+			isRepoArchivedFrame = itemView.findViewById(R.id.repo_is_archived_frame);
 
 			itemView.setOnClickListener(
 					v -> {
@@ -254,6 +257,12 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
 				isRepoAdmin = new CheckBox(context);
 			}
 			isRepoAdmin.setChecked(repositories.getPermissions().isAdmin());
+
+			if (repositories.isArchived()) {
+				isRepoArchivedFrame.setVisibility(View.VISIBLE);
+			} else {
+				isRepoArchivedFrame.setVisibility(View.GONE);
+			}
 		}
 	}
 }
diff --git a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
index 32ee2328..cbf7e16d 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
@@ -1,6 +1,7 @@
 package org.mian.gitnex.fragments;
 
 import android.annotation.SuppressLint;
+import android.app.Dialog;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
@@ -17,17 +18,21 @@ import androidx.appcompat.widget.SearchView;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.LinearLayoutManager;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import moe.feng.common.view.breadcrumbs.DefaultBreadcrumbsCallback;
 import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem;
+import org.gitnex.tea4j.v2.models.Branch;
 import org.gitnex.tea4j.v2.models.ContentsResponse;
 import org.mian.gitnex.R;
 import org.mian.gitnex.activities.CreateFileActivity;
 import org.mian.gitnex.activities.FileViewActivity;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.adapters.FilesAdapter;
+import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.database.api.BaseApi;
 import org.mian.gitnex.database.api.UserAccountsApi;
 import org.mian.gitnex.database.models.UserAccount;
@@ -36,6 +41,9 @@ import org.mian.gitnex.helpers.AppUtil;
 import org.mian.gitnex.helpers.Path;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import org.mian.gitnex.viewmodels.FilesViewModel;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
 
 /**
  * @author M M Arif
@@ -79,6 +87,8 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 		binding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
 		binding.recyclerView.setAdapter(filesAdapter);
 
+		binding.branchTitle.setText(repository.getBranchRef());
+
 		binding.breadcrumbsView.setItems(
 				new ArrayList<>(
 						Collections.singletonList(
@@ -172,6 +182,8 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 		binding.newFile.setOnClickListener(
 				v17 -> startActivity(repository.getIntent(getContext(), CreateFileActivity.class)));
 
+		binding.switchBranch.setOnClickListener(switchBranch -> chooseBranch());
+
 		return binding.getRoot();
 	}
 
@@ -220,10 +232,10 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 
 				for (UserAccount userAccount : userAccounts) {
 					Uri instanceUri = Uri.parse(userAccount.getInstanceUrl());
-					if (instanceUri.getHost().toLowerCase().equals(host)) {
+					if (Objects.requireNonNull(instanceUri.getHost()).toLowerCase().equals(host)) {
 						account = userAccount;
 						// if scheme is wrong fix it
-						if (!url.getScheme().equals(instanceUri.getScheme())) {
+						if (!Objects.equals(url.getScheme(), instanceUri.getScheme())) {
 							url = AppUtil.changeScheme(url, instanceUri.getScheme());
 						}
 						break;
@@ -281,7 +293,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 							filesAdapter.getOriginalFiles().addAll(filesListMain);
 							filesAdapter.notifyOriginalDataSetChanged();
 
-							if (filesListMain.size() > 0) {
+							if (!filesListMain.isEmpty()) {
 
 								AppUtil.setMultiVisibility(
 										View.VISIBLE, binding.recyclerView, binding.filesFrame);
@@ -322,7 +334,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 							filesAdapter.getOriginalFiles().addAll(filesListMain2);
 							filesAdapter.notifyOriginalDataSetChanged();
 
-							if (filesListMain2.size() > 0) {
+							if (!filesListMain2.isEmpty()) {
 
 								AppUtil.setMultiVisibility(
 										View.VISIBLE, binding.recyclerView, binding.filesFrame);
@@ -340,6 +352,70 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 						});
 	}
 
+	private void chooseBranch() {
+
+		Dialog progressDialog = new Dialog(requireContext());
+		progressDialog.setCancelable(false);
+		progressDialog.setContentView(R.layout.custom_progress_loader);
+		progressDialog.show();
+
+		MaterialAlertDialogBuilder materialAlertDialogBuilder =
+				new MaterialAlertDialogBuilder(
+						requireContext(), R.style.ThemeOverlay_Material3_Dialog_Alert);
+
+		Call<List<Branch>> call =
+				RetrofitClient.getApiInterface(requireContext())
+						.repoListBranches(repository.getOwner(), repository.getName(), null, null);
+
+		call.enqueue(
+				new Callback<>() {
+
+					@Override
+					public void onResponse(
+							@NonNull Call<List<Branch>> call,
+							@NonNull Response<List<Branch>> response) {
+
+						progressDialog.hide();
+						if (response.code() == 200) {
+
+							List<String> branchesList = new ArrayList<>();
+							int selectedBranch = 0;
+							assert response.body() != null;
+
+							for (int i = 0; i < response.body().size(); i++) {
+
+								Branch branches = response.body().get(i);
+								branchesList.add(branches.getName());
+
+								if (repository.getBranchRef().equals(branches.getName())) {
+									selectedBranch = i;
+								}
+							}
+
+							materialAlertDialogBuilder
+									.setTitle(R.string.pageTitleChooseBranch)
+									.setSingleChoiceItems(
+											branchesList.toArray(new String[0]),
+											selectedBranch,
+											(dialogInterface, i) -> {
+												repository.setBranchRef(branchesList.get(i));
+												binding.branchTitle.setText(branchesList.get(i));
+
+												refresh();
+												dialogInterface.dismiss();
+											})
+									.setNeutralButton(R.string.cancelButton, null);
+							materialAlertDialogBuilder.create().show();
+						}
+					}
+
+					@Override
+					public void onFailure(@NonNull Call<List<Branch>> call, @NonNull Throwable t) {
+						progressDialog.hide();
+					}
+				});
+	}
+
 	@Override
 	public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
 
@@ -353,6 +429,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
 		MenuItem searchItem = menu.findItem(R.id.action_search);
 
 		SearchView searchView = (SearchView) searchItem.getActionView();
+		assert searchView != null;
 		searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
 		searchView.setOnQueryTextListener(
 				new SearchView.OnQueryTextListener() {
diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
index 08aaffce..ec230d3a 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
@@ -286,19 +286,9 @@ public class RepoInfoFragment extends Fragment {
 									AlertDialogs.authorizationTokenRevokedDialog(ctx);
 									break;
 
-								case 403:
-									Toasty.error(ctx, ctx.getString(R.string.authorizeError));
-									binding.languagesStatistic.setVisibility(View.GONE);
-									break;
-
 								case 404:
 									binding.languagesStatistic.setVisibility(View.GONE);
 									break;
-
-								default:
-									Toasty.error(getContext(), getString(R.string.genericError));
-									binding.languagesStatistic.setVisibility(View.GONE);
-									break;
 							}
 						}
 					}
@@ -529,22 +519,10 @@ public class RepoInfoFragment extends Fragment {
 									AlertDialogs.authorizationTokenRevokedDialog(ctx);
 									break;
 
-								case 403:
-									Toasty.error(ctx, ctx.getString(R.string.authorizeError));
-									binding.fileContentsFrameHeader.setVisibility(View.GONE);
-									binding.fileContentsFrame.setVisibility(View.GONE);
-									break;
-
 								case 404:
 									binding.fileContentsFrameHeader.setVisibility(View.GONE);
 									binding.fileContentsFrame.setVisibility(View.GONE);
 									break;
-
-								default:
-									Toasty.error(getContext(), getString(R.string.genericError));
-									binding.fileContentsFrameHeader.setVisibility(View.GONE);
-									binding.fileContentsFrame.setVisibility(View.GONE);
-									break;
 							}
 						}
 					}
diff --git a/app/src/main/res/layout/activity_add_collaborator_to_repository.xml b/app/src/main/res/layout/activity_add_collaborator_to_repository.xml
index 6e1aabb9..4ca360a8 100644
--- a/app/src/main/res/layout/activity_add_collaborator_to_repository.xml
+++ b/app/src/main/res/layout/activity_add_collaborator_to_repository.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout android:layout_width="match_parent"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+    android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
+    android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:background="?attr/primaryBackgroundColor">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -55,66 +56,69 @@
         android:visibility="gone"
         app:indicatorColor="?attr/progressIndicatorColor"/>
 
-    <LinearLayout
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/dimen10dp"
-        android:layout_marginEnd="@dimen/dimen10dp"
-        android:layout_marginTop="@dimen/dimen10dp"
-        android:layout_marginBottom="@dimen/dimen10dp">
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
-        <com.google.android.material.textfield.TextInputLayout
-            android:id="@+id/addCollaboratorSearchLayout"
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textColorHint="?attr/hintColor"
-            app:hintTextColor="?attr/hintColor"
-            app:boxStrokeErrorColor="@color/darkRed"
-            android:layout_marginTop="@dimen/dimen8dp"
-            android:layout_marginBottom="@dimen/dimen8dp"
-            app:startIconDrawable="@drawable/ic_search"
-            app:startIconTint="?attr/iconsColor"
-            app:endIconMode="clear_text"
-            app:endIconTint="?attr/iconsColor"
-            android:hint="@string/addCollaboratorSearchHint">
+            android:orientation="vertical"
+            android:padding="@dimen/dimen16dp">
 
-            <com.google.android.material.textfield.TextInputEditText
-                android:id="@+id/addCollaboratorSearch"
+            <com.google.android.material.textfield.TextInputLayout
+                android:id="@+id/addCollaboratorSearchLayout"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textColor="?attr/inputTextColor"
                 android:textColorHint="?attr/hintColor"
-                android:singleLine="true"
-                android:imeOptions="actionSend"
-                android:inputType="text"
-                android:textSize="@dimen/dimen16sp"/>
+                app:hintTextColor="?attr/hintColor"
+                app:boxStrokeErrorColor="@color/darkRed"
+                android:layout_marginBottom="@dimen/dimen8dp"
+                app:startIconDrawable="@drawable/ic_search"
+                app:startIconTint="?attr/iconsColor"
+                app:endIconMode="clear_text"
+                app:endIconTint="?attr/iconsColor"
+                android:hint="@string/addCollaboratorSearchHint">
 
-        </com.google.android.material.textfield.TextInputLayout>
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/addCollaboratorSearch"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:textColor="?attr/inputTextColor"
+                    android:textColorHint="?attr/hintColor"
+                    android:singleLine="true"
+                    android:imeOptions="actionSend"
+                    android:inputType="text"
+                    android:textSize="@dimen/dimen16sp"/>
 
-    </LinearLayout>
+            </com.google.android.material.textfield.TextInputLayout>
 
-    <TextView
-        android:id="@+id/noData"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_margin="@dimen/dimen16dp"
-        android:gravity="center"
-        android:text="@string/noDataFound"
-        android:textColor="?attr/primaryTextColor"
-        android:textSize="@dimen/dimen20sp"
-        android:visibility="gone"/>
+            <TextView
+                android:id="@+id/noData"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_margin="@dimen/dimen16dp"
+                android:gravity="center"
+                android:text="@string/noDataFound"
+                android:textColor="?attr/primaryTextColor"
+                android:textSize="@dimen/dimen20sp"
+                android:visibility="gone"/>
 
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?attr/primaryBackgroundColor"
-        android:padding="@dimen/dimen8dp">
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="?attr/primaryBackgroundColor">
 
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerViewUserSearch"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recyclerViewUserSearch"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"/>
 
-    </FrameLayout>
+            </FrameLayout>
 
-</LinearLayout>
+        </LinearLayout>
+
+    </androidx.core.widget.NestedScrollView>
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_add_new_account.xml b/app/src/main/res/layout/activity_add_new_account.xml
index a3df6471..6082c0a4 100644
--- a/app/src/main/res/layout/activity_add_new_account.xml
+++ b/app/src/main/res/layout/activity_add_new_account.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fitsSystemWindows="true"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_add_new_team_member.xml b/app/src/main/res/layout/activity_add_new_team_member.xml
index b459c9a7..9a1250e8 100644
--- a/app/src/main/res/layout/activity_add_new_team_member.xml
+++ b/app/src/main/res/layout/activity_add_new_team_member.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout android:layout_width="match_parent"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+    android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
+    android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:background="?attr/primaryBackgroundColor">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -55,15 +56,18 @@
         style="@style/Widget.MaterialComponents.LinearProgressIndicator"
         app:indicatorColor="?attr/progressIndicatorColor"/>
 
-    <LinearLayout
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/dimen10dp"
-        android:layout_marginEnd="@dimen/dimen10dp"
-        android:layout_marginTop="@dimen/dimen10dp"
-        android:layout_marginBottom="@dimen/dimen10dp">
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
-        <com.google.android.material.textfield.TextInputLayout
+       <LinearLayout
+           android:layout_width="match_parent"
+           android:layout_height="wrap_content"
+           android:orientation="vertical"
+           android:padding="@dimen/dimen16dp">
+
+           <com.google.android.material.textfield.TextInputLayout
             android:id="@+id/addNewTeamMemberLayout"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
@@ -71,7 +75,6 @@
             android:textColorHint="?attr/hintColor"
             app:hintTextColor="?attr/hintColor"
             app:boxStrokeErrorColor="@color/darkRed"
-            android:layout_marginTop="@dimen/dimen8dp"
             android:layout_marginBottom="@dimen/dimen8dp"
             app:startIconDrawable="@drawable/ic_search"
             app:startIconTint="?attr/iconsColor"
@@ -89,32 +92,33 @@
                 android:inputType="text"
                 android:textSize="@dimen/dimen16sp"/>
 
-        </com.google.android.material.textfield.TextInputLayout>
+           </com.google.android.material.textfield.TextInputLayout>
 
-    </LinearLayout>
+            <TextView
+                android:id="@+id/noData"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_margin="@dimen/dimen16dp"
+                android:gravity="center"
+                android:text="@string/noDataFound"
+                android:textColor="?attr/primaryTextColor"
+                android:textSize="@dimen/dimen20sp"
+                android:visibility="gone"/>
 
-    <TextView
-        android:id="@+id/noData"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_margin="@dimen/dimen16dp"
-        android:gravity="center"
-        android:text="@string/noDataFound"
-        android:textColor="?attr/primaryTextColor"
-        android:textSize="@dimen/dimen20sp"
-        android:visibility="gone"/>
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="?attr/primaryBackgroundColor">
 
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?attr/primaryBackgroundColor"
-        android:padding="@dimen/dimen8dp">
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recyclerViewUserSearch"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"/>
 
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerViewUserSearch"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
+            </FrameLayout>
 
-    </FrameLayout>
+       </LinearLayout>
 
-</LinearLayout>
+    </androidx.core.widget.NestedScrollView>
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_admin_cron_tasks.xml b/app/src/main/res/layout/activity_admin_cron_tasks.xml
index eaa2221b..ef4e99ba 100644
--- a/app/src/main/res/layout/activity_admin_cron_tasks.xml
+++ b/app/src/main/res/layout/activity_admin_cron_tasks.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -87,4 +88,4 @@
         android:textSize="@dimen/dimen20sp"
         android:visibility="gone" />
 
-</RelativeLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_admin_get_users.xml b/app/src/main/res/layout/activity_admin_get_users.xml
index 0c1fb597..e12c8ab8 100644
--- a/app/src/main/res/layout/activity_admin_get_users.xml
+++ b/app/src/main/res/layout/activity_admin_get_users.xml
@@ -5,6 +5,7 @@
     android:layout_height="match_parent"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="vertical"
+    android:fitsSystemWindows="true"
     android:background="?attr/primaryBackgroundColor">
 
     <FrameLayout
diff --git a/app/src/main/res/layout/activity_code_editor.xml b/app/src/main/res/layout/activity_code_editor.xml
index e21e61a5..d22bad86 100644
--- a/app/src/main/res/layout/activity_code_editor.xml
+++ b/app/src/main/res/layout/activity_code_editor.xml
@@ -4,6 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
     android:orientation="vertical">
 
     <com.google.android.material.appbar.AppBarLayout
diff --git a/app/src/main/res/layout/activity_commit_details.xml b/app/src/main/res/layout/activity_commit_details.xml
index 7c7c2593..a0d6fcad 100644
--- a/app/src/main/res/layout/activity_commit_details.xml
+++ b/app/src/main/res/layout/activity_commit_details.xml
@@ -1,8 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:background="?attr/primaryBackgroundColor"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fitsSystemWindows="true">
 
     <FrameLayout
         android:id="@+id/fragment_container"
@@ -10,4 +12,4 @@
         android:layout_height="match_parent"
         android:background="?attr/primaryBackgroundColor"/>
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_commits.xml b/app/src/main/res/layout/activity_commits.xml
index 3c66e77d..80bfb937 100644
--- a/app/src/main/res/layout/activity_commits.xml
+++ b/app/src/main/res/layout/activity_commits.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -90,4 +91,4 @@
         android:textSize="@dimen/dimen20sp"
         android:visibility="gone"/>
 
-</RelativeLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_create_file.xml b/app/src/main/res/layout/activity_create_file.xml
index 0d2cd649..d1db9082 100644
--- a/app/src/main/res/layout/activity_create_file.xml
+++ b/app/src/main/res/layout/activity_create_file.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_issue.xml b/app/src/main/res/layout/activity_create_issue.xml
index cefefb4f..07a792d9 100644
--- a/app/src/main/res/layout/activity_create_issue.xml
+++ b/app/src/main/res/layout/activity_create_issue.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_label.xml b/app/src/main/res/layout/activity_create_label.xml
index 88bfe65f..fdf3f98a 100644
--- a/app/src/main/res/layout/activity_create_label.xml
+++ b/app/src/main/res/layout/activity_create_label.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_milestone.xml b/app/src/main/res/layout/activity_create_milestone.xml
index 0cba7814..1e623486 100644
--- a/app/src/main/res/layout/activity_create_milestone.xml
+++ b/app/src/main/res/layout/activity_create_milestone.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_new_user.xml b/app/src/main/res/layout/activity_create_new_user.xml
index 5508e9eb..59ee6595 100644
--- a/app/src/main/res/layout/activity_create_new_user.xml
+++ b/app/src/main/res/layout/activity_create_new_user.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_note.xml b/app/src/main/res/layout/activity_create_note.xml
index 54a6914a..ed08f985 100644
--- a/app/src/main/res/layout/activity_create_note.xml
+++ b/app/src/main/res/layout/activity_create_note.xml
@@ -1,16 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:theme="@style/Widget.AppCompat.SearchView"
+        android:background="?attr/primaryBackgroundColor"
         app:elevation="@dimen/dimen0dp">
 
         <com.google.android.material.appbar.MaterialToolbar
@@ -46,9 +47,10 @@
 
     </com.google.android.material.appbar.AppBarLayout>
 
-    <ScrollView
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
         android:background="?attr/primaryBackgroundColor">
 
         <LinearLayout
@@ -81,6 +83,6 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_create_organization.xml b/app/src/main/res/layout/activity_create_organization.xml
index 070b1cbc..86ea53ca 100644
--- a/app/src/main/res/layout/activity_create_organization.xml
+++ b/app/src/main/res/layout/activity_create_organization.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_pr.xml b/app/src/main/res/layout/activity_create_pr.xml
index 71eab957..38231805 100644
--- a/app/src/main/res/layout/activity_create_pr.xml
+++ b/app/src/main/res/layout/activity_create_pr.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
@@ -94,7 +94,7 @@
                 android:text="@string/insertNote"
                 android:textColor="?attr/primaryTextColor"
                 android:textSize="@dimen/dimen14sp"/>
-            
+
             <com.google.android.material.textfield.TextInputLayout
                 android:id="@+id/prBodyLayout"
                 android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/activity_create_release.xml b/app/src/main/res/layout/activity_create_release.xml
index e54c72a0..c3841dab 100644
--- a/app/src/main/res/layout/activity_create_release.xml
+++ b/app/src/main/res/layout/activity_create_release.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_repo.xml b/app/src/main/res/layout/activity_create_repo.xml
index 2cc08e5b..fe7da67e 100644
--- a/app/src/main/res/layout/activity_create_repo.xml
+++ b/app/src/main/res/layout/activity_create_repo.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_create_team_by_org.xml b/app/src/main/res/layout/activity_create_team_by_org.xml
index 4b175440..d888fa50 100644
--- a/app/src/main/res/layout/activity_create_team_by_org.xml
+++ b/app/src/main/res/layout/activity_create_team_by_org.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_deeplinks.xml b/app/src/main/res/layout/activity_deeplinks.xml
index 056287b9..e6539862 100644
--- a/app/src/main/res/layout/activity_deeplinks.xml
+++ b/app/src/main/res/layout/activity_deeplinks.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.progressindicator.LinearProgressIndicator
         android:id="@+id/progressBar"
@@ -14,10 +15,10 @@
         android:indeterminate="true"
         app:indicatorColor="?attr/progressIndicatorColor" />
 
-    <ScrollView
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -158,6 +159,6 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_diff.xml b/app/src/main/res/layout/activity_diff.xml
index e81ff803..d4b9069d 100644
--- a/app/src/main/res/layout/activity_diff.xml
+++ b/app/src/main/res/layout/activity_diff.xml
@@ -1,13 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fitsSystemWindows="true">
 
     <FrameLayout
         android:id="@+id/fragment_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_edit_issue.xml b/app/src/main/res/layout/activity_edit_issue.xml
index d3b5314a..7b89a1b4 100644
--- a/app/src/main/res/layout/activity_edit_issue.xml
+++ b/app/src/main/res/layout/activity_edit_issue.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
@@ -158,6 +158,24 @@
 
             </com.google.android.material.textfield.TextInputLayout>
 
+           <LinearLayout
+               android:id="@+id/attachmentFrame"
+               android:layout_width="match_parent"
+               android:layout_height="wrap_content"
+               android:visibility="gone"
+               android:orientation="vertical">
+
+                <LinearLayout
+                    android:id="@+id/attachmentsView"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/dimen12dp"
+                    android:orientation="horizontal">
+
+                </LinearLayout>
+
+            </LinearLayout>
+
         </LinearLayout>
 
     </androidx.core.widget.NestedScrollView>
diff --git a/app/src/main/res/layout/activity_file_view.xml b/app/src/main/res/layout/activity_file_view.xml
index 1227b354..83f10578 100644
--- a/app/src/main/res/layout/activity_file_view.xml
+++ b/app/src/main/res/layout/activity_file_view.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -61,6 +61,7 @@
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
         android:background="?attr/primaryBackgroundColor">
 
         <LinearLayout
@@ -100,8 +101,7 @@
                 android:id="@+id/contents"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:visibility="gone"
-                tools:visibility="visible"/>
+                android:visibility="gone" />
 
             <com.github.chrisbanes.photoview.PhotoView
                 android:id="@+id/photo_view"
@@ -114,4 +114,4 @@
 
     </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml
index 7bd980f3..a3ccd1b4 100644
--- a/app/src/main/res/layout/activity_issue_detail.xml
+++ b/app/src/main/res/layout/activity_issue_detail.xml
@@ -5,6 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
+    android:fitsSystemWindows="true"
     android:orientation="vertical">
 
     <com.google.android.material.appbar.AppBarLayout
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8ff16694..818675cf 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -12,6 +12,8 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:fitsSystemWindows="true"
+        android:background="?attr/primaryBackgroundColor"
         android:orientation="vertical">
 
         <com.google.android.material.appbar.MaterialToolbar
@@ -20,7 +22,6 @@
             android:background="?attr/primaryBackgroundColor"
             android:id="@+id/toolbar"
             app:titleTextColor="?attr/primaryTextColor"
-            android:theme="@style/Widget.AppCompat.SearchView"
             android:elevation="@dimen/dimen0dp">
 
             <TextView
diff --git a/app/src/main/res/layout/activity_merge_pull_request.xml b/app/src/main/res/layout/activity_merge_pull_request.xml
index ceea1190..cd9bf5f3 100644
--- a/app/src/main/res/layout/activity_merge_pull_request.xml
+++ b/app/src/main/res/layout/activity_merge_pull_request.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_org_team_info.xml b/app/src/main/res/layout/activity_org_team_info.xml
index e5def625..621ed049 100644
--- a/app/src/main/res/layout/activity_org_team_info.xml
+++ b/app/src/main/res/layout/activity_org_team_info.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -63,4 +64,4 @@
         android:layout_height="match_parent"
         app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_repo_forks.xml b/app/src/main/res/layout/activity_repo_forks.xml
index 7deee354..59cd6558 100644
--- a/app/src/main/res/layout/activity_repo_forks.xml
+++ b/app/src/main/res/layout/activity_repo_forks.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="?attr/primaryBackgroundColor">
+    android:background="?attr/primaryBackgroundColor"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -100,4 +101,4 @@
         android:textSize="@dimen/dimen20sp"
         android:visibility="gone"/>
 
-</RelativeLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_repo_stargazers.xml b/app/src/main/res/layout/activity_repo_stargazers.xml
index dfd7ede0..9bef10b8 100644
--- a/app/src/main/res/layout/activity_repo_stargazers.xml
+++ b/app/src/main/res/layout/activity_repo_stargazers.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        app:elevation="@dimen/dimen0dp"
-        android:theme="@style/Widget.AppCompat.SearchView">
+        android:theme="@style/Widget.AppCompat.SearchView"
+        app:elevation="@dimen/dimen0dp">
 
         <com.google.android.material.appbar.MaterialToolbar
             android:id="@+id/toolbar"
@@ -46,32 +46,47 @@
 
     </com.google.android.material.appbar.AppBarLayout>
 
-    <GridView
-        android:id="@+id/gridView"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:scrollbars="none"
-        android:numColumns="2"
-        android:gravity="center"
-        android:background="?attr/primaryBackgroundColor"
-        android:padding="@dimen/dimen4dp"/>
-
-    <com.google.android.material.progressindicator.LinearProgressIndicator
-        android:id="@+id/progress_bar"
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:indeterminate="true"
-        style="@style/Widget.MaterialComponents.LinearProgressIndicator"
-        app:indicatorColor="?attr/progressIndicatorColor"/>
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
+        android:background="?attr/primaryBackgroundColor">
 
-    <TextView
-        android:id="@+id/noDataStargazers"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center"
-        android:text="@string/noDataFound"
-        android:textColor="?attr/primaryTextColor"
-        android:textSize="@dimen/dimen20sp"
-        android:visibility="gone"/>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
 
-</LinearLayout>
+            <GridView
+                android:id="@+id/gridView"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:scrollbars="none"
+                android:numColumns="2"
+                android:gravity="center"
+                android:background="?attr/primaryBackgroundColor"
+                android:padding="@dimen/dimen4dp"/>
+
+            <com.google.android.material.progressindicator.LinearProgressIndicator
+                android:id="@+id/progress_bar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:indeterminate="true"
+                style="@style/Widget.MaterialComponents.LinearProgressIndicator"
+                app:indicatorColor="?attr/progressIndicatorColor"/>
+
+        </LinearLayout>
+
+    </androidx.core.widget.NestedScrollView>
+
+     <TextView
+         android:id="@+id/noDataStargazers"
+         android:layout_width="match_parent"
+         android:layout_height="match_parent"
+         android:gravity="center"
+         android:text="@string/noDataFound"
+         android:textColor="?attr/primaryTextColor"
+         android:textSize="@dimen/dimen20sp"
+         android:visibility="gone"/>
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_repo_watchers.xml b/app/src/main/res/layout/activity_repo_watchers.xml
index 4845bcdb..09f76629 100644
--- a/app/src/main/res/layout/activity_repo_watchers.xml
+++ b/app/src/main/res/layout/activity_repo_watchers.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        app:elevation="@dimen/dimen0dp"
-        android:theme="@style/Widget.AppCompat.SearchView">
+        android:theme="@style/Widget.AppCompat.SearchView"
+        app:elevation="@dimen/dimen0dp">
 
         <com.google.android.material.appbar.MaterialToolbar
             android:id="@+id/toolbar"
@@ -46,23 +46,38 @@
 
     </com.google.android.material.appbar.AppBarLayout>
 
-    <GridView
-        android:id="@+id/gridView"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:padding="@dimen/dimen4dp"
-        android:scrollbars="none"
-        android:numColumns="2"
-        android:gravity="center"/>
-
-    <com.google.android.material.progressindicator.LinearProgressIndicator
-        android:id="@+id/progress_bar"
+    <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:indeterminate="true"
-        style="@style/Widget.MaterialComponents.LinearProgressIndicator"
-        app:indicatorColor="?attr/progressIndicatorColor"/>
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
+        android:background="?attr/primaryBackgroundColor">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <com.google.android.material.progressindicator.LinearProgressIndicator
+                android:id="@+id/progress_bar"
+                style="@style/Widget.MaterialComponents.LinearProgressIndicator"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:indeterminate="true"
+                app:indicatorColor="?attr/progressIndicatorColor"/>
+
+            <GridView
+                android:id="@+id/gridView"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="?attr/primaryBackgroundColor"
+                android:padding="@dimen/dimen4dp"
+                android:scrollbars="none"
+                android:numColumns="2"
+                android:gravity="center"/>
+
+        </LinearLayout>
+
+    </androidx.core.widget.NestedScrollView>
 
     <TextView
         android:id="@+id/noDataWatchers"
@@ -74,4 +89,4 @@
         android:textSize="@dimen/dimen20sp"
         android:visibility="gone"/>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_repository_settings.xml b/app/src/main/res/layout/activity_repository_settings.xml
index 6d6b5ea9..b5986a49 100644
--- a/app/src/main/res/layout/activity_repository_settings.xml
+++ b/app/src/main/res/layout/activity_repository_settings.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -48,8 +48,10 @@
 
     </com.google.android.material.appbar.AppBarLayout>
 
-    <ScrollView android:layout_width="match_parent"
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
         android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"
         android:background="?attr/primaryBackgroundColor">
 
         <LinearLayout
@@ -75,6 +77,10 @@
             <View
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/dimen1dp"
+                android:layout_marginTop="@dimen/dimen4dp"
+                android:layout_marginBottom="@dimen/dimen4dp"
+                android:layout_marginStart="@dimen/dimen16dp"
+                android:layout_marginEnd="@dimen/dimen16dp"
                 android:background="?attr/dividerColor"/>
 
             <LinearLayout
@@ -84,8 +90,7 @@
                 android:background="?android:attr/selectableItemBackground"
                 android:clickable="true"
                 android:focusable="true"
-                android:orientation="vertical"
-                tools:visibility="visible">
+                android:orientation="vertical">
 
                 <TextView
                     android:id="@+id/transferRepositoryOwnership"
@@ -116,6 +121,10 @@
                 <View
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/dimen1dp"
+                    android:layout_marginTop="@dimen/dimen4dp"
+                    android:layout_marginBottom="@dimen/dimen4dp"
+                    android:layout_marginStart="@dimen/dimen16dp"
+                    android:layout_marginEnd="@dimen/dimen16dp"
                     android:background="?attr/dividerColor"/>
 
             </LinearLayout>
@@ -159,7 +168,7 @@
 
         </LinearLayout>
 
-    </ScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
 
diff --git a/app/src/main/res/layout/activity_settings_appearance.xml b/app/src/main/res/layout/activity_settings_appearance.xml
index 6980bf8e..260b471a 100644
--- a/app/src/main/res/layout/activity_settings_appearance.xml
+++ b/app/src/main/res/layout/activity_settings_appearance.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_settings_backup_restore.xml b/app/src/main/res/layout/activity_settings_backup_restore.xml
index 78020034..f13f5fea 100644
--- a/app/src/main/res/layout/activity_settings_backup_restore.xml
+++ b/app/src/main/res/layout/activity_settings_backup_restore.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_settings_code_editor.xml b/app/src/main/res/layout/activity_settings_code_editor.xml
index 3bedac6b..cc39a461 100644
--- a/app/src/main/res/layout/activity_settings_code_editor.xml
+++ b/app/src/main/res/layout/activity_settings_code_editor.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_settings_general.xml b/app/src/main/res/layout/activity_settings_general.xml
index 823e0187..fe3578dc 100644
--- a/app/src/main/res/layout/activity_settings_general.xml
+++ b/app/src/main/res/layout/activity_settings_general.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_settings_notifications.xml b/app/src/main/res/layout/activity_settings_notifications.xml
index af0e4b32..80b53621 100644
--- a/app/src/main/res/layout/activity_settings_notifications.xml
+++ b/app/src/main/res/layout/activity_settings_notifications.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_settings_security.xml b/app/src/main/res/layout/activity_settings_security.xml
index fa58d60b..387674e7 100644
--- a/app/src/main/res/layout/activity_settings_security.xml
+++ b/app/src/main/res/layout/activity_settings_security.xml
@@ -4,14 +4,14 @@
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appBarLayout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor"
-        android:fitsSystemWindows="true">
+        android:background="?attr/primaryBackgroundColor">
 
         <com.google.android.material.appbar.CollapsingToolbarLayout
             style="?attr/collapsingToolbarLayoutLargeStyle"
diff --git a/app/src/main/res/layout/activity_wiki.xml b/app/src/main/res/layout/activity_wiki.xml
index 61783586..6f9f529a 100644
--- a/app/src/main/res/layout/activity_wiki.xml
+++ b/app/src/main/res/layout/activity_wiki.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/primaryBackgroundColor"
-    android:orientation="vertical">
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -61,7 +61,8 @@
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="?attr/primaryBackgroundColor">
+        android:background="?attr/primaryBackgroundColor"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
         <LinearLayout
             android:layout_width="match_parent"
@@ -101,8 +102,7 @@
                     android:id="@+id/contents"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:visibility="gone"
-                    tools:visibility="visible"/>
+                    android:visibility="gone" />
 
             </LinearLayout>
 
@@ -181,4 +181,4 @@
 
     </androidx.core.widget.NestedScrollView>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/add_new_team_repository.xml b/app/src/main/res/layout/add_new_team_repository.xml
index cdeea21e..dd34fcc2 100644
--- a/app/src/main/res/layout/add_new_team_repository.xml
+++ b/app/src/main/res/layout/add_new_team_repository.xml
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout android:layout_width="match_parent"
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+    android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="?attr/primaryBackgroundColor"
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:orientation="vertical"
-    xmlns:android="http://schemas.android.com/apk/res/android">
+    android:fitsSystemWindows="true">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
@@ -84,4 +86,4 @@
 
     </FrameLayout>
 
-</LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/fragment_files.xml b/app/src/main/res/layout/fragment_files.xml
index 3810bdd0..bb131c87 100644
--- a/app/src/main/res/layout/fragment_files.xml
+++ b/app/src/main/res/layout/fragment_files.xml
@@ -19,7 +19,10 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             style="?attr/materialCardViewElevatedStyle"
-            android:layout_margin="@dimen/dimen8dp"
+            android:layout_marginStart="@dimen/dimen8dp"
+            android:layout_marginEnd="@dimen/dimen8dp"
+            android:layout_marginTop="@dimen/dimen8dp"
+            android:visibility="gone"
             app:cardElevation="@dimen/dimen0dp">
 
             <LinearLayout
@@ -43,27 +46,98 @@
 
         </com.google.android.material.card.MaterialCardView>
 
-        <FrameLayout
+        <!-- branch section -->
+        <com.google.android.material.card.MaterialCardView
+            android:id="@+id/branch_section"
             android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="?attr/primaryBackgroundColor"
-            android:padding="@dimen/dimen8dp">
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/dimen8dp"
+            android:layout_marginBottom="@dimen/dimen0dp"
+            android:layout_marginStart="@dimen/dimen8dp"
+            android:layout_marginEnd="@dimen/dimen8dp"
+            style="?attr/materialCardViewElevatedStyle"
+            app:strokeWidth="@dimen/dimen0dp"
+            app:cardElevation="@dimen/dimen0dp">
 
-            <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
-                android:id="@+id/pullToRefresh"
+            <LinearLayout
+                android:id="@+id/files_branches_main_frame"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:orientation="horizontal"
+                android:background="?attr/materialCardBackgroundColor"
+                android:padding="@dimen/dimen12dp">
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/recyclerView"
+                <ImageView
+                    android:layout_width="@dimen/dimen24dp"
+                    android:layout_height="@dimen/dimen24dp"
+                    android:contentDescription="@string/branch"
+                    android:layout_marginEnd="@dimen/dimen16dp"
+                    app:tint="?attr/iconsColor"
+                    app:srcCompat="@drawable/ic_branch" />
+
+                <LinearLayout
+                    android:id="@+id/files_branches_frame"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:clipToPadding="false"
-                    android:paddingBottom="@dimen/dimen72dp" />
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    tools:ignore="UseCompoundDrawables">
 
-            </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+                    <TextView
+                        android:id="@+id/branch_title"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:layout_marginEnd="@dimen/dimen16dp"
+                        android:text="@string/branch"
+                        android:textSize="@dimen/dimen16sp" />
 
-        </FrameLayout>
+                    <TextView
+                        android:id="@+id/switch_branch"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/switch_branch"
+                        android:textAllCaps="true"
+                        android:textSize="@dimen/dimen14sp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </com.google.android.material.card.MaterialCardView>
+        <!-- branch section -->
+
+        <com.google.android.material.card.MaterialCardView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            style="?attr/materialCardViewElevatedStyle"
+            android:layout_margin="@dimen/dimen8dp"
+            app:cardElevation="@dimen/dimen0dp">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:foreground="?android:attr/selectableItemBackground"
+                android:background="?attr/materialCardBackgroundColor"
+                android:orientation="horizontal">
+
+                    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+                        android:id="@+id/pullToRefresh"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content">
+
+                        <androidx.recyclerview.widget.RecyclerView
+                            android:id="@+id/recyclerView"
+                            android:layout_width="match_parent"
+                            android:layout_height="match_parent"
+                            android:clipToPadding="false"
+                            android:paddingBottom="@dimen/dimen72dp" />
+
+                    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
+            </LinearLayout>
+
+        </com.google.android.material.card.MaterialCardView>
 
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/fragment_organization_info.xml b/app/src/main/res/layout/fragment_organization_info.xml
index dd2286af..70c8a78f 100644
--- a/app/src/main/res/layout/fragment_organization_info.xml
+++ b/app/src/main/res/layout/fragment_organization_info.xml
@@ -4,172 +4,178 @@
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:padding="@dimen/dimen8dp">
+    android:layout_height="match_parent">
 
-    <ScrollView
-        android:orientation="vertical"
-        android:background="?attr/primaryBackgroundColor"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:background="?attr/primaryBackgroundColor"
+        android:padding="@dimen/dimen8dp">
 
-        <com.google.android.material.card.MaterialCardView
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            style="?attr/materialCardViewElevatedStyle"
-            app:cardElevation="@dimen/dimen0dp">
+            android:layout_height="match_parent"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
-            <LinearLayout
+            <com.google.android.material.card.MaterialCardView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:foreground="?android:attr/selectableItemBackground"
-                android:background="?attr/materialCardBackgroundColor">
+                style="?attr/materialCardViewElevatedStyle"
+                app:cardElevation="@dimen/dimen0dp">
 
                 <LinearLayout
-                    android:id="@+id/orgInfoLayout"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:orientation="vertical"
-                    android:padding="@dimen/dimen16dp"
-                    android:visibility="gone"
-                    tools:visibility="visible">
-
-                    <com.google.android.material.card.MaterialCardView
-                        android:layout_width="@dimen/dimen96dp"
-                        android:layout_height="@dimen/dimen96dp"
-                        style="?attr/materialCardViewFilledStyle"
-                        android:layout_gravity="center_horizontal"
-                        app:cardElevation="@dimen/dimen0dp"
-                        android:layout_marginTop="@dimen/dimen12dp"
-                        android:layout_marginBottom="@dimen/dimen12dp"
-                        app:cardCornerRadius="@dimen/dimen16dp">
-
-                        <ImageView
-                            android:id="@+id/orgAvatar"
-                            android:layout_width="match_parent"
-                            android:layout_height="match_parent"
-                            android:contentDescription="@string/orgContentAvatar"/>
-
-                    </com.google.android.material.card.MaterialCardView>
-
-                    <TextView
-                        android:id="@+id/orgNameInfo"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:textColor="?attr/primaryTextColor"
-                        android:layout_marginBottom="@dimen/dimen4dp"
-                        android:textSize="@dimen/dimen22sp"
-                        android:textStyle="bold"/>
-
-                    <TextView
-                        android:id="@+id/orgDescInfo"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:autoLink="web"
-                        android:ellipsize="end"
-                        android:maxLines="3"
-                        android:textColor="?attr/primaryTextColor"
-                        android:textColorLink="@color/lightBlue"
-                        android:textSize="@dimen/dimen16sp"/>
-
-                    <com.google.android.material.divider.MaterialDivider
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="@dimen/dimen24dp"
-                        android:layout_marginBottom="@dimen/dimen24dp" />
+                    android:foreground="?android:attr/selectableItemBackground"
+                    android:background="?attr/materialCardBackgroundColor">
 
                     <LinearLayout
+                        android:id="@+id/orgInfoLayout"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:layout_marginBottom="@dimen/dimen20dp"
-                        android:orientation="horizontal"
-                        android:paddingLeft="@dimen/dimen12dp"
-                        android:paddingRight="@dimen/dimen12dp">
+                        android:orientation="vertical"
+                        android:padding="@dimen/dimen16dp"
+                        android:visibility="gone"
+                        tools:visibility="visible">
 
-                        <ImageView
-                            android:layout_gravity="center"
-                            android:layout_width="wrap_content"
+                        <com.google.android.material.card.MaterialCardView
+                            android:layout_width="@dimen/dimen96dp"
+                            android:layout_height="@dimen/dimen96dp"
+                            style="?attr/materialCardViewFilledStyle"
+                            android:layout_gravity="center_horizontal"
+                            app:cardElevation="@dimen/dimen0dp"
+                            android:layout_marginTop="@dimen/dimen12dp"
+                            android:layout_marginBottom="@dimen/dimen12dp"
+                            app:cardCornerRadius="@dimen/dimen16dp">
+
+                            <ImageView
+                                android:id="@+id/orgAvatar"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:contentDescription="@string/orgContentAvatar"/>
+
+                        </com.google.android.material.card.MaterialCardView>
+
+                        <TextView
+                            android:id="@+id/orgNameInfo"
+                            android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:contentDescription="@string/websiteText"
-                            app:srcCompat="@drawable/ic_link"/>
+                            android:textColor="?attr/primaryTextColor"
+                            android:layout_marginBottom="@dimen/dimen4dp"
+                            android:textSize="@dimen/dimen22sp"
+                            android:textStyle="bold"/>
+
+                        <TextView
+                            android:id="@+id/orgDescInfo"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:autoLink="web"
+                            android:ellipsize="end"
+                            android:maxLines="3"
+                            android:textColor="?attr/primaryTextColor"
+                            android:textColorLink="@color/lightBlue"
+                            android:textSize="@dimen/dimen16sp"/>
+
+                        <com.google.android.material.divider.MaterialDivider
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="@dimen/dimen24dp"
+                            android:layout_marginBottom="@dimen/dimen24dp" />
 
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginStart="@dimen/dimen16dp"
-                            android:gravity="center_vertical"
-                            android:orientation="vertical">
+                            android:layout_marginBottom="@dimen/dimen20dp"
+                            android:orientation="horizontal"
+                            android:paddingLeft="@dimen/dimen12dp"
+                            android:paddingRight="@dimen/dimen12dp">
 
-                            <TextView
+                            <ImageView
+                                android:layout_gravity="center"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:text="@string/websiteText"
-                                android:textColor="?attr/primaryTextColor"
-                                android:textSize="@dimen/dimen16sp"/>
+                                android:contentDescription="@string/websiteText"
+                                app:srcCompat="@drawable/ic_link"/>
 
-                            <TextView
-                                android:id="@+id/orgWebsiteInfo"
+                            <LinearLayout
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
-                                android:alpha="0.9"
-                                android:autoLink="web"
-                                android:textColor="?attr/primaryTextColor"
-                                android:textColorLink="@color/lightBlue"
-                                android:textSize="@dimen/dimen14sp"
-                                tools:text="29"/>
+                                android:layout_marginStart="@dimen/dimen16dp"
+                                android:gravity="center_vertical"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:text="@string/websiteText"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textSize="@dimen/dimen16sp"/>
+
+                                <TextView
+                                    android:id="@+id/orgWebsiteInfo"
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:alpha="0.9"
+                                    android:autoLink="web"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textColorLink="@color/lightBlue"
+                                    android:textSize="@dimen/dimen14sp"
+                                    tools:text="29"/>
+                            </LinearLayout>
+
                         </LinearLayout>
 
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="20dp"
-                        android:orientation="horizontal"
-                        android:paddingLeft="@dimen/dimen12dp"
-                        android:paddingRight="@dimen/dimen12dp">
-
-                        <ImageView
-                            android:layout_gravity="center"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:contentDescription="@string/locationText"
-                            app:srcCompat="@drawable/ic_location"/>
-
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:layout_marginStart="@dimen/dimen16dp"
-                            android:gravity="center_vertical"
-                            android:orientation="vertical">
+                            android:layout_marginBottom="20dp"
+                            android:orientation="horizontal"
+                            android:paddingLeft="@dimen/dimen12dp"
+                            android:paddingRight="@dimen/dimen12dp">
 
-                            <TextView
+                            <ImageView
+                                android:layout_gravity="center"
                                 android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:text="@string/locationText"
-                                android:textColor="?attr/primaryTextColor"
-                                android:textSize="@dimen/dimen16sp"/>
+                                android:contentDescription="@string/locationText"
+                                app:srcCompat="@drawable/ic_location"/>
 
-                            <TextView
-                                android:id="@+id/orgLocationInfo"
+                            <LinearLayout
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
-                                android:alpha="0.9"
-                                android:textColor="?attr/primaryTextColor"
-                                android:textSize="@dimen/dimen14sp"
-                                tools:text="29"/>
+                                android:layout_marginStart="@dimen/dimen16dp"
+                                android:gravity="center_vertical"
+                                android:orientation="vertical">
+
+                                <TextView
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:text="@string/locationText"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textSize="@dimen/dimen16sp"/>
+
+                                <TextView
+                                    android:id="@+id/orgLocationInfo"
+                                    android:layout_width="match_parent"
+                                    android:layout_height="wrap_content"
+                                    android:alpha="0.9"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textSize="@dimen/dimen14sp"
+                                    tools:text="29"/>
+                            </LinearLayout>
+
                         </LinearLayout>
 
                     </LinearLayout>
 
                 </LinearLayout>
 
-            </LinearLayout>
+            </com.google.android.material.card.MaterialCardView>
 
-        </com.google.android.material.card.MaterialCardView>
+        </androidx.core.widget.NestedScrollView>
 
-    </ScrollView>
+    </FrameLayout>
 
     <com.google.android.material.progressindicator.LinearProgressIndicator
         android:id="@+id/progress_bar"
diff --git a/app/src/main/res/layout/fragment_repo_info.xml b/app/src/main/res/layout/fragment_repo_info.xml
index 8783b989..74ba9b28 100644
--- a/app/src/main/res/layout/fragment_repo_info.xml
+++ b/app/src/main/res/layout/fragment_repo_info.xml
@@ -27,10 +27,9 @@
                 android:text="@string/archivedRepositoryMessage"
                 android:background="@drawable/shape_archived"
                 android:padding="@dimen/dimen10dp"
-                android:layout_marginBottom="@dimen/dimen10dp"
-                android:textStyle="bold"
-                android:textSize="@dimen/dimen14sp"
-                android:textColor="?attr/fabColor" />
+                android:layout_marginBottom="@dimen/dimen8dp"
+                android:textColor="?attr/primaryTextColor"
+                android:textSize="@dimen/dimen14sp" />
 
             <com.google.android.material.card.MaterialCardView
                 android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/list_collaborators_search.xml b/app/src/main/res/layout/list_collaborators_search.xml
index 4a4c9f6a..d8d57df6 100644
--- a/app/src/main/res/layout/list_collaborators_search.xml
+++ b/app/src/main/res/layout/list_collaborators_search.xml
@@ -86,7 +86,8 @@
                     android:background="@drawable/shape_circle"
                     android:src="@drawable/ic_add"
                     android:padding="@dimen/dimen8dp"
-                    android:visibility="gone"/>
+                    android:visibility="gone"
+                    app:tint="@color/colorWhite" />
 
                 <ImageView
                     android:id="@+id/addCollaboratorButtonRemove"
@@ -97,7 +98,8 @@
                     android:background="@drawable/shape_circle_red"
                     android:src="@drawable/ic_remove"
                     android:padding="@dimen/dimen8dp"
-                    android:visibility="gone"/>
+                    app:tint="@color/colorWhite"
+                    android:visibility="gone" />
 
             </LinearLayout>
 
diff --git a/app/src/main/res/layout/list_files.xml b/app/src/main/res/layout/list_files.xml
index 982f1d50..32ad3f2e 100644
--- a/app/src/main/res/layout/list_files.xml
+++ b/app/src/main/res/layout/list_files.xml
@@ -1,73 +1,53 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/fileFrame"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingTop="@dimen/dimen4dp"
-    android:paddingBottom="@dimen/dimen4dp"
+    android:padding="@dimen/dimen12dp"
     android:gravity="center_vertical"
     android:orientation="horizontal">
 
-    <com.google.android.material.card.MaterialCardView
+    <ImageView
+        android:id="@+id/fileTypeIs"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/dimen16dp"
+        android:contentDescription="@string/generalImgContentText"
+        android:src="@drawable/ic_file"/>
+
+    <LinearLayout
+        android:id="@+id/infoSection"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        style="?attr/materialCardViewElevatedStyle"
-        app:cardElevation="@dimen/dimen0dp">
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/fileName"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/defaultFilename"
+            android:textColor="?attr/primaryTextColor"
+            android:textSize="@dimen/dimen16sp"/>
 
         <LinearLayout
+            android:id="@+id/infoRow"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:foreground="?android:attr/selectableItemBackground"
-            android:background="?attr/materialCardBackgroundColor"
-            android:padding="@dimen/dimen12dp"
             android:orientation="horizontal">
 
-            <ImageView
-                android:id="@+id/fileTypeIs"
+            <TextView
+                android:id="@+id/fileInfo"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginEnd="@dimen/dimen16dp"
-                android:contentDescription="@string/generalImgContentText"
-                android:src="@drawable/ic_file"/>
-
-            <LinearLayout
-                android:id="@+id/infoSection"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <TextView
-                    android:id="@+id/fileName"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/defaultFilename"
-                    android:textColor="?attr/primaryTextColor"
-                    android:textSize="@dimen/dimen16sp"/>
-
-                <LinearLayout
-                    android:id="@+id/infoRow"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="horizontal">
-
-                    <TextView
-                        android:id="@+id/fileInfo"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/sizeCopy"
-                        android:textColor="?attr/hintColor"
-                        android:textSize="@dimen/dimen12sp"
-                        android:visibility="gone"
-                        tools:visibility="visible"/>
-
-                </LinearLayout>
-
-            </LinearLayout>
+                android:text="@string/sizeCopy"
+                android:textColor="?attr/hintColor"
+                android:textSize="@dimen/dimen12sp"
+                android:visibility="gone"
+                tools:visibility="visible"/>
 
         </LinearLayout>
 
-    </com.google.android.material.card.MaterialCardView>
+    </LinearLayout>
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/list_repositories.xml b/app/src/main/res/layout/list_repositories.xml
index 85078cc0..f6ef78f1 100644
--- a/app/src/main/res/layout/list_repositories.xml
+++ b/app/src/main/res/layout/list_repositories.xml
@@ -59,12 +59,37 @@
 
                 <TextView
                     android:id="@+id/orgName"
-                    android:layout_width="match_parent"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="@dimen/dimen14sp"
+                    android:layout_weight="1"
                     tools:text="@string/orgName"/>
 
+                <com.google.android.material.card.MaterialCardView
+                    android:id="@+id/repo_is_archived_frame"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:backgroundTint="@android:color/transparent"
+                    android:layout_weight="0"
+                    app:strokeWidth="@dimen/dimen1dp"
+                    app:cardElevation="@dimen/dimen0dp"
+                    app:cardCornerRadius="@dimen/dimen6dp"
+                    android:visibility="gone">
+
+                    <TextView
+                        android:id="@+id/repo_is_archived"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/dimen12sp"
+                        android:paddingStart="@dimen/dimen4dp"
+                        android:paddingEnd="@dimen/dimen4dp"
+                        android:paddingTop="@dimen/dimen2dp"
+                        android:paddingBottom="@dimen/dimen2dp"
+                        android:text="@string/archivedRepository" />
+
+                </com.google.android.material.card.MaterialCardView>
+
             </LinearLayout>
 
             <TextView
diff --git a/app/src/main/res/layout/nav_header.xml b/app/src/main/res/layout/nav_header.xml
index f8306215..73d099b9 100644
--- a/app/src/main/res/layout/nav_header.xml
+++ b/app/src/main/res/layout/nav_header.xml
@@ -4,6 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/navHeaderFrame"
     android:layout_width="match_parent"
+    android:layout_marginTop="@dimen/dimen24dp"
     android:layout_height="@dimen/dimen180dp">
 
     <ImageView
diff --git a/app/src/main/res/menu/files_switch_branches_menu.xml b/app/src/main/res/menu/files_switch_branches_menu.xml
index eca8693f..5452a743 100644
--- a/app/src/main/res/menu/files_switch_branches_menu.xml
+++ b/app/src/main/res/menu/files_switch_branches_menu.xml
@@ -2,13 +2,6 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
-    <item
-        android:id="@+id/switchBranches"
-        android:icon="@drawable/ic_branch"
-        android:orderInCategory="1"
-        android:title="@string/strSwitchBranches"
-        app:showAsAction="ifRoom" />
-
     <item
         android:id="@+id/branchCommits"
         android:icon="@drawable/ic_commit"
diff --git a/app/src/main/res/values-v23/themes.xml b/app/src/main/res/values-v23/themes.xml
index 7ae108e8..a2670ff6 100644
--- a/app/src/main/res/values-v23/themes.xml
+++ b/app/src/main/res/values-v23/themes.xml
@@ -3,7 +3,7 @@
 
     <!-- Light theme -->
     <style name="AppThemeLight" parent="Theme.Material3.Light.NoActionBar">
-        <item name="android:statusBarColor">@color/lightThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:windowLightStatusBar">true</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
@@ -48,7 +48,7 @@
 
     <!-- Retro theme -->
     <style name="AppThemeRetro" parent="Theme.Material3.Light.NoActionBar">
-        <item name="android:statusBarColor">@color/retroThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:windowLightStatusBar">true</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
@@ -93,7 +93,7 @@
 
     <!-- Codeberg dark theme -->
     <style name="AppThemeCodebergDark" parent="Theme.Material3.Dark.NoActionBar">
-        <item name="android:statusBarColor">@color/codebergDarkThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/codebergDarkThemeTextColor</item>
diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml
index 36b90d5e..1304449e 100644
--- a/app/src/main/res/values-v31/themes.xml
+++ b/app/src/main/res/values-v31/themes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <style name="AppThemeDarkDynamicColors" parent="Theme.Material3.Dark.NoActionBar">
-        <item name="android:statusBarColor">@android:color/system_neutral1_900</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@android:color/system_neutral1_800</item>
         <item name="android:textColorSecondary">@android:color/system_accent1_0</item>
@@ -45,7 +45,7 @@
     </style>
 
     <style name="AppThemeLightDynamicColors" parent="Theme.Material3.Light.NoActionBar">
-        <item name="android:statusBarColor">@android:color/system_neutral1_10</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:windowLightStatusBar">true</item>
         <item name="android:typeface">monospace</item>
         <item name="materialCardBackgroundColor">@android:color/system_accent2_50</item>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 902264b3..b998900a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -135,7 +135,6 @@
     <string name="tabTextFiles">Files</string>
     <string name="tabTextMl">Milestones</string>
     <string name="tabTextReleases">Releases</string>
-    <string name="tabTextBranches">Branches</string>
     <string name="tabTextCollaborators">Collaborators</string>
     <string name="tabPullRequests">Pull Requests</string>
     <string name="pullRequest">Pull Request</string>
@@ -480,7 +479,6 @@
     <string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
 
     <string name="strFilter">Filter</string>
-    <string name="strSwitchBranches">Branches</string>
     <string name="strMarkdown">Markdown</string>
 
     <string name="copyIssueUrl">Copy Issue URL</string>
@@ -558,6 +556,8 @@
     <string name="bioText">Bio</string>
     <string name="pin">Pin</string>
     <string name="unpin">Unpin</string>
+    <string name="branch">Branch</string>
+    <string name="branches">Branches</string>
     <!-- generic copy -->
 
     <string name="exploreUsers">Explore users</string>
@@ -606,6 +606,7 @@
     <string name="selectMergeStrategy">Select merge strategy</string>
     <string name="mergeNotAllowed">Not allowed to merge [Reason: Does not have enough approvals]</string>
     <string name="deleteBranch">Delete Branch</string>
+    <string name="switch_branch">Switch Branch</string>
 
     <string name="waitLoadingDownloadFile">Please wait for the file to load to memory</string>
     <string name="downloadFileSaved">File saved successfully</string>
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index c0cf3ca4..38e4dcda 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -3,7 +3,7 @@
 
     <!-- Dark theme - default -->
     <style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar">
-        <item name="android:statusBarColor">@color/colorPrimary</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/colorWhite</item>
@@ -49,7 +49,7 @@
 
     <!-- Light theme -->
     <style name="AppThemeLight" parent="Theme.Material3.Light.NoActionBar">
-        <item name="android:statusBarColor">@color/lightThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/lightThemeTextColor</item>
@@ -94,7 +94,7 @@
 
     <!-- Retro theme -->
     <style name="AppThemeRetro" parent="Theme.Material3.Light.NoActionBar">
-        <item name="android:statusBarColor">@color/retroThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/retroThemeTextColor</item>
@@ -138,7 +138,7 @@
 
     <!-- Pitch black theme -->
     <style name="AppThemePitchBlack" parent="Theme.Material3.Dark.NoActionBar">
-        <item name="android:statusBarColor">@color/pitchBlackThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/pitchBlackThemeTextColor</item>
@@ -184,7 +184,7 @@
 
     <!-- Codeberg dark theme -->
     <style name="AppThemeCodebergDark" parent="Theme.Material3.Dark.NoActionBar">
-        <item name="android:statusBarColor">@color/codebergDarkThemeBackground</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:typeface">monospace</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:textColorSecondary">@color/codebergDarkThemeTextColor</item>
diff --git a/build.gradle b/build.gradle
index 0174c32a..eb73cf37 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:8.7.2'
+        classpath 'com.android.tools.build:gradle:8.7.3'
     }
 }