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" applicationId "org.mian.gitnex"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 29 targetSdkVersion 29
versionCode 250 versionCode 251
versionName "2.5.0" versionName "2.5.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {

View File

@ -19,7 +19,7 @@ import org.mian.gitnex.util.TinyDB;
* Author M M Arif * Author M M Arif
*/ */
@AcraNotification(resIcon = R.mipmap.app_logo, @AcraNotification(resIcon = R.drawable.gitnex_transparent,
resTitle = R.string.crashTitle, resTitle = R.string.crashTitle,
resChannelName = R.string.setCrashReports, resChannelName = R.string.setCrashReports,
resText = R.string.crashMessage) 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); R.layout.spinner_item, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 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); R.layout.spinner_item, milestonesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 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); R.layout.spinner_item, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 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); R.layout.spinner_item, organizationsList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 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); R.layout.spinner_item, milestonesList);
adapter_.setDropDownViewResource(R.layout.spinner_dropdown_item); adapter_.setDropDownViewResource(R.layout.spinner_dropdown_item);

View File

@ -1,5 +1,6 @@
package org.mian.gitnex.activities; package org.mian.gitnex.activities;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
@ -13,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
import android.util.Base64; import android.util.Base64;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@ -57,7 +59,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
private View.OnClickListener onClickListener; private View.OnClickListener onClickListener;
private TextView singleFileContents; private TextView singleFileContents;
private LinearLayout singleFileContentsFrame; private LinearLayout singleFileContentsFrame;
private HighlightJsView singleCodeContents; private LinearLayout highlightJs;
//private HighlightJsView singleCodeContents;
private PhotoView imageView; private PhotoView imageView;
final Context ctx = this; final Context ctx = this;
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
@ -92,7 +95,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
ImageView closeActivity = findViewById(R.id.close); ImageView closeActivity = findViewById(R.id.close);
singleFileContents = findViewById(R.id.singleFileContents); 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); imageView = findViewById(R.id.imageView);
mProgressBar = findViewById(R.id.progress_bar); mProgressBar = findViewById(R.id.progress_bar);
pdfView = findViewById(R.id.pdfView); pdfView = findViewById(R.id.pdfView);
@ -157,7 +161,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
if(appUtil.imageExtension(fileExtension)) { // file is image if(appUtil.imageExtension(fileExtension)) { // file is image
singleFileContentsFrame.setVisibility(View.GONE); singleFileContentsFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE); highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE); pdfViewFrame.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE); imageView.setVisibility(View.VISIBLE);
@ -168,40 +173,59 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
} }
else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode
imageView.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.GONE);
pdfViewFrame.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); singleFileContents.setVisibility(View.VISIBLE);
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent())); singleFileContents.setText(appUtil.decodeBase64(response.body().getContent()));
}
} }
else if(appUtil.pdfExtension(fileExtension)) { // file is pdf else if(appUtil.pdfExtension(fileExtension)) { // file is pdf
imageView.setVisibility(View.GONE); imageView.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.GONE); singleFileContentsFrame.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE); highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.VISIBLE); pdfViewFrame.setVisibility(View.VISIBLE);
pdfNightMode = tinyDb.getBoolean("enablePdfMode"); 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 else if(appUtil.excludeFilesInFileViewerExtension(fileExtension)) { // files need to be excluded
imageView.setVisibility(View.GONE); imageView.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE); highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE); pdfViewFrame.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.VISIBLE); singleFileContentsFrame.setVisibility(View.VISIBLE);
@ -225,7 +250,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
else { // file type not known - plain text view else { // file type not known - plain text view
imageView.setVisibility(View.GONE); imageView.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE); highlightJs.setVisibility(View.GONE);
//singleCodeContents.setVisibility(View.GONE);
pdfViewFrame.setVisibility(View.GONE); pdfViewFrame.setVisibility(View.GONE);
singleFileContentsFrame.setVisibility(View.VISIBLE); singleFileContentsFrame.setVisibility(View.VISIBLE);

View File

@ -87,7 +87,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
Resources res = getResources(); Resources res = getResources();
String[] allProtocols = res.getStringArray(R.array.protocolValues); 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); R.layout.spinner_item, allProtocols);
adapterProtocols.setDropDownViewResource(R.layout.spinner_dropdown_item); 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))); 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); adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
mergeModeSpinner.setAdapter(adapter); mergeModeSpinner.setAdapter(adapter);

View File

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

View File

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

View File

@ -2,7 +2,6 @@ package org.mian.gitnex.fragments;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -207,57 +206,52 @@ public class IssuesClosedFragment extends Fragment implements ItemFilterListener
footerAdapter.clear(); footerAdapter.clear();
//noinspection unchecked //noinspection unchecked
footerAdapter.add(new ProgressItem().withEnabled(false)); 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 if(response.isSuccessful()) {
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
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()));
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);
} }
else {
footerAdapter.clear();
}
footerAdapter.clear();
mProgressBarClosed.setVisibility(View.GONE); mProgressBarClosed.setVisibility(View.GONE);
} }
else { 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) { if(!loadNextFlag) {
footerAdapter.clear(); footerAdapter.clear();

View File

@ -11,7 +11,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -204,57 +203,52 @@ public class IssuesOpenFragment extends Fragment implements ItemFilterListener<I
footerAdapter.clear(); footerAdapter.clear();
//noinspection unchecked //noinspection unchecked
footerAdapter.add(new ProgressItem().withEnabled(false)); 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 if(response.isSuccessful()) {
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
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()));
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);
} }
else {
footerAdapter.clear();
}
mProgressBar.setVisibility(View.GONE); footerAdapter.clear();
noDataIssues.setVisibility(View.GONE);
} }
else { 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) { if(!loadNextFlag) {
footerAdapter.clear(); footerAdapter.clear();

View File

@ -317,6 +317,8 @@ public class RepoInfoFragment extends Fragment {
tinyDb.putBoolean("hasIssues", true); tinyDb.putBoolean("hasIssues", true);
} }
tinyDb.putString("repoHtmlUrl", repoInfo.getHtml_url());
mProgressBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE);
pageContent.setVisibility(View.VISIBLE); 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> </LinearLayout>
<com.pddstudio.highlightjs.HighlightJsView <LinearLayout
android:id="@+id/singleCodeContents"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:textSize="14sp" android:id="@+id/highlightJs"
android:layout_marginTop="42dp" android:layout_marginTop="42dp"
android:visibility="gone" /> android:visibility="gone"
android:orientation="vertical" />
<com.github.chrisbanes.photoview.PhotoView <com.github.chrisbanes.photoview.PhotoView
android:id="@+id/imageView" 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"?> <?xml version="1.0" encoding="utf-8"?>
<changelog> <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"> <release version="2.5.0" versioncode="250">
<change>New: Share issues, repositories, comments</change> <change>New: Share issues, repositories, comments</change>
<change>New: Changelog popup</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