Compare commits
13 Commits
release-4.
...
main
Author | SHA1 | Date | |
---|---|---|---|
b2604c1650 | |||
a4dee6a179 | |||
8d69c7b9ce | |||
367380921f | |||
471889f744 | |||
84551ca8be | |||
b4d08a6733 | |||
2cf702982a | |||
65ca86847f | |||
64b9b07a9e | |||
d5cf4295bd | |||
8b0e3ee53d | |||
a2cf46a896 |
@ -1,22 +1,22 @@
|
|||||||
## # What do you want to address?
|
---
|
||||||
<!-- This step is required; examples are shown below -->
|
|
||||||
|
|
||||||
- [ ] Bug
|
name: "Bug"
|
||||||
- [ ] Feature
|
about: "Something isn't working"
|
||||||
- [ ] Suggestion
|
labels:
|
||||||
|
|
||||||
|
- Bug
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## # Describe your matter briefly
|
## # Describe your matter briefly
|
||||||
<!-- This step is required. -->
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
##### What did you expect? <!-- Useful when addressing bugs -->
|
##### What did you expect?
|
||||||
---
|
---
|
||||||
<!-- This step is optional. -->
|
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
##### Some additional details <!-- Useful, when we are trying to reproduce a bug -->
|
##### Some additional details
|
||||||
---
|
---
|
||||||
<!-- This step is optional; an example is shown below -->
|
|
||||||
|
|
||||||
* The version of **Gitea** you are using:
|
* The version of **Gitea** you are using:
|
||||||
* The version of **GitNex** you are using:
|
* The version of **GitNex** you are using:
|
||||||
@ -34,4 +34,4 @@
|
|||||||
- [ ] I carefully read the [contribution guidelines](https://codeberg.org/GitNex/GitNex/src/branch/main/CONTRIBUTING.md).
|
- [ ] I carefully read the [contribution guidelines](https://codeberg.org/GitNex/GitNex/src/branch/main/CONTRIBUTING.md).
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
#### Thank you for your time.
|
<!-- Thank you for your time. -->
|
17
.gitea/issue_template/feature.md
Normal file
17
.gitea/issue_template/feature.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
name: "Feature"
|
||||||
|
about: "A new feature or an enhancement to an existing feature"
|
||||||
|
labels:
|
||||||
|
|
||||||
|
- Feature
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## # Describe your matter briefly
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
- [ ] I carefully read the [contribution guidelines](https://codeberg.org/GitNex/GitNex/src/branch/main/CONTRIBUTING.md).
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<!-- Thank you for your time. -->
|
37
.gitea/issue_template/suggestion.md
Normal file
37
.gitea/issue_template/suggestion.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
name: "Suggestion"
|
||||||
|
about: "A general suggestion"
|
||||||
|
labels:
|
||||||
|
|
||||||
|
- Suggestion
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## # Describe your matter briefly
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
##### What did you expect?
|
||||||
|
---
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
##### Some additional details
|
||||||
|
---
|
||||||
|
|
||||||
|
* The version of **Gitea** you are using:
|
||||||
|
* The version of **GitNex** you are using:
|
||||||
|
* Source of installation (Play Store, F-Droid, APK):
|
||||||
|
* Current android version and phone model/manufacturer:
|
||||||
|
* The type of certificate your instance is using (self-signed, signed):
|
||||||
|
* How you used to log in (via password or token):
|
||||||
|
<br>
|
||||||
|
|
||||||
|
##### We would appreciate some screenshots or stacktrace's, but this is also not required.
|
||||||
|
---
|
||||||
|
<!-- Screenshots and stacktrace's can go here. -->
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
- [ ] I carefully read the [contribution guidelines](https://codeberg.org/GitNex/GitNex/src/branch/main/CONTRIBUTING.md).
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<!-- Thank you for your time. -->
|
@ -17,7 +17,7 @@ on_setup:
|
|||||||
- ./scripts/add-commit-status.sh
|
- ./scripts/add-commit-status.sh
|
||||||
|
|
||||||
build:
|
build:
|
||||||
image: nextcloudci/android:android-54
|
image: nextcloudci/android8:android-61
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
@ -30,7 +30,7 @@ build:
|
|||||||
expire_in: 15 minutes
|
expire_in: 15 minutes
|
||||||
|
|
||||||
sign:
|
sign:
|
||||||
image: nextcloudci/android:android-54
|
image: nextcloudci/android8:android-61
|
||||||
stage: sign
|
stage: sign
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[](https://www.gnu.org/licenses/gpl-3.0) [](https://gitlab.com/opyale/gitnex/-/pipelines) [](https://codeberg.org/gitnex/GitNex/releases) [](https://crowdin.com/project/gitnex) [](https://discord.gg/FbSS4rf)
|
[](https://www.gnu.org/licenses/gpl-3.0) [](https://gitlab.com/mmarif4u/gitnex-ci/-/pipelines) [](https://codeberg.org/gitnex/GitNex/releases) [](https://crowdin.com/project/gitnex) [](https://discord.gg/FbSS4rf)
|
||||||
|
|
||||||
[<img alt="Become a Patroen" src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="40"/>](https://www.patreon.com/mmarif)
|
[<img alt="Become a Patreon" src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="40"/>](https://www.patreon.com/mmarif)
|
||||||
|
|
||||||
# GitNex - Android client for Gitea
|
# GitNex - Android client for Gitea
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ GitNex is a free/paid, open-source Android client for Git repository management
|
|||||||
GitNex is licensed under GPLv3 License. See the LICENSE file for the full license text. **No trackers are used** and source code is available here for anyone to audit.
|
GitNex is licensed under GPLv3 License. See the LICENSE file for the full license text. **No trackers are used** and source code is available here for anyone to audit.
|
||||||
|
|
||||||
## Downloads
|
## Downloads
|
||||||
[<img alt='Get it on F-droid' src='https://gitlab.com/fdroid/artwork/raw/master/badge/get-it-on.png' height="80"/>](https://f-droid.org/en/packages/org.mian.gitnex/)
|
[<img alt='Get it on F-Droid' src='https://gitlab.com/fdroid/artwork/raw/master/badge/get-it-on.png' height="80"/>](https://f-droid.org/en/packages/org.mian.gitnex/)
|
||||||
[<img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80"/>](https://play.google.com/store/apps/details?id=org.mian.gitnex.pro)
|
[<img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80"/>](https://play.google.com/store/apps/details?id=org.mian.gitnex.pro)
|
||||||
[<img alt='Download builds and releases' src='https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/apk-badge.png' height="82"/>](https://cloud.swatian.com/s/DN7E5xxtaw4fRbE)
|
[<img alt='Download builds and releases' src='https://codeberg.org/gitnex/GitNex/raw/branch/main/assets/apk-badge.png' height="82"/>](https://cloud.swatian.com/s/DN7E5xxtaw4fRbE)
|
||||||
|
|
||||||
@ -57,8 +57,6 @@ We use [Crowdin](https://crowdin.com/project/gitnex) for translation. If your la
|
|||||||
|
|
||||||
[Wiki](https://codeberg.org/gitnex/GitNex/wiki/Home)
|
[Wiki](https://codeberg.org/gitnex/GitNex/wiki/Home)
|
||||||
|
|
||||||
[Website Repository](https://gitlab.com/mmarif4u/gitnex-website)
|
|
||||||
|
|
||||||
[Troubleshoot Guide](https://codeberg.org/gitnex/GitNex/wiki/Troubleshoot-Guide)
|
[Troubleshoot Guide](https://codeberg.org/gitnex/GitNex/wiki/Troubleshoot-Guide)
|
||||||
|
|
||||||
[Faq](https://codeberg.org/gitnex/GitNex/wiki/FAQ)
|
[Faq](https://codeberg.org/gitnex/GitNex/wiki/FAQ)
|
||||||
|
@ -6,8 +6,8 @@ android {
|
|||||||
applicationId "org.mian.gitnex"
|
applicationId "org.mian.gitnex"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode 410
|
versionCode 415
|
||||||
versionName "4.1.0"
|
versionName "4.2.0"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -63,7 +63,7 @@ dependencies {
|
|||||||
implementation 'androidx.appcompat:appcompat:1.4.0-alpha03'
|
implementation 'androidx.appcompat:appcompat:1.4.0-alpha03'
|
||||||
implementation 'com.google.android.material:material:1.4.0'
|
implementation 'com.google.android.material:material:1.4.0'
|
||||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
|
||||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||||
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
|
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
|
||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
|
@ -189,6 +189,10 @@
|
|||||||
<data android:host="code.obermui.de" />
|
<data android:host="code.obermui.de" />
|
||||||
<data android:host="git.fsfe.org" />
|
<data android:host="git.fsfe.org" />
|
||||||
<data android:host="opendev.org" />
|
<data android:host="opendev.org" />
|
||||||
|
<data android:host="git.shihaam.dev" />
|
||||||
|
<data android:host="git.athfan.com" />
|
||||||
|
<data android:host="git.athfan.dev" />
|
||||||
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package org.mian.gitnex.activities;
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
@ -590,7 +589,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
|
|||||||
String issueNumber_ = "<font color='" + ResourcesCompat.getColor(getResources(), R.color.lightGray, null) + "'>" + appCtx.getResources()
|
String issueNumber_ = "<font color='" + ResourcesCompat.getColor(getResources(), R.color.lightGray, null) + "'>" + appCtx.getResources()
|
||||||
.getString(R.string.hash) + singleIssue.getNumber() + "</font>";
|
.getString(R.string.hash) + singleIssue.getNumber() + "</font>";
|
||||||
viewBinding.issueTitle.setText(HtmlCompat.fromHtml(issueNumber_ + " " + EmojiParser.parseToUnicode(singleIssue.getTitle()), HtmlCompat.FROM_HTML_MODE_LEGACY));
|
viewBinding.issueTitle.setText(HtmlCompat.fromHtml(issueNumber_ + " " + EmojiParser.parseToUnicode(singleIssue.getTitle()), HtmlCompat.FROM_HTML_MODE_LEGACY));
|
||||||
String cleanIssueDescription = singleIssue.getBody().trim();
|
String cleanIssueDescription = singleIssue.getBody().trim().replace("\n", "<br/>");
|
||||||
|
|
||||||
viewBinding.assigneeAvatar.setOnClickListener(loginId -> {
|
viewBinding.assigneeAvatar.setOnClickListener(loginId -> {
|
||||||
Intent intent = new Intent(ctx, ProfileActivity.class);
|
Intent intent = new Intent(ctx, ProfileActivity.class);
|
||||||
|
@ -11,6 +11,7 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
import androidx.activity.OnBackPressedCallback;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
@ -121,6 +122,24 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleOnBackPressed() {
|
||||||
|
if(path.size() == 0 || RepoDetailActivity.mViewPager.getCurrentItem() != 1) {
|
||||||
|
requireActivity().finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
path.remove(path.size() - 1);
|
||||||
|
binding.breadcrumbsView.removeLastItem();
|
||||||
|
if(path.size() == 0) {
|
||||||
|
fetchDataAsync(Authorization.get(getContext()), repoOwner, repoName, ref);
|
||||||
|
} else {
|
||||||
|
fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, path.toString(), ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerFiles(repoBranch -> {
|
((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerFiles(repoBranch -> {
|
||||||
|
|
||||||
path.clear();
|
path.clear();
|
||||||
|
@ -287,7 +287,7 @@ public class IssuesFragment extends Fragment {
|
|||||||
if(d == null || d.getTitle() == null || d.getBody() == null) {
|
if(d == null || d.getTitle() == null || d.getBody() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(d.getTitle().toLowerCase().contains(text) || d.getBody().toLowerCase().contains(text) || d.getNumber() == Integer.parseInt(text)) {
|
if(d.getTitle().toLowerCase().contains(text) || d.getBody().toLowerCase().contains(text) || String.valueOf(d.getNumber()).startsWith(text)) {
|
||||||
arr.add(d);
|
arr.add(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ public class PullRequestsFragment extends Fragment {
|
|||||||
if(d == null || d.getTitle() == null || d.getBody() == null) {
|
if(d == null || d.getTitle() == null || d.getBody() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(d.getTitle().toLowerCase().contains(text) || d.getBody().toLowerCase().contains(text) || d.getNumber() == Integer.parseInt(text)) {
|
if(d.getTitle().toLowerCase().contains(text) || d.getBody().toLowerCase().contains(text) || String.valueOf(d.getNumber()).startsWith(text)) {
|
||||||
arr.add(d);
|
arr.add(d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<changelog>
|
<changelog>
|
||||||
|
|
||||||
<release version="4.1.0" versioncode="410">
|
<release version="4.2.0" versioncode="415">
|
||||||
<change>New: Follow/unfollow a user</change>
|
<change>Under development</change>
|
||||||
<change>New: Explore users</change>
|
|
||||||
<change>New: Update pull request (merge, rebase)</change>
|
|
||||||
<change>New: Filter issues by milestone</change>
|
|
||||||
<change>Improvement: Scroll to release tag via link handler</change>
|
|
||||||
<change>Improvement: Search issue/pr by Id</change>
|
|
||||||
<change>Improvement: Hide profile picture when scrolling</change>
|
|
||||||
<change>Improvement: Render markdown in repository and organization descriptions</change>
|
|
||||||
<change>Bugfix: Fix showing mark as read button for read notifications</change>
|
|
||||||
</release>
|
</release>
|
||||||
|
|
||||||
</changelog>
|
</changelog>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
context="GitLab CI"
|
context="GitLab CI"
|
||||||
description="GitLab continuous integration tool"
|
description="GitLab continuous integration tool"
|
||||||
state=$STATE
|
state=$STATE
|
||||||
target_url="https://gitlab.com/opyale/gitnex/-/pipelines"
|
target_url="https://gitlab.com/mmarif4u/gitnex-ci/-/pipelines"
|
||||||
|
|
||||||
body='
|
body='
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
[ -z "${KS_FILE}" ] && { echo "Filename of keystore is missing (KS_FILE)"; exit 1; }
|
[ -z "${KS_FILE}" ] && { echo "Filename of keystore is missing (KS_FILE)"; exit 1; }
|
||||||
[ -z "${OUTPUT}" ] && { echo "Missing filename of signed output (OUTPUT)"; exit 1; }
|
[ -z "${OUTPUT}" ] && { echo "Missing filename of signed output (OUTPUT)"; exit 1; }
|
||||||
|
|
||||||
|
# Update the docker container. curl is an outdated version which has to be updated.
|
||||||
|
apt update
|
||||||
|
apt upgrade curl -y
|
||||||
|
|
||||||
KEYFILE=$(mktemp)
|
KEYFILE=$(mktemp)
|
||||||
curl -X GET "${INSTANCE}/api/v1/repos/${KS_REPO}/contents/${KS_FILE}?token=${BOT_TOKEN}" -H "accept: application/json" | sed 's|"content":"|#|g' | cut -d '#' -f 2 | cut -d '"' -f 1 | base64 -d > ${KEYFILE}
|
curl -X GET "${INSTANCE}/api/v1/repos/${KS_REPO}/contents/${KS_FILE}?token=${BOT_TOKEN}" -H "accept: application/json" | sed 's|"content":"|#|g' | cut -d '#' -f 2 | cut -d '"' -f 1 | base64 -d > ${KEYFILE}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user