diff --git a/.gitea/pull_request_template.md b/.gitea/pull_request_template.md
index 23953fb2..5c64a618 100644
--- a/.gitea/pull_request_template.md
+++ b/.gitea/pull_request_template.md
@@ -6,6 +6,6 @@
- [ ] I carefully read the [contribution guidelines](https://codeberg.org/gitnex/GitNex/wiki/Contributing).
-- [ ] I'm following the code standards as defined [here](https://codeberg.org/gitnex/GitNex/wiki/Code-Standards).
+- [ ] I carefully read the AI usage [here](https://codeberg.org/gitnex/GitNex/wiki/Submissions-via-AI).
- [ ] By submitting this pull request, I permit GitNex to license my work under
the [GNU General Public License v3](https://codeberg.org/GitNex/GitNex/src/branch/main/LICENSE).
\ No newline at end of file
diff --git a/README.md b/README.md
index 452bd39a..1de1980f 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,6 @@ Licensed under the GPLv3 License. Please refer to the LICENSE file for the full
[
](https://f-droid.org/en/packages/org.mian.gitnex/)
[
](https://play.google.com/store/apps/details?id=org.mian.gitnex.pro)
[
](https://cloud.swatian.com/s/WS4k3seXnmfQppo)
-[
](https://www.openapk.net/gitnex-for-forgejo-and-gitea/org.mian.gitnex/)
[
](https://apt.izzysoft.de/fdroid/index/apk/org.mian.gitnex)
## Note About Forgejo and Gitea Version
@@ -97,26 +96,13 @@ GitNex supports self-signed certificates. You can read more [here](https://codeb
Thank you to all the open source libraries, contributors, and donors who make GitNex possible.
-#### Open Source Libraries
+#### Libraries
-- [square/retrofit](https://github.com/square/retrofit)
-- [google/gson](https://github.com/google/gson)
-- [square/okhttp](https://github.com/square/okhttp)
-- [bumptech/glide](https://github.com/bumptech/glide)
-- [noties/Markwon](https://github.com/noties/Markwon)
-- [vdurmont/emoji-java](https://github.com/vdurmont/emoji-java)
-- [Baseflow/PhotoView](https://github.com/Baseflow/PhotoView)
-- [apache/commons](https://github.com/apache/commons-io)
-- [ge0rg/MemorizingTrustManager](https://github.com/ge0rg/MemorizingTrustManager)
-- [mikaelhg/urlbuilder](https://github.com/mikaelhg/urlbuilder)
-- [ACRA/acra](https://github.com/ACRA/acra)
-- [chrisvest/stormpot](https://github.com/chrisvest/stormpot)
-- [AmrDeveloper/CodeView](https://github.com/AmrDeveloper/CodeView)
+Check out the [libraries file](https://codeberg.org/gitnex/GitNex/src/branch/main/gradle/libs.versions.toml) for a complete list of libraries used by GitNex.
#### Icon Sets
- [lucide-icons/lucide](https://github.com/lucide-icons/lucide)
-- [primer/octicons](https://github.com/primer/octicons)
- [google/material-design-icons](https://github.com/google/material-design-icons)
- [tabler/tabler-icons](https://github.com/tabler/tabler-icons)
@@ -126,6 +112,5 @@ Follow on social media:
- [@mmarif@mastodon.social](https://mastodon.social/@mmarif)
- [mmarif.bsky.social](https://bsky.app/profile/mmarif.bsky.social)
-- [X profile](https://x.com/mmarif08)
*All trademarks and logos are the properties of their respective owners.*
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index f0abb824..c6a137cf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -47,6 +47,7 @@ android {
release {
minifyEnabled false
+ //noinspection NotShrinkingResources
shrinkResources = false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
@@ -98,18 +99,14 @@ dependencies {
implementation libs.androidx.material
implementation libs.androidx.compose.material3
implementation libs.androidx.compose.material3.window
- implementation libs.androidx.viewpager2
implementation libs.androidx.constraintlayout
- implementation libs.androidx.legacy.support
- implementation libs.androidx.navigation.fragment
- implementation libs.androidx.navigation.ui
implementation libs.androidx.lifecycle.viewmodel
implementation libs.androidx.room.runtime
annotationProcessor libs.androidx.room.compiler
implementation libs.androidx.work
implementation libs.androidx.biometric
implementation libs.androidx.browser
- implementation libs.androidx.flexbox
+ implementation libs.swipe.refresh
// Testing
testImplementation libs.junit
@@ -125,11 +122,7 @@ dependencies {
implementation libs.gson
// Utils
- implementation libs.androidsvg
- implementation libs.android.gif.drawable
- implementation libs.guava
implementation libs.commons.io
- implementation libs.commons.lang3
implementation libs.photoview
implementation libs.urlbuilder
implementation libs.stormpot
diff --git a/app/src/main/java/org/mian/gitnex/activities/AccountSettingsActivity.java b/app/src/main/java/org/mian/gitnex/activities/AccountSettingsActivity.java
index ffcdb488..f988d39d 100644
--- a/app/src/main/java/org/mian/gitnex/activities/AccountSettingsActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/AccountSettingsActivity.java
@@ -56,7 +56,6 @@ public class AccountSettingsActivity extends BaseActivity {
private void setupDockListeners() {
prepareNavButton(binding.btnNavEmails);
prepareNavButton(binding.btnNavSshKeys);
- prepareNavButton(binding.btnBack);
binding.btnBack.setOnClickListener(v -> finish());
diff --git a/app/src/main/java/org/mian/gitnex/activities/AdministrationActivity.java b/app/src/main/java/org/mian/gitnex/activities/AdministrationActivity.java
index 1f809a76..2d086f64 100644
--- a/app/src/main/java/org/mian/gitnex/activities/AdministrationActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/AdministrationActivity.java
@@ -14,7 +14,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.Locale;
-import org.apache.commons.lang3.StringUtils;
import org.gitnex.tea4j.v2.models.Cron;
import org.mian.gitnex.R;
import org.mian.gitnex.adapters.AdminCronTasksAdapter;
@@ -176,8 +175,9 @@ public class AdministrationActivity extends BaseActivity {
lastRunContent.setText(lastRun);
execTimeContent.setText(String.valueOf(task.getExecTimes()));
+ String name = task.getName().replace("_", " ");
new MaterialAlertDialogBuilder(this)
- .setTitle(StringUtils.capitalize(task.getName().replace("_", " ")))
+ .setTitle(name.substring(0, 1).toUpperCase() + name.substring(1))
.setView(view)
.setPositiveButton(R.string.close, null)
.show();
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 b52c7a07..23058276 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateNoteActivity.java
@@ -36,7 +36,7 @@ public class CreateNoteActivity extends BaseActivity {
binding = ActivityCreateNoteBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
- UIHelper.applyEdgeToEdge(this, binding.dockedToolbar, null, null, null);
+ UIHelper.applyEdgeToEdge(this, binding.dockedToolbar, binding.scrollView, null, null);
notesApi = BaseApi.getInstance(ctx, NotesApi.class);
action =
diff --git a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
index 1721c532..200b70e8 100644
--- a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
@@ -11,7 +11,6 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.lang3.StringUtils;
import org.gitnex.tea4j.v2.models.ContentsResponse;
import org.gitnex.tea4j.v2.models.Organization;
import org.gitnex.tea4j.v2.models.PullRequest;
@@ -232,7 +231,7 @@ public class DeepLinksActivity extends BaseActivity {
}
private void handleIssues(String owner, String repo, String last) {
- if (last != null && !last.contains("issues") && StringUtils.isNumeric(last)) {
+ if (last != null && !last.contains("issues") && last.matches("\\d+")) {
issueIntent.putExtra("issueNumber", last);
issueIntent.putExtra("openedFromLink", "true");
@@ -261,7 +260,7 @@ public class DeepLinksActivity extends BaseActivity {
String repo = segments.get(1);
String last = segments.get(segments.size() - 1);
- if (last != null && !last.contains("pulls") && StringUtils.isNumeric(last)) {
+ if (last != null && !last.contains("pulls") && last.matches("\\d+")) {
delayedTask(
() -> {
String[] urlSplitted = data.toString().split("#");
diff --git a/app/src/main/java/org/mian/gitnex/activities/ExploreActivity.java b/app/src/main/java/org/mian/gitnex/activities/ExploreActivity.java
index 158ea0fa..d0d5ec4e 100644
--- a/app/src/main/java/org/mian/gitnex/activities/ExploreActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/ExploreActivity.java
@@ -87,7 +87,6 @@ public class ExploreActivity extends BaseActivity {
prepareNavButton(binding.btnNavIssues);
prepareNavButton(binding.btnNavOrganizations);
prepareNavButton(binding.btnNavUsers);
- prepareNavButton(binding.btnBack);
binding.btnBack.setOnClickListener(v -> finish());
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 4c1a7713..ae4494fa 100644
--- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
@@ -80,7 +80,6 @@ import org.mian.gitnex.viewmodels.IssueActionsViewModel;
import org.mian.gitnex.viewmodels.IssueDetailViewModel;
import org.mian.gitnex.viewmodels.ReactionsViewModel;
import org.mian.gitnex.viewmodels.TimelineViewModel;
-import org.mian.gitnex.views.reactions.EmojiPickerPopup;
import org.mian.gitnex.views.reactions.ReactionUsersBottomSheet;
import org.mian.gitnex.views.reactions.ReactionsManager;
import retrofit2.Call;
@@ -188,6 +187,7 @@ public class IssueDetailActivity extends BaseActivity
setupTimeline();
observeTimelineViewModel();
+ observeCombinedLoading();
}
private void hideAllContent() {
@@ -588,7 +588,7 @@ public class IssueDetailActivity extends BaseActivity
binding.commentReply.etQuickComment.setText("");
binding.commentReply.etQuickComment.setHint(R.string.commentButtonText);
binding.commentReply.btnQuickSend.setIconResource(R.drawable.ic_send);
- binding.commentReply.btnExpandEditor.setVisibility(View.VISIBLE);
+ // binding.commentReply.btnExpandEditor.setVisibility(View.VISIBLE);
editingCommentId = -1;
isEditing = false;
}
@@ -622,16 +622,13 @@ public class IssueDetailActivity extends BaseActivity
}
}
- @Override
- public void onCommentAddReactionClick(
- TimelineItem comment, View anchor) {
- showCommentEmojiPicker(comment, anchor);
- }
-
@Override
public void onCommentReactionLongClick(
- TimelineItem comment, String content, List users) {
- ReactionUsersBottomSheet.newInstance(content, users)
+ TimelineItem comment,
+ String content,
+ String emoji,
+ List users) {
+ ReactionUsersBottomSheet.newInstance(emoji, users)
.show(getSupportFragmentManager(), "REACTION_USERS");
}
@@ -769,8 +766,6 @@ public class IssueDetailActivity extends BaseActivity
}
});
- timelineViewModel.getIsLoading().observe(this, loading -> {});
-
timelineViewModel
.getIsRefreshing()
.observe(
@@ -833,6 +828,32 @@ public class IssueDetailActivity extends BaseActivity
});
}
+ private void observeCombinedLoading() {
+ viewModel
+ .getIsLoading()
+ .observe(
+ this,
+ loading -> {
+ if (loading != null && loading) {
+ binding.expressiveLoader.setVisibility(View.VISIBLE);
+ }
+ });
+
+ timelineViewModel
+ .getIsLoading()
+ .observe(
+ this,
+ isTimelineLoading -> {
+ if (isTimelineLoading != null && !isTimelineLoading) {
+ Boolean isIssueLoading = viewModel.getIsLoading().getValue();
+ if (isIssueLoading == null || !isIssueLoading) {
+ binding.expressiveLoader.setVisibility(View.GONE);
+ binding.pullToRefresh.setRefreshing(false);
+ }
+ }
+ });
+ }
+
private void fetchTimeline() {
if (owner != null && repo != null && issueNumber > 0) {
timelineViewModel.fetchTimeline(this, 1, resultLimit, true);
@@ -851,48 +872,6 @@ public class IssueDetailActivity extends BaseActivity
binding.timelineSection.getRoot().setVisibility(hasItems ? View.VISIBLE : View.GONE);
}
- private void showCommentEmojiPicker(TimelineItem comment, View anchor) {
- List allowed = reactionsViewModel.getAllowedReactions().getValue();
-
- if (allowed != null && !allowed.isEmpty()) {
- EmojiPickerPopup popup = new EmojiPickerPopup(this, allowed);
- popup.setOnEmojiSelectedListener(
- content -> {
- timelineViewModel.addCommentReaction(
- IssueDetailActivity.this, comment.getId(), content);
- });
- popup.show(anchor);
- } else {
- reactionsViewModel.fetchReactionSettings(this);
- reactionsViewModel
- .getAllowedReactions()
- .observe(
- this,
- new androidx.lifecycle.Observer<>() {
- @Override
- public void onChanged(List allowedList) {
- if (allowedList != null && !allowedList.isEmpty()) {
- reactionsViewModel
- .getAllowedReactions()
- .removeObserver(this);
-
- EmojiPickerPopup popup =
- new EmojiPickerPopup(
- IssueDetailActivity.this, allowedList);
- popup.setOnEmojiSelectedListener(
- content -> {
- timelineViewModel.addCommentReaction(
- IssueDetailActivity.this,
- comment.getId(),
- content);
- });
- popup.show(anchor);
- }
- }
- });
- }
- }
-
private void showCommentMenu(TimelineItem comment) {
this.currentCommentForMenu = comment;
String currentUser = getAccount().getAccount().getUserName();
@@ -962,19 +941,6 @@ public class IssueDetailActivity extends BaseActivity
}
private void observeViewModel() {
- viewModel
- .getIsLoading()
- .observe(
- this,
- loading -> {
- if (loading) {
- binding.expressiveLoader.setVisibility(View.VISIBLE);
- } else {
- binding.expressiveLoader.setVisibility(View.GONE);
- binding.pullToRefresh.setRefreshing(false);
- }
- });
-
viewModel
.getIssueData()
.observe(
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 b71d4824..27ed1392 100644
--- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
import androidx.core.text.HtmlCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.google.android.material.badge.BadgeDrawable;
@@ -62,12 +63,12 @@ public class MainActivity extends BaseActivity
private TinyDB tinyDB;
public static boolean reloadRepos;
public static boolean closeActivity;
- private final Fragment homeFrag = new HomeDashboardFragment();
- private final Fragment repoFrag = new RepositoriesFragment();
- private final Fragment notifyFrag = new NotificationsFragment();
- private Fragment activeFragment = homeFrag;
+ private Fragment homeFrag;
+ private Fragment repoFrag;
+ private Fragment notifyFrag;
+ private Fragment activeFragment;
private String currentActiveTab = TAB_HOME;
- private final FragmentManager fm = getSupportFragmentManager();
+ private FragmentManager fm;
private View detachedDivider;
private View detachedAddBtn;
private View detachedSearchBtn;
@@ -108,6 +109,8 @@ public class MainActivity extends BaseActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ fm = getSupportFragmentManager();
+
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
tinyDB = TinyDB.getInstance(this);
@@ -119,6 +122,10 @@ public class MainActivity extends BaseActivity
detachedSearchBtn = binding.btnDockSearch;
detachedSortBtn = binding.btnDockSort;
+ homeFrag = fm.findFragmentByTag(TAB_HOME);
+ repoFrag = fm.findFragmentByTag(TAB_REPOS);
+ notifyFrag = fm.findFragmentByTag(TAB_NOTIFICATIONS);
+
if (savedInstanceState != null) {
currentActiveTab = savedInstanceState.getString(STATE_ACTIVE_TAB, TAB_HOME);
}
@@ -153,14 +160,28 @@ public class MainActivity extends BaseActivity
}
private void setupFragments() {
- fm.beginTransaction()
- .add(R.id.nav_host_fragment, notifyFrag, TAB_NOTIFICATIONS)
- .hide(notifyFrag)
- .add(R.id.nav_host_fragment, repoFrag, TAB_REPOS)
- .hide(repoFrag)
- .add(R.id.nav_host_fragment, homeFrag, TAB_HOME)
- .hide(homeFrag)
- .commitNow();
+ FragmentTransaction ft = fm.beginTransaction();
+
+ if (homeFrag == null) {
+ homeFrag = new HomeDashboardFragment();
+ ft.add(R.id.nav_host_fragment, homeFrag, TAB_HOME);
+ }
+ if (repoFrag == null) {
+ repoFrag = new RepositoriesFragment();
+ ft.add(R.id.nav_host_fragment, repoFrag, TAB_REPOS);
+ ft.hide(repoFrag);
+ }
+ if (notifyFrag == null) {
+ notifyFrag = new NotificationsFragment();
+ ft.add(R.id.nav_host_fragment, notifyFrag, TAB_NOTIFICATIONS);
+ ft.hide(notifyFrag);
+ }
+
+ ft.commitNow();
+
+ if (activeFragment == null) {
+ activeFragment = homeFrag;
+ }
}
@Override
diff --git a/app/src/main/java/org/mian/gitnex/activities/PullRequestDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/PullRequestDetailActivity.java
index 34833b51..4bb22ffe 100644
--- a/app/src/main/java/org/mian/gitnex/activities/PullRequestDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/PullRequestDetailActivity.java
@@ -85,7 +85,6 @@ import org.mian.gitnex.viewmodels.IssueActionsViewModel;
import org.mian.gitnex.viewmodels.PullRequestDetailViewModel;
import org.mian.gitnex.viewmodels.ReactionsViewModel;
import org.mian.gitnex.viewmodels.TimelineViewModel;
-import org.mian.gitnex.views.reactions.EmojiPickerPopup;
import org.mian.gitnex.views.reactions.ReactionUsersBottomSheet;
import org.mian.gitnex.views.reactions.ReactionsManager;
import retrofit2.Call;
@@ -193,6 +192,7 @@ public class PullRequestDetailActivity extends BaseActivity
setupTimeline();
observeTimelineViewModel();
+ observeCombinedLoading();
}
private boolean isDraftOrWip(PullRequest pr) {
@@ -529,7 +529,7 @@ public class PullRequestDetailActivity extends BaseActivity
binding.commentReply.etQuickComment.setText("");
binding.commentReply.etQuickComment.setHint(R.string.commentButtonText);
binding.commentReply.btnQuickSend.setIconResource(R.drawable.ic_send);
- binding.commentReply.btnExpandEditor.setVisibility(View.VISIBLE);
+ // binding.commentReply.btnExpandEditor.setVisibility(View.VISIBLE);
editingCommentId = -1;
isEditing = false;
}
@@ -567,16 +567,13 @@ public class PullRequestDetailActivity extends BaseActivity
}
}
- @Override
- public void onCommentAddReactionClick(
- TimelineItem comment, View anchor) {
- showCommentEmojiPicker(comment, anchor);
- }
-
@Override
public void onCommentReactionLongClick(
- TimelineItem comment, String content, List users) {
- ReactionUsersBottomSheet.newInstance(content, users)
+ TimelineItem comment,
+ String content,
+ String emoji,
+ List users) {
+ ReactionUsersBottomSheet.newInstance(emoji, users)
.show(getSupportFragmentManager(), "REACTION_USERS");
}
@@ -716,8 +713,6 @@ public class PullRequestDetailActivity extends BaseActivity
}
});
- timelineViewModel.getIsLoading().observe(this, loading -> {});
-
timelineViewModel
.getIsRefreshing()
.observe(
@@ -780,6 +775,32 @@ public class PullRequestDetailActivity extends BaseActivity
});
}
+ private void observeCombinedLoading() {
+ viewModel
+ .getIsLoading()
+ .observe(
+ this,
+ loading -> {
+ if (loading != null && loading) {
+ binding.expressiveLoader.setVisibility(View.VISIBLE);
+ }
+ });
+
+ timelineViewModel
+ .getIsLoading()
+ .observe(
+ this,
+ isTimelineLoading -> {
+ if (isTimelineLoading != null && !isTimelineLoading) {
+ Boolean isIssueLoading = viewModel.getIsLoading().getValue();
+ if (isIssueLoading == null || !isIssueLoading) {
+ binding.expressiveLoader.setVisibility(View.GONE);
+ binding.pullToRefresh.setRefreshing(false);
+ }
+ }
+ });
+ }
+
private void fetchTimeline() {
if (owner != null && repo != null && prNumber > 0) {
timelineViewModel.fetchTimeline(this, 1, resultLimit, true);
@@ -798,49 +819,6 @@ public class PullRequestDetailActivity extends BaseActivity
binding.timelineSection.getRoot().setVisibility(hasItems ? View.VISIBLE : View.GONE);
}
- private void showCommentEmojiPicker(TimelineItem comment, View anchor) {
- List allowed = reactionsViewModel.getAllowedReactions().getValue();
-
- if (allowed != null && !allowed.isEmpty()) {
- EmojiPickerPopup popup = new EmojiPickerPopup(this, allowed);
- popup.setOnEmojiSelectedListener(
- content -> {
- timelineViewModel.addCommentReaction(
- PullRequestDetailActivity.this, comment.getId(), content);
- });
- popup.show(anchor);
- } else {
- reactionsViewModel.fetchReactionSettings(this);
- reactionsViewModel
- .getAllowedReactions()
- .observe(
- this,
- new androidx.lifecycle.Observer<>() {
- @Override
- public void onChanged(List allowedList) {
- if (allowedList != null && !allowedList.isEmpty()) {
- reactionsViewModel
- .getAllowedReactions()
- .removeObserver(this);
-
- EmojiPickerPopup popup =
- new EmojiPickerPopup(
- PullRequestDetailActivity.this,
- allowedList);
- popup.setOnEmojiSelectedListener(
- content -> {
- timelineViewModel.addCommentReaction(
- PullRequestDetailActivity.this,
- comment.getId(),
- content);
- });
- popup.show(anchor);
- }
- }
- });
- }
- }
-
private void observeIssueActions() {
issueActionsViewModel
.getActionMessage()
@@ -1034,19 +1012,6 @@ public class PullRequestDetailActivity extends BaseActivity
}
private void observeViewModel() {
- viewModel
- .getIsLoading()
- .observe(
- this,
- loading -> {
- if (loading) {
- binding.expressiveLoader.setVisibility(View.VISIBLE);
- } else {
- binding.expressiveLoader.setVisibility(View.GONE);
- binding.pullToRefresh.setRefreshing(false);
- }
- });
-
viewModel
.getPrData()
.observe(
diff --git a/app/src/main/java/org/mian/gitnex/activities/RepositoryActionsActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepositoryActionsActivity.java
index 35cf1f1a..58a85fbe 100644
--- a/app/src/main/java/org/mian/gitnex/activities/RepositoryActionsActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/RepositoryActionsActivity.java
@@ -136,7 +136,6 @@ public class RepositoryActionsActivity extends BaseActivity {
prepareNavButton(binding.btnNavRunners);
prepareNavButton(binding.btnNavWorkflows);
prepareNavButton(binding.btnNavVariables);
- prepareNavButton(binding.btnBack);
binding.btnBack.setOnClickListener(v -> finish());
diff --git a/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java
index d700cd36..66e74ce8 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java
@@ -6,7 +6,6 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
-import org.apache.commons.lang3.StringUtils;
import org.gitnex.tea4j.v2.models.Cron;
import org.mian.gitnex.databinding.ListAdminCronTasksBinding;
@@ -44,12 +43,14 @@ public class AdminCronTasksAdapter extends RecyclerView.Adapter listener.onRunTask(task.getName()));
holder.binding.getRoot().setOnClickListener(v -> listener.onShowDetails(task));
diff --git a/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
index 78fee034..23e76e10 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
@@ -2,11 +2,17 @@ package org.mian.gitnex.adapters;
import android.annotation.SuppressLint;
import android.content.Context;
+import android.graphics.Color;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
+import android.text.method.LinkMovementMethod;
+import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
+import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.recyclerview.widget.RecyclerView;
@@ -25,18 +31,20 @@ import org.mian.gitnex.helpers.Toasty;
/**
* @author mmarif
*/
-public class FilesAdapter extends RecyclerView.Adapter
+public class FilesAdapter extends RecyclerView.Adapter
implements Filterable {
+ private static final int TYPE_BREADCRUMB = 0;
+ private static final int TYPE_FILE = 1;
+
private final List originalFiles = new ArrayList<>();
private final List alteredFiles = new ArrayList<>();
private final Context context;
private final FilesAdapterListener filesListener;
- public FilesAdapter(Context ctx, FilesAdapterListener filesListener) {
- this.context = ctx;
- this.filesListener = filesListener;
- }
+ private String repoName;
+ private String[] pathSegments = new String[0];
+ private PathNavigationListener pathNavigationListener;
public interface FilesAdapterListener {
void onClickFile(RepoGetContentsList file);
@@ -46,6 +54,29 @@ public class FilesAdapter extends RecyclerView.Adapter 0 && repoName != null;
+ }
+
@SuppressLint("NotifyDataSetChanged")
public void setFiles(List newList) {
this.originalFiles.clear();
@@ -55,22 +86,43 @@ public class FilesAdapter extends RecyclerView.Adapter 0) sb.append("/");
+ sb.append(pathSegments[i]);
+ }
+ return sb.toString();
+ }
+ }
+
+ public class FilesViewHolder extends RecyclerView.ViewHolder {
private final ListFilesBinding binding;
private FilesViewHolder(ListFilesBinding binding) {
@@ -166,7 +284,6 @@ public class FilesAdapter extends RecyclerView.Adapter
Toasty.show(
diff --git a/app/src/main/java/org/mian/gitnex/adapters/NotesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/NotesAdapter.java
index bc7c266f..f34ac2b6 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/NotesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/NotesAdapter.java
@@ -15,7 +15,6 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
-import org.apache.commons.lang3.StringUtils;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.CreateNoteActivity;
import org.mian.gitnex.database.api.BaseApi;
@@ -96,11 +95,14 @@ public class NotesAdapter extends RecyclerView.Adapter 140
+ ? content.substring(0, 140)
+ : content)),
binding.noteContent);
long timestamp = (note.getModified() != null) ? note.getModified() : note.getDatetime();
diff --git a/app/src/main/java/org/mian/gitnex/adapters/TimelineAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/TimelineAdapter.java
index f1b3003d..3f97e7ce 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/TimelineAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/TimelineAdapter.java
@@ -50,8 +50,6 @@ public class TimelineAdapter extends RecyclerView.Adapter items = new ArrayList<>();
@@ -67,9 +65,8 @@ public class TimelineAdapter extends RecyclerView.Adapter users);
+ void onCommentReactionLongClick(
+ TimelineItem comment, String content, String displayEmoji, List users);
void onAttachmentClick(Attachment attachment);
@@ -85,8 +82,6 @@ public class TimelineAdapter extends RecyclerView.Adapter users) {
if (clickListener != null) {
clickListener.onCommentReactionLongClick(
- comment, content, users);
+ comment,
+ content,
+ reactionsManager.getDisplayEmoji(content),
+ users);
}
}
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateActionVariable.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateActionVariable.java
index e9a05a2b..cd576945 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateActionVariable.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateActionVariable.java
@@ -3,6 +3,7 @@ package org.mian.gitnex.fragments;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@@ -61,6 +62,30 @@ public class BottomSheetCreateActionVariable extends BottomSheetDialogFragment {
viewModel.clearVariableCreated();
viewModel.clearCreateVariableError();
+ binding.variableValue.setOnTouchListener(
+ (v, event) -> {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ } else if (event.getAction() == MotionEvent.ACTION_UP
+ || event.getAction() == MotionEvent.ACTION_CANCEL) {
+ v.getParent().requestDisallowInterceptTouchEvent(false);
+ v.performClick();
+ }
+ return false;
+ });
+
+ binding.variableDescription.setOnTouchListener(
+ (v, event) -> {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ } else if (event.getAction() == MotionEvent.ACTION_UP
+ || event.getAction() == MotionEvent.ACTION_CANCEL) {
+ v.getParent().requestDisallowInterceptTouchEvent(false);
+ v.performClick();
+ }
+ return false;
+ });
+
setupListeners();
observeViewModel();
}
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateRepo.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateRepo.java
index 173d3b88..da8f055f 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateRepo.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetCreateRepo.java
@@ -3,6 +3,7 @@ package org.mian.gitnex.fragments;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
@@ -74,6 +75,19 @@ public class BottomSheetCreateRepo extends BottomSheetDialogFragment {
private void setupListeners() {
binding.btnClose.setOnClickListener(v -> dismiss());
+
+ binding.newRepoDescription.setOnTouchListener(
+ (v, event) -> {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ } else if (event.getAction() == MotionEvent.ACTION_UP
+ || event.getAction() == MotionEvent.ACTION_CANCEL) {
+ v.getParent().requestDisallowInterceptTouchEvent(false);
+ v.performClick();
+ }
+ return false;
+ });
+
binding.btnCreate.setOnClickListener(
v -> {
String name =
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAboutFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAboutFragment.java
index cfd5a3c6..6b9067d0 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAboutFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAboutFragment.java
@@ -22,12 +22,6 @@ public class BottomSheetSettingsAboutFragment extends BottomSheetDialogFragment
private BottomsheetSettingsAboutBinding binding;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAppearanceFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAppearanceFragment.java
index 3e2fd8b3..c9f31fb4 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAppearanceFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsAppearanceFragment.java
@@ -35,12 +35,6 @@ public class BottomSheetSettingsAppearanceFragment extends BottomSheetDialogFrag
private static int langSelectedChoice;
private LinkedHashMap lang;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsBackupRestoreFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsBackupRestoreFragment.java
index 6ba590ba..865e9c0f 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsBackupRestoreFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsBackupRestoreFragment.java
@@ -42,12 +42,6 @@ public class BottomSheetSettingsBackupRestoreFragment extends BottomSheetDialogF
private final String DATABASE_NAME = "gitnex";
private String BACKUP_DATABASE_NAME;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsCodeEditorFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsCodeEditorFragment.java
index d3cdf776..825dcb55 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsCodeEditorFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsCodeEditorFragment.java
@@ -27,12 +27,6 @@ public class BottomSheetSettingsCodeEditorFragment extends BottomSheetDialogFrag
private static int indentationTabsSelectedChoice;
private static String[] indentationList;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsGeneralFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsGeneralFragment.java
index de03e855..58d44002 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsGeneralFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsGeneralFragment.java
@@ -25,12 +25,6 @@ public class BottomSheetSettingsGeneralFragment extends BottomSheetDialogFragmen
private static int homeScreenSelectedChoice;
private static int defaultLinkHandlerScreenSelectedChoice;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsNotificationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsNotificationsFragment.java
index 3b6ab3e6..a1e7421b 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsNotificationsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsNotificationsFragment.java
@@ -25,12 +25,6 @@ public class BottomSheetSettingsNotificationsFragment extends BottomSheetDialogF
private BottomsheetSettingsNotificationsBinding binding;
private static int pollingDelayListSelectedChoice;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsSecurityFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsSecurityFragment.java
index 4905e5f9..98215a5e 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsSecurityFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSettingsSecurityFragment.java
@@ -37,12 +37,6 @@ public class BottomSheetSettingsSecurityFragment extends BottomSheetDialogFragme
private static int cacheSizeImagesSelectedChoice;
private static int[] requestTimeoutDataList;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStyle(STYLE_NORMAL, R.style.Custom_BottomSheet);
- }
-
@Nullable @Override
public View onCreateView(
@NonNull LayoutInflater inflater,
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 c96c4181..7c39ec13 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
@@ -288,6 +288,25 @@ public class FilesFragment extends Fragment
getViewLifecycleOwner(),
list -> {
binding.pullToRefresh.setRefreshing(false);
+ filesAdapter.setPathData(
+ repository.getName(),
+ path.segments(),
+ new FilesAdapter.PathNavigationListener() {
+ @Override
+ public void onNavigateToPath(String clickedPath) {
+ path.clear();
+ for (String s : clickedPath.split("/")) {
+ path.addWithoutEncoding(s);
+ }
+ refresh();
+ }
+
+ @Override
+ public void onNavigateToRoot() {
+ path.clear();
+ refresh();
+ }
+ });
filesAdapter.setFiles(list);
boolean isEmpty = list.isEmpty();
diff --git a/app/src/main/java/org/mian/gitnex/fragments/LabelsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/LabelsFragment.java
index 50927cf5..317c1eaf 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/LabelsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/LabelsFragment.java
@@ -98,7 +98,7 @@ public class LabelsFragment extends Fragment implements RepoDetailActivity.RepoH
items.add(
new RepositoryMenuItemModel(
"LABEL_ADD_NEW",
- R.string.addButton,
+ R.string.pageTitleCreateLabel,
R.drawable.ic_add,
R.attr.colorPrimaryContainer,
R.attr.colorOnPrimaryContainer));
diff --git a/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java
index 871cd032..716d1493 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java
@@ -104,7 +104,7 @@ public class MilestonesFragment extends Fragment implements RepoDetailActivity.R
items.add(
new RepositoryMenuItemModel(
"MILESTONE_ADD_NEW",
- R.string.addButton,
+ R.string.pageTitleCreateMilestone,
R.drawable.ic_add,
R.attr.colorPrimaryContainer,
R.attr.colorOnPrimaryContainer));
diff --git a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
index 950f78d1..15ac0db6 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.gitnex.tea4j.v2.models.NotificationThread;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.IssueDetailActivity;
+import org.mian.gitnex.activities.PullRequestDetailActivity;
import org.mian.gitnex.activities.RepoDetailActivity;
import org.mian.gitnex.adapters.NotificationsAdapter;
import org.mian.gitnex.databinding.FragmentNotificationsBinding;
@@ -28,7 +29,6 @@ import org.mian.gitnex.helpers.Constants;
import org.mian.gitnex.helpers.EndlessRecyclerViewScrollListener;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.helpers.UIHelper;
-import org.mian.gitnex.helpers.contexts.IssueContext;
import org.mian.gitnex.helpers.contexts.RepositoryContext;
import org.mian.gitnex.viewmodels.NotificationsViewModel;
@@ -281,11 +281,25 @@ public class NotificationsFragment extends Fragment
thread.getRepository().getName(),
context);
repo.saveToDB(context);
+
String url = thread.getSubject().getUrl();
int id = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1));
- Intent intent =
- new IssueContext(repo, id, thread.getSubject().getType())
- .getIntent(context, IssueDetailActivity.class);
+
+ String issueType = thread.getSubject().getType();
+
+ Intent intent;
+ if ("Pull".equalsIgnoreCase(issueType)) {
+ intent = new Intent(context, PullRequestDetailActivity.class);
+ intent.putExtra("owner", thread.getRepository().getOwner().getLogin());
+ intent.putExtra("repo", thread.getRepository().getName());
+ intent.putExtra("prNumber", id);
+ } else {
+ intent = new Intent(context, IssueDetailActivity.class);
+ intent.putExtra("owner", thread.getRepository().getOwner().getLogin());
+ intent.putExtra("repo", thread.getRepository().getName());
+ intent.putExtra("issueNumber", id);
+ intent.putExtra("fetchIssueObject", true);
+ }
intent.putExtra("openedFromLink", "true");
startActivity(intent);
}
diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamsFragment.java
index 616bbc51..82563a1c 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamsFragment.java
@@ -4,6 +4,7 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@@ -235,6 +236,18 @@ public class OrganizationTeamsFragment extends Fragment
AppUtil.applySheetStyle(bottomSheetDialog, false);
+ sheetBinding.teamDesc.setOnTouchListener(
+ (v, event) -> {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ v.getParent().requestDisallowInterceptTouchEvent(true);
+ } else if (event.getAction() == MotionEvent.ACTION_UP
+ || event.getAction() == MotionEvent.ACTION_CANCEL) {
+ v.getParent().requestDisallowInterceptTouchEvent(false);
+ v.performClick();
+ }
+ return false;
+ });
+
sheetBinding.btnCreate.setOnClickListener(
v -> {
if (validateInput(sheetBinding)) {
diff --git a/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java b/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java
index 915a303d..ae66186b 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java
@@ -92,7 +92,7 @@ public class WikiFragment extends Fragment implements RepoDetailActivity.RepoHub
items.add(
new RepositoryMenuItemModel(
"WIKI_ADD_NEW",
- R.string.addButton,
+ R.string.createWikiPage,
R.drawable.ic_add,
R.attr.colorPrimaryContainer,
R.attr.colorOnPrimaryContainer));
diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/TimelineViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/TimelineViewModel.java
index 5dfd493f..a8c979c4 100644
--- a/app/src/main/java/org/mian/gitnex/viewmodels/TimelineViewModel.java
+++ b/app/src/main/java/org/mian/gitnex/viewmodels/TimelineViewModel.java
@@ -186,8 +186,6 @@ public class TimelineViewModel extends ViewModel {
public void onResponse(
@NonNull Call> call,
@NonNull Response> response) {
- isLoading.setValue(false);
- isRefreshing.setValue(false);
if (response.isSuccessful() && response.body() != null) {
String totalHeader = response.headers().get("x-total-count");
@@ -205,6 +203,8 @@ public class TimelineViewModel extends ViewModel {
timeline.setValue(new ArrayList<>());
}
isLastPage = true;
+ isLoading.setValue(false);
+ isRefreshing.setValue(false);
}
}
@@ -276,6 +276,8 @@ public class TimelineViewModel extends ViewModel {
timeline.setValue(currentList);
isLastPage =
items.size() < 20 || (totalCount != -1 && currentList.size() >= totalCount);
+ isLoading.setValue(false);
+ isRefreshing.setValue(false);
return;
}
diff --git a/app/src/main/res/layout/activity_account_settings.xml b/app/src/main/res/layout/activity_account_settings.xml
index 44f6e762..11d44769 100644
--- a/app/src/main/res/layout/activity_account_settings.xml
+++ b/app/src/main/res/layout/activity_account_settings.xml
@@ -21,7 +21,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
diff --git a/app/src/main/res/layout/activity_activities.xml b/app/src/main/res/layout/activity_activities.xml
index c43b5f36..3dfcf67a 100644
--- a/app/src/main/res/layout/activity_activities.xml
+++ b/app/src/main/res/layout/activity_activities.xml
@@ -51,7 +51,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
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 f4bb69e9..2fddd654 100644
--- a/app/src/main/res/layout/activity_admin_get_users.xml
+++ b/app/src/main/res/layout/activity_admin_get_users.xml
@@ -51,7 +51,7 @@
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="@dimen/dimen28dp"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
@@ -118,7 +95,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
diff --git a/app/src/main/res/layout/activity_app_settings.xml b/app/src/main/res/layout/activity_app_settings.xml
index a2742f05..9864c98b 100644
--- a/app/src/main/res/layout/activity_app_settings.xml
+++ b/app/src/main/res/layout/activity_app_settings.xml
@@ -49,7 +49,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
diff --git a/app/src/main/res/layout/activity_commits.xml b/app/src/main/res/layout/activity_commits.xml
index 09db9061..0b030263 100644
--- a/app/src/main/res/layout/activity_commits.xml
+++ b/app/src/main/res/layout/activity_commits.xml
@@ -2,7 +2,6 @@
@@ -50,7 +49,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
@@ -121,7 +105,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+ app:icon="@drawable/ic_markdown" />
diff --git a/app/src/main/res/layout/activity_deeplinks.xml b/app/src/main/res/layout/activity_deeplinks.xml
index 98301b5a..62e7ac2e 100644
--- a/app/src/main/res/layout/activity_deeplinks.xml
+++ b/app/src/main/res/layout/activity_deeplinks.xml
@@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:paddingTop="@dimen/dimen56dp"
android:paddingBottom="@dimen/dimen16dp"
- android:background="?attr/materialCardBackgroundColor">
+ android:background="?attr/primaryBackgroundColor">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
diff --git a/app/src/main/res/layout/activity_explore.xml b/app/src/main/res/layout/activity_explore.xml
index ba95a0c0..c5ed50fc 100644
--- a/app/src/main/res/layout/activity_explore.xml
+++ b/app/src/main/res/layout/activity_explore.xml
@@ -21,7 +21,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml
index f2553f8d..c2c64aa0 100644
--- a/app/src/main/res/layout/activity_issue_detail.xml
+++ b/app/src/main/res/layout/activity_issue_detail.xml
@@ -14,7 +14,6 @@
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?attr/primaryBackgroundColor"
android:clipToPadding="false">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_comment" />
+ app:icon="@drawable/ic_dotted_menu" />
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 92689e7b..e3f18589 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -9,11 +9,8 @@
+ android:layout_height="match_parent" />
+ android:orientation="horizontal">
+ android:minWidth="0dp"
+ android:layout_marginStart="@dimen/dimen4dp" />
diff --git a/app/src/main/res/layout/activity_most_visited_repos.xml b/app/src/main/res/layout/activity_most_visited_repos.xml
index 6bf53f8e..c39be1ab 100644
--- a/app/src/main/res/layout/activity_most_visited_repos.xml
+++ b/app/src/main/res/layout/activity_most_visited_repos.xml
@@ -49,7 +49,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
@@ -114,7 +93,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
@@ -115,7 +94,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
@@ -129,7 +101,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ android:backgroundTint="?attr/colorSurfaceContainerHighest">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_repo" />
@@ -111,38 +101,26 @@
+ android:visibility="gone" />
+ android:visibility="gone" />
+ style="@style/Widget.Material3.Button.IconButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:icon="@drawable/ic_dotted_menu" />
diff --git a/app/src/main/res/layout/activity_org_team_details.xml b/app/src/main/res/layout/activity_org_team_details.xml
index 0bd60195..8de4d87d 100644
--- a/app/src/main/res/layout/activity_org_team_details.xml
+++ b/app/src/main/res/layout/activity_org_team_details.xml
@@ -22,7 +22,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
+ android:orientation="horizontal">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_repo" />
+ app:icon="@drawable/ic_person" />
+ app:icon="@drawable/ic_lock" />
diff --git a/app/src/main/res/layout/activity_organizations.xml b/app/src/main/res/layout/activity_organizations.xml
index 25163caf..2b514e38 100644
--- a/app/src/main/res/layout/activity_organizations.xml
+++ b/app/src/main/res/layout/activity_organizations.xml
@@ -49,7 +49,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
@@ -114,7 +93,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ android:backgroundTint="?attr/colorSurfaceContainerHighest">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_repo" />
@@ -119,14 +108,10 @@
+ style="@style/Widget.Material3.Button.IconButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:icon="@drawable/ic_search" />
diff --git a/app/src/main/res/layout/activity_pull_request_details.xml b/app/src/main/res/layout/activity_pull_request_details.xml
index c5bf98fb..c7f21f15 100644
--- a/app/src/main/res/layout/activity_pull_request_details.xml
+++ b/app/src/main/res/layout/activity_pull_request_details.xml
@@ -5,6 +5,15 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor">
+
+
-
-
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_comment" />
+ app:icon="@drawable/ic_dotted_menu" />
diff --git a/app/src/main/res/layout/activity_pull_request_diff.xml b/app/src/main/res/layout/activity_pull_request_diff.xml
index a47f5182..4b1d7ffb 100644
--- a/app/src/main/res/layout/activity_pull_request_diff.xml
+++ b/app/src/main/res/layout/activity_pull_request_diff.xml
@@ -21,7 +21,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
@@ -75,10 +65,8 @@
android:layout_height="wrap_content"
android:text="@string/commits"
android:textColor="?attr/primaryTextColor"
- app:iconTint="?attr/primaryTextColor"
app:icon="@drawable/ic_commit"
app:backgroundTint="@null"
- android:minWidth="0dp"
android:layout_marginHorizontal="@dimen/dimen8dp"
android:paddingHorizontal="@dimen/dimen12dp" />
@@ -92,18 +80,10 @@
@@ -116,7 +96,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ android:backgroundTint="?attr/colorSurfaceContainerHighest">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_document" />
@@ -143,14 +129,10 @@
+ style="@style/Widget.Material3.Button.IconButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:icon="@drawable/ic_dotted_menu" />
diff --git a/app/src/main/res/layout/activity_repo_forks.xml b/app/src/main/res/layout/activity_repo_forks.xml
index e7fe2a86..0228948e 100644
--- a/app/src/main/res/layout/activity_repo_forks.xml
+++ b/app/src/main/res/layout/activity_repo_forks.xml
@@ -48,7 +48,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
@@ -100,7 +84,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
@@ -93,7 +77,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
@@ -129,7 +101,7 @@
android:layout_height="match_parent"
android:hint="@string/search"
app:navigationIcon="@drawable/ic_arrow_back"
- app:backgroundTint="?attr/primaryBackgroundColor">
+ app:backgroundTint="?attr/colorSurface">
+ app:icon="@drawable/ic_arrow_back" />
+ app:icon="@drawable/ic_actions_runner" />
+ app:icon="@drawable/ic_actions_workflow" />
+ app:icon="@drawable/ic_actions_variable" />
+ app:icon="@drawable/ic_add" />
diff --git a/app/src/main/res/layout/activity_repository_settings.xml b/app/src/main/res/layout/activity_repository_settings.xml
index 3e7cf410..f198ad8b 100644
--- a/app/src/main/res/layout/activity_repository_settings.xml
+++ b/app/src/main/res/layout/activity_repository_settings.xml
@@ -61,7 +61,7 @@
app:paddingTopSystemWindowInsets="false"
android:layout_gravity="bottom|center_horizontal"
app:shapeAppearanceOverlay="@style/ShapeAppearance.RoundedDock"
- android:backgroundTint="?attr/colorSurfaceContainerHigh"
+ android:backgroundTint="?attr/colorSurfaceContainerHighest"
app:layout_behavior="com.google.android.material.behavior.HideViewOnScrollBehavior">
+ android:layout_marginStart="@dimen/dimen12dp"
+ android:layout_marginEnd="@dimen/dimen12dp" />
diff --git a/app/src/main/res/layout/activity_unlock.xml b/app/src/main/res/layout/activity_unlock.xml
index df6d49ed..b0445384 100644
--- a/app/src/main/res/layout/activity_unlock.xml
+++ b/app/src/main/res/layout/activity_unlock.xml
@@ -2,6 +2,7 @@
diff --git a/app/src/main/res/layout/bottomsheet_create_file.xml b/app/src/main/res/layout/bottomsheet_create_file.xml
index a54cbe02..8261f3df 100644
--- a/app/src/main/res/layout/bottomsheet_create_file.xml
+++ b/app/src/main/res/layout/bottomsheet_create_file.xml
@@ -133,7 +133,6 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dimen224dp"
android:gravity="top"
- android:scrollbars="vertical"
android:paddingTop="@dimen/dimen40dp"
android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_create_issue.xml b/app/src/main/res/layout/bottomsheet_create_issue.xml
index b3dd8643..2e08794c 100644
--- a/app/src/main/res/layout/bottomsheet_create_issue.xml
+++ b/app/src/main/res/layout/bottomsheet_create_issue.xml
@@ -120,7 +120,6 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dimen224dp"
android:gravity="top"
- android:scrollbars="vertical"
android:paddingTop="@dimen/dimen40dp"
android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_create_label.xml b/app/src/main/res/layout/bottomsheet_create_label.xml
index 9bb73ea7..366c6c0e 100644
--- a/app/src/main/res/layout/bottomsheet_create_label.xml
+++ b/app/src/main/res/layout/bottomsheet_create_label.xml
@@ -84,6 +84,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen24dp"
android:hint="@string/labelName"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
-
+ android:layout_height="@dimen/dimen120dp"
+ android:gravity="top|start"
+ android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_create_milestone.xml b/app/src/main/res/layout/bottomsheet_create_milestone.xml
index bbd5a42a..762e3755 100644
--- a/app/src/main/res/layout/bottomsheet_create_milestone.xml
+++ b/app/src/main/res/layout/bottomsheet_create_milestone.xml
@@ -66,6 +66,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen8dp"
android:hint="@string/title"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
diff --git a/app/src/main/res/layout/bottomsheet_create_organization.xml b/app/src/main/res/layout/bottomsheet_create_organization.xml
index a4cf987d..f603b4fa 100644
--- a/app/src/main/res/layout/bottomsheet_create_organization.xml
+++ b/app/src/main/res/layout/bottomsheet_create_organization.xml
@@ -65,6 +65,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen8dp"
android:hint="@string/userUserName"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
+ android:layout_height="@dimen/dimen120dp"
+ android:gravity="top|start"
+ android:inputType="textMultiLine" />
@@ -147,6 +155,8 @@
android:layout_marginEnd="@dimen/dimen4dp"
android:layout_weight="1"
android:hint="@string/locationText"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
diff --git a/app/src/main/res/layout/bottomsheet_create_release.xml b/app/src/main/res/layout/bottomsheet_create_release.xml
index aca86c49..210bcdd9 100644
--- a/app/src/main/res/layout/bottomsheet_create_release.xml
+++ b/app/src/main/res/layout/bottomsheet_create_release.xml
@@ -165,7 +165,6 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dimen224dp"
android:gravity="top"
- android:scrollbars="vertical"
android:paddingTop="@dimen/dimen40dp"
android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_create_repo.xml b/app/src/main/res/layout/bottomsheet_create_repo.xml
index e0420da3..a9d11c48 100644
--- a/app/src/main/res/layout/bottomsheet_create_repo.xml
+++ b/app/src/main/res/layout/bottomsheet_create_repo.xml
@@ -87,6 +87,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen12dp"
android:hint="@string/newRepoTintCopy"
+ app:endIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
@@ -105,6 +106,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen12dp"
android:hint="@string/default_branch"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
-
+ android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_create_repo_action_variable.xml b/app/src/main/res/layout/bottomsheet_create_repo_action_variable.xml
index c2def4e3..cee47d8b 100644
--- a/app/src/main/res/layout/bottomsheet_create_repo_action_variable.xml
+++ b/app/src/main/res/layout/bottomsheet_create_repo_action_variable.xml
@@ -77,6 +77,7 @@
android:layout_marginTop="@dimen/dimen8dp"
android:hint="@string/name"
app:boxStrokeErrorColor="@color/darkRed"
+ app:endIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:helperText="@string/variable_name_helper"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
@@ -99,18 +100,17 @@
android:layout_marginTop="@dimen/dimen16dp"
android:hint="@string/value"
app:boxStrokeErrorColor="@color/darkRed"
+ app:endIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:helperText="@string/variable_value_helper"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
-
+ android:inputType="textMultiLine" />
@@ -122,18 +122,17 @@
android:layout_marginTop="@dimen/dimen16dp"
android:hint="@string/description"
app:boxStrokeErrorColor="@color/darkRed"
+ app:endIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:helperText="@string/optional"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
-
+ android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_org_create_team.xml b/app/src/main/res/layout/bottomsheet_org_create_team.xml
index 8e990b9b..e0f84233 100644
--- a/app/src/main/res/layout/bottomsheet_org_create_team.xml
+++ b/app/src/main/res/layout/bottomsheet_org_create_team.xml
@@ -65,6 +65,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen8dp"
android:hint="@string/newTeamTitle"
+ app:endIconTint="?attr/iconsColor"
+ app:endIconMode="clear_text"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium">
-
+ android:layout_height="@dimen/dimen120dp"
+ android:gravity="top|start"
+ android:inputType="textMultiLine" />
diff --git a/app/src/main/res/layout/bottomsheet_proxy_auth.xml b/app/src/main/res/layout/bottomsheet_proxy_auth.xml
index b147435f..46f6d06d 100644
--- a/app/src/main/res/layout/bottomsheet_proxy_auth.xml
+++ b/app/src/main/res/layout/bottomsheet_proxy_auth.xml
@@ -73,8 +73,11 @@
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dimen16dp"
android:hint="@string/proxy_username_hint"
+ app:endIconMode="clear_text"
+ app:endIconTint="?attr/iconsColor"
app:shapeAppearance="@style/ShapeAppearance.Material3.Corner.Medium"
- app:startIconDrawable="@drawable/ic_person">
+ app:startIconDrawable="@drawable/ic_person"
+ app:startIconTint="?attr/iconsColor">
+ app:startIconDrawable="@drawable/ic_lock"
+ app:startIconTint="?attr/iconsColor">
-
@@ -56,4 +55,4 @@
-
+
diff --git a/app/src/main/res/layout/fragment_home_dashboard.xml b/app/src/main/res/layout/fragment_home_dashboard.xml
index d0f88717..acd776d9 100644
--- a/app/src/main/res/layout/fragment_home_dashboard.xml
+++ b/app/src/main/res/layout/fragment_home_dashboard.xml
@@ -4,8 +4,7 @@
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:clipToPadding="false"
- android:background="?attr/primaryBackgroundColor">
+ android:clipToPadding="false">
+ android:textStyle="bold" />
diff --git a/app/src/main/res/layout/item_files_breadcrumb.xml b/app/src/main/res/layout/item_files_breadcrumb.xml
new file mode 100644
index 00000000..632eb285
--- /dev/null
+++ b/app/src/main/res/layout/item_files_breadcrumb.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/layout_repo_readme.xml b/app/src/main/res/layout/layout_repo_readme.xml
index e3dd572f..525e8a75 100644
--- a/app/src/main/res/layout/layout_repo_readme.xml
+++ b/app/src/main/res/layout/layout_repo_readme.xml
@@ -24,7 +24,7 @@
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/dimen16dp"
android:paddingVertical="@dimen/dimen16dp"
- android:background="?attr/colorSurfaceVariant">
+ android:background="?attr/colorSurfaceContainerHigh">
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
deleted file mode 100644
index d6c8c9b3..00000000
--- a/app/src/main/res/navigation/nav_graph.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 97c2bf44..e17c263a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -10,7 +10,7 @@
#41818181
#009486
#ffffff
- #1d1d1d
+ #121212
#3A3A3A
#1d1d1d
#f2711c
@@ -29,7 +29,7 @@
#efd34a
#dbb109
#2A322E
- #1e2221
+ #1C2120
#334CAF50
#FCEDED
@@ -42,7 +42,7 @@
#212121
#dbdbdb
#D9E1DF
- #ffffff
+ #FFFDFC
#fad6d6
#d0f7d9
@@ -55,7 +55,7 @@
#dbdbdb
#6200EE
#03DAC6
- #ffffff
+ #FFFDFC
#a333c8
#db2828
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3892a0de..5f3e3045 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -38,6 +38,7 @@
Discover More Apps
e.g., main, develop, or a commit SHA
e.g., 1.26.1 (Gitea) or 15.0.0 (Forgejo)
+ Ln %d, Col %d
My Repositories
Starred Repositories
@@ -680,7 +681,6 @@
Please select a branch
Create pull request with this branch
Tap to select a file
- Ln %d, Col %d
Could not load image
Invalid user
Browse and manage all your pull requests with search and filters
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 61d58a4d..109f5e87 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -236,7 +236,7 @@