Compare commits

...

9 Commits

Author SHA1 Message Date
b31e2973c2 Merge pull request 'Release 2.5.1' (#479) from prepare-release-2.5.1 into release-2.5
Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/479
2020-04-30 09:36:00 +00:00
63f03db21b Release 2.5.1 2020-04-30 14:30:18 +05:00
7c90a32de7 Disable Code Highliging in File View to avoid crashes on Android 5 and 6 (#476)
Quick fix for crashes on Android 5 and 6 in file viewer using highlightjs

Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/476
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-28 22:56:31 +00:00
0bc4b6fd10 Merge pull request 'Fix the context bug (#470)' (#471) from backport_470-ctx-fix into release-2.5
Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/471
Reviewed-by: M M Arif <mmarif@swatian.com>
2020-04-28 10:52:15 +00:00
e8ab396e43 Fix the context bug (#470)
Fix the context bug. done in activities

Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/470
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-28 12:37:24 +02:00
83911da86f Temporary fix for data scrambling in diff. (#465)
Temporary fix for data scrambling in diff.

Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/465
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-27 20:32:51 +00:00
78f8a3d1c7 Fix share repo url (#456)
Fix share repo url

Co-authored-by: 6543 <6543@noreply.gitea.io>
Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/456
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-26 11:07:37 +00:00
e27e29b7ae [Backport] Notification icons (#459)
backport notification icons

Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/459
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-26 10:58:06 +00:00
e8c25fca2a [Bug] Crash in issues fragment (#444)
Fixed #443

Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/444
Reviewed-by: 6543 <6543@noreply.gitea.io>
2020-04-23 15:08:53 +00:00
25 changed files with 201 additions and 115 deletions

View File

@ -6,8 +6,8 @@ android {
applicationId "org.mian.gitnex"
minSdkVersion 21
targetSdkVersion 29
versionCode 250
versionName "2.5.0"
versionCode 251
versionName "2.5.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {

View File

@ -19,7 +19,7 @@ import org.mian.gitnex.util.TinyDB;
* Author M M Arif
*/
@AcraNotification(resIcon = R.mipmap.app_logo,
@AcraNotification(resIcon = R.drawable.gitnex_transparent,
resTitle = R.string.crashTitle,
resChannelName = R.string.setCrashReports,
resText = R.string.crashMessage)

View File

@ -293,7 +293,7 @@ public class CreateFileActivity extends BaseActivity {
}
}
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(getApplicationContext(),
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateFileActivity.this,
R.layout.spinner_item, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -367,7 +367,7 @@ public class CreateIssueActivity extends BaseActivity implements View.OnClickLis
}
}
ArrayAdapter<Milestones> adapter = new ArrayAdapter<>(getApplicationContext(),
ArrayAdapter<Milestones> adapter = new ArrayAdapter<>(CreateIssueActivity.this,
R.layout.spinner_item, milestonesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -260,7 +260,7 @@ public class CreateReleaseActivity extends BaseActivity {
}
}
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(getApplicationContext(),
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateReleaseActivity.this,
R.layout.spinner_item, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -283,7 +283,7 @@ public class CreateRepoActivity extends BaseActivity {
}
}
ArrayAdapter<OrgOwner> adapter = new ArrayAdapter<>(getApplicationContext(),
ArrayAdapter<OrgOwner> adapter = new ArrayAdapter<>(CreateRepoActivity.this,
R.layout.spinner_item, organizationsList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -388,7 +388,7 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
}
}
ArrayAdapter<Milestones> adapter_ = new ArrayAdapter<>(getApplicationContext(),
ArrayAdapter<Milestones> adapter_ = new ArrayAdapter<>(EditIssueActivity.this,
R.layout.spinner_item, milestonesList);
adapter_.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -1,5 +1,6 @@
package org.mian.gitnex.activities;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.BitmapFactory;
@ -13,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
import android.util.Base64;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@ -57,7 +59,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
private View.OnClickListener onClickListener;
private TextView singleFileContents;
private LinearLayout singleFileContentsFrame;
private HighlightJsView singleCodeContents;
private LinearLayout highlightJs;
//private HighlightJsView singleCodeContents;
private PhotoView imageView;
final Context ctx = this;
private ProgressBar mProgressBar;
@ -92,7 +95,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
ImageView closeActivity = findViewById(R.id.close);
singleFileContents = findViewById(R.id.singleFileContents);
singleCodeContents = findViewById(R.id.singleCodeContents);
highlightJs = findViewById(R.id.highlightJs);
//singleCodeContents = findViewById(R.id.singleCodeContents);
imageView = findViewById(R.id.imageView);
mProgressBar = findViewById(R.id.progress_bar);
pdfView = findViewById(R.id.pdfView);
@ -157,7 +161,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
if(appUtil.imageExtension(fileExtension)) { // file is image
singleFileContentsFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE);
highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
@ -168,40 +173,59 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
}
else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode
imageView.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.VISIBLE);
imageView.setVisibility(View.GONE);
if(Build.VERSION.SDK_INT > 23) {
highlightJs.setVisibility(View.VISIBLE);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert inflater != null;
@SuppressLint("InflateParams") View mView = inflater.inflate(R.layout.custom_highlightjs, null);
HighlightJsView singleCodeContents = mView.findViewById(R.id.singleCodeContents);
highlightJs.addView(mView);
singleFileContentsFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.VISIBLE);
switch(tinyDb.getInt("fileviewerSourceCodeThemeId")) {
case 1:
singleCodeContents.setTheme(Theme.ARDUINO_LIGHT);
break;
case 2:
singleCodeContents.setTheme(Theme.GITHUB);
break;
case 3:
singleCodeContents.setTheme(Theme.FAR);
break;
case 4:
singleCodeContents.setTheme(Theme.IR_BLACK);
break;
case 5:
singleCodeContents.setTheme(Theme.ANDROID_STUDIO);
break;
default:
singleCodeContents.setTheme(Theme.MONOKAI_SUBLIME);
}
singleCodeContents.setShowLineNumbers(true);
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent()));
switch(tinyDb.getInt("fileviewerSourceCodeThemeId")) {
case 1:
singleCodeContents.setTheme(Theme.ARDUINO_LIGHT);
break;
case 2:
singleCodeContents.setTheme(Theme.GITHUB);
break;
case 3:
singleCodeContents.setTheme(Theme.FAR);
break;
case 4:
singleCodeContents.setTheme(Theme.IR_BLACK);
break;
case 5:
singleCodeContents.setTheme(Theme.ANDROID_STUDIO);
break;
default:
singleCodeContents.setTheme(Theme.MONOKAI_SUBLIME);
}
else {
singleCodeContents.setShowLineNumbers(true);
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent()));
singleFileContents.setVisibility(View.VISIBLE);
singleFileContents.setText(appUtil.decodeBase64(response.body().getContent()));
}
}
else if(appUtil.pdfExtension(fileExtension)) { // file is pdf
imageView.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE);
highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.VISIBLE);
pdfNightMode = tinyDb.getBoolean("enablePdfMode");
@ -213,7 +237,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
else if(appUtil.excludeFilesInFileViewerExtension(fileExtension)) { // files need to be excluded
imageView.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE);
highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.VISIBLE);
@ -225,7 +250,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
else { // file type not known - plain text view
imageView.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE);
highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.VISIBLE);

View File

@ -87,7 +87,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
Resources res = getResources();
String[] allProtocols = res.getStringArray(R.array.protocolValues);
final ArrayAdapter<String> adapterProtocols = new ArrayAdapter<String>(Objects.requireNonNull(getApplicationContext()),
final ArrayAdapter<String> adapterProtocols = new ArrayAdapter<String>(LoginActivity.this,
R.layout.spinner_item, allProtocols);
adapterProtocols.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -143,7 +143,7 @@ public class MergePullRequestActivity extends BaseActivity {
mergeList.add(new MergePullRequestSpinner("squash", getResources().getString(R.string.mergeOptionSquash)));
}
ArrayAdapter<MergePullRequestSpinner> adapter = new ArrayAdapter<>(ctx, R.layout.spinner_item, mergeList);
ArrayAdapter<MergePullRequestSpinner> adapter = new ArrayAdapter<>(MergePullRequestActivity.this, R.layout.spinner_item, mergeList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
mergeModeSpinner.setAdapter(adapter);

View File

@ -240,12 +240,6 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
public void onButtonClicked(String text) {
TinyDB tinyDb = new TinyDB(getApplicationContext());
String repoFullName = tinyDb.getString("repoFullName");
String instanceUrlWithProtocol = "https://" + tinyDb.getString("instanceUrlRaw");
if(!tinyDb.getString("instanceUrlWithProtocol").isEmpty()) {
instanceUrlWithProtocol = tinyDb.getString("instanceUrlWithProtocol");
}
Uri url = Uri.parse(instanceUrlWithProtocol + "/" + repoFullName);
switch (text) {
case "label":
@ -264,15 +258,15 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
startActivity(new Intent(RepoDetailActivity.this, CreateReleaseActivity.class));
break;
case "openWebRepo":
Intent i = new Intent(Intent.ACTION_VIEW, url);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(tinyDb.getString("repoHtmlUrl")));
startActivity(i);
break;
case "shareRepo":
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, url);
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, url);
startActivity(Intent.createChooser(sharingIntent, url.toString()));
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, tinyDb.getString("repoHtmlUrl"));
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, tinyDb.getString("repoHtmlUrl"));
startActivity(Intent.createChooser(sharingIntent, tinyDb.getString("repoHtmlUrl")));
break;
case "newFile":
startActivity(new Intent(RepoDetailActivity.this, CreateFileActivity.class));

View File

@ -60,6 +60,7 @@ public class FilesDiffAdapter extends RecyclerView.Adapter<FilesDiffAdapter.File
@Override
public void onBindViewHolder(@NonNull FilesDiffViewHolder holder, int position) {
holder.setIsRecyclable(false);
FileDiffView data = dataList.get(position);
if(data.isFileType()) {

View File

@ -2,7 +2,6 @@ package org.mian.gitnex.fragments;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@ -207,57 +206,52 @@ public class IssuesClosedFragment extends Fragment implements ItemFilterListener
footerAdapter.clear();
//noinspection unchecked
footerAdapter.add(new ProgressItem().withEnabled(false));
Handler handler = new Handler();
handler.postDelayed(() -> {
Call<List<Issues>> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().getClosedIssues(token, repoOwner, repoName, currentPage + 1, issueState, resultLimit, requestType);
Call<List<Issues>> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().getClosedIssues(token, repoOwner, repoName, currentPage + 1, issueState, resultLimit, requestType);
call.enqueue(new Callback<List<Issues>>() {
call.enqueue(new Callback<List<Issues>>() {
@Override
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
@Override
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
if(response.isSuccessful()) {
if(response.isSuccessful()) {
assert response.body() != null;
assert response.body() != null;
if(response.body().size() > 0) {
if(response.body().size() > 0) {
loadNextFlag = response.body().size() == resultLimit;
loadNextFlag = response.body().size() == resultLimit;
for(int i = 0; i < response.body().size(); i++) {
for(int i = 0; i < response.body().size(); i++) {
fastItemAdapter.add(fastItemAdapter.getAdapterItemCount(), new IssuesAdapter(getContext()).withNewItems(response.body().get(i).getTitle(), response.body().get(i).getNumber(), response.body().get(i).getUser().getAvatar_url(), response.body().get(i).getCreated_at(), response.body().get(i).getComments(), response.body().get(i).getUser().getFull_name(), response.body().get(i).getUser().getLogin()));
}
footerAdapter.clear();
mProgressBarClosed.setVisibility(View.GONE);
fastItemAdapter.add(fastItemAdapter.getAdapterItemCount(), new IssuesAdapter(getContext()).withNewItems(response.body().get(i).getTitle(), response.body().get(i).getNumber(), response.body().get(i).getUser().getAvatar_url(), response.body().get(i).getCreated_at(), response.body().get(i).getComments(), response.body().get(i).getUser().getFull_name(), response.body().get(i).getUser().getLogin()));
}
else {
footerAdapter.clear();
}
footerAdapter.clear();
mProgressBarClosed.setVisibility(View.GONE);
}
else {
Log.i(TAG, String.valueOf(response.code()));
footerAdapter.clear();
}
mProgressBarClosed.setVisibility(View.GONE);
}
else {
Log.i(TAG, String.valueOf(response.code()));
}
@Override
public void onFailure(@NonNull Call<List<Issues>> call, @NonNull Throwable t) {
}
Log.i(TAG, t.toString());
}
@Override
public void onFailure(@NonNull Call<List<Issues>> call, @NonNull Throwable t) {
});
Log.i(TAG, t.toString());
}
}, 1000);
});
if(!loadNextFlag) {
footerAdapter.clear();

View File

@ -11,7 +11,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@ -204,57 +203,52 @@ public class IssuesOpenFragment extends Fragment implements ItemFilterListener<I
footerAdapter.clear();
//noinspection unchecked
footerAdapter.add(new ProgressItem().withEnabled(false));
Handler handler = new Handler();
handler.postDelayed(() -> {
Call<List<Issues>> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().getIssues(token, repoOwner, repoName, currentPage + 1, resultLimit, requestType);
Call<List<Issues>> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().getIssues(token, repoOwner, repoName, currentPage + 1, resultLimit, requestType);
call.enqueue(new Callback<List<Issues>>() {
call.enqueue(new Callback<List<Issues>>() {
@Override
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
@Override
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
if(response.isSuccessful()) {
if(response.isSuccessful()) {
assert response.body() != null;
assert response.body() != null;
if(response.body().size() > 0) {
if(response.body().size() > 0) {
loadNextFlag = response.body().size() == resultLimit;
loadNextFlag = response.body().size() == resultLimit;
for(int i = 0; i < response.body().size(); i++) {
for(int i = 0; i < response.body().size(); i++) {
fastItemAdapter.add(fastItemAdapter.getAdapterItemCount(), new IssuesAdapter(getContext()).withNewItems(response.body().get(i).getTitle(), response.body().get(i).getNumber(), response.body().get(i).getUser().getAvatar_url(), response.body().get(i).getCreated_at(), response.body().get(i).getComments(), response.body().get(i).getUser().getFull_name(), response.body().get(i).getUser().getLogin()));
}
footerAdapter.clear();
noDataIssues.setVisibility(View.GONE);
fastItemAdapter.add(fastItemAdapter.getAdapterItemCount(), new IssuesAdapter(getContext()).withNewItems(response.body().get(i).getTitle(), response.body().get(i).getNumber(), response.body().get(i).getUser().getAvatar_url(), response.body().get(i).getCreated_at(), response.body().get(i).getComments(), response.body().get(i).getUser().getFull_name(), response.body().get(i).getUser().getLogin()));
}
else {
footerAdapter.clear();
}
mProgressBar.setVisibility(View.GONE);
footerAdapter.clear();
noDataIssues.setVisibility(View.GONE);
}
else {
Log.i(TAG, String.valueOf(response.code()));
footerAdapter.clear();
}
mProgressBar.setVisibility(View.GONE);
}
else {
Log.i(TAG, String.valueOf(response.code()));
}
@Override
public void onFailure(@NonNull Call<List<Issues>> call, @NonNull Throwable t) {
}
Log.i(TAG, t.toString());
}
@Override
public void onFailure(@NonNull Call<List<Issues>> call, @NonNull Throwable t) {
});
Log.i(TAG, t.toString());
}
}, 1000);
});
if(!loadNextFlag) {
footerAdapter.clear();

View File

@ -317,6 +317,8 @@ public class RepoInfoFragment extends Fragment {
tinyDb.putBoolean("hasIssues", true);
}
tinyDb.putString("repoHtmlUrl", repoInfo.getHtml_url());
mProgressBar.setVisibility(View.GONE);
pageContent.setVisibility(View.VISIBLE);

View File

@ -0,0 +1,45 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="120.59775"
android:viewportHeight="120.59775"
android:tint="#FFFFFF">
<group android:translateX="-7.436125"
android:translateY="-7.436125">
<path
android:pathData="M67.733,67.74m-67.733,0a67.733,67.733 0,1 1,135.466 0a67.733,67.733 0,1 1,-135.466 0"
android:fillColor="#39404a"
android:fillAlpha="0.0"/>
<path
android:pathData="M31.738,44.619a9.139,9.151 63.874,1 0,12.769 -13.108a9.139,9.151 63.874,1 0,-12.769 13.108z"
android:fillColor="#39404a"/>
<path
android:pathData="M31.875,114.541a9.139,9.151 63.874,1 0,12.769 -13.108a9.139,9.151 63.874,1 0,-12.769 13.108z"
android:fillColor="#39404a"/>
<path
android:pathData="M61.361,79.846a9.139,9.151 63.874,1 0,12.769 -13.108a9.139,9.151 63.874,1 0,-12.769 13.108z"
android:fillColor="#39404a"/>
<path
android:pathData="M34.37,18.337l7.038,0.003l-0.096,85.655l-7.038,-0.003z"
android:fillColor="#39404a"/>
<path
android:pathData="m37.878,38.133c31.743,0.128 29.614,-4.427 29.723,36.496"
android:strokeWidth="8.7255"
android:fillColor="#00000000"
android:strokeColor="#39404a"/>
<path
android:pathData="m97.323,108.453c-31.743,-0.128 -29.614,4.427 -29.723,-36.496"
android:strokeWidth="8.7255"
android:fillColor="#00000000"
android:strokeColor="#39404a"/>
<path
android:pathData="M90.959,44.619a9.139,9.151 63.874,1 0,12.769 -13.108a9.139,9.151 63.874,1 0,-12.769 13.108z"
android:fillColor="#39404a"/>
<path
android:pathData="M90.955,114.542a9.139,9.151 63.874,1 0,12.769 -13.108a9.139,9.151 63.874,1 0,-12.769 13.108z"
android:fillColor="#39404a"/>
<path
android:pathData="M93.872,35.062l7.038,0.002l-0.096,68.927l-7.038,-0.002z"
android:fillColor="#39404a"/>
</group>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -89,13 +89,13 @@
</LinearLayout>
<com.pddstudio.highlightjs.HighlightJsView
android:id="@+id/singleCodeContents"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_height="match_parent"
android:id="@+id/highlightJs"
android:layout_marginTop="42dp"
android:visibility="gone" />
android:visibility="gone"
android:orientation="vertical" />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/imageView"

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<com.pddstudio.highlightjs.HighlightJsView
android:id="@+id/singleCodeContents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_marginTop="42dp"
android:visibility="gone"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@ -1,6 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="2.5.1" versioncode="251">
<change>Bugfix: Crash when swiping issues tabs</change>
<change>Bugfix: Share repo empty url</change>
<change>Bugfix: Notification icons</change>
<change>Bugfix: Duplicate entries in diff view of PR files</change>
<change>Bugfix: Crash on tapping dropdowns (Android 5 bug)</change>
<change>Bugfix: Code highlighter (Android 5 and 6 bug)</change>
</release>
<release version="2.5.0" versioncode="250">
<change>New: Share issues, repositories, comments</change>
<change>New: Changelog popup</change>

View File

@ -0,0 +1,12 @@
2.5.1
Bugfix:
- Fix crash when swiping issues tabs
- Fix share repo empty url
- Notification icons
- Fix duplicate entries in diff view of PR files
- Fix crash on tapping dropdowns (Android 5 bug)
- Fix code highlighter (Android 5 and 6 bug)
Check release notes for complete list
https://gitea.com/gitnex/GitNex/releases