diff --git a/.gitignore b/.gitignore index 93cf4a2d..7f5d55f5 100644 --- a/.gitignore +++ b/.gitignore @@ -195,3 +195,6 @@ crowdin.yml !/gradle/wrapper/gradle-wrapper.jar # End of https://www.gitignore.io/api/android,androidstudio + +# Crowdin Config +crowdin.yml diff --git a/app/build.gradle b/app/build.gradle index 4e1a1157..3cc8fd32 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,14 +54,14 @@ configurations { } dependencies { - def lifecycle_version = '2.3.0-rc01' + def lifecycle_version = '2.3.0' def markwon_version = '4.6.1' - def work_version = "2.4.0" + def work_version = "2.5.0" def acra = "5.7.0" implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.3.0-beta01' - implementation 'com.google.android.material:material:1.3.0-alpha03' // Upgrading to rc01 results in failing builds + implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation "androidx.legacy:legacy-support-v4:1.0.0" implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" @@ -110,6 +110,8 @@ dependencies { implementation "com.eightbitlab:blurview:1.6.4" implementation "io.mikael:urlbuilder:2.0.9" implementation "org.codeberg.gitnex-garage:emoji-java:v5.1.2" + implementation "org.codeberg.gitnex:tea4j:1.0.1" coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.1" + implementation 'androidx.biometric:biometric:1.1.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 840c9b46..0eab7a1f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,9 +9,10 @@ newFileCreate.setEnabled(hasNetworkConnection)); newFileCreate.setOnClickListener(createFileListener); @@ -162,7 +162,6 @@ public class CreateFileActivity extends BaseActivity { private void processNewFile() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); String newFileName_ = newFileName.getText().toString(); String newFileContent_ = newFileContent.getText().toString(); @@ -181,7 +180,7 @@ public class CreateFileActivity extends BaseActivity { return; } - if(!appUtil.checkStringsWithDash(newFileBranchName_)) { + if(!AppUtil.checkStringsWithDash(newFileBranchName_)) { Toasty.error(ctx, getString(R.string.newFileInvalidBranchName)); return; @@ -198,7 +197,7 @@ public class CreateFileActivity extends BaseActivity { switch(fileAction) { case FILE_ACTION_CREATE: - createNewFile(Authorization.get(ctx), repoOwner, repoName, newFileName_, appUtil.encodeBase64(newFileContent_), newFileCommitMessage_, newFileBranchName_); + createNewFile(Authorization.get(ctx), repoOwner, repoName, newFileName_, AppUtil.encodeBase64(newFileContent_), newFileCommitMessage_, newFileBranchName_); break; case FILE_ACTION_DELETE: @@ -207,7 +206,7 @@ public class CreateFileActivity extends BaseActivity { case FILE_ACTION_EDIT: editFile(Authorization.get(ctx), repoOwner, repoName, filePath, - appUtil.encodeBase64(newFileContent_), newFileCommitMessage_, newFileBranchName_, fileSha); + AppUtil.encodeBase64(newFileContent_), newFileCommitMessage_, newFileBranchName_, fileSha); break; } diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java index fbdad652..12b0f449 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java @@ -14,6 +14,10 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.Collaborators; +import org.gitnex.tea4j.models.CreateIssue; +import org.gitnex.tea4j.models.Labels; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.actions.AssigneesActions; import org.mian.gitnex.actions.LabelsActions; @@ -30,10 +34,6 @@ import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Collaborators; -import org.mian.gitnex.models.CreateIssue; -import org.mian.gitnex.models.Labels; -import org.mian.gitnex.models.Milestones; import java.util.ArrayList; import java.util.Calendar; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateLabelActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateLabelActivity.java index 70751fa1..8b36f34f 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateLabelActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateLabelActivity.java @@ -13,6 +13,8 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.pes.androidmaterialcolorpickerdialog.ColorPicker; +import org.gitnex.tea4j.models.CreateLabel; +import org.gitnex.tea4j.models.Labels; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateLabelBinding; @@ -21,8 +23,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.CreateLabel; -import org.mian.gitnex.models.Labels; import org.mian.gitnex.viewmodels.LabelsViewModel; import org.mian.gitnex.viewmodels.OrganizationLabelsViewModel; import java.util.Objects; @@ -122,7 +122,7 @@ public class CreateLabelActivity extends BaseActivity { private void processUpdateLabel() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); + String repoFullName = tinyDB.getString("repoFullName"); String[] parts = repoFullName.split("/"); final String repoOwner = parts[0]; @@ -152,7 +152,7 @@ public class CreateLabelActivity extends BaseActivity { return; } - if(!appUtil.checkStrings(updateLabelName)) { + if(!AppUtil.checkStrings(updateLabelName)) { Toasty.error(ctx, getString(R.string.labelNameError)); return; @@ -167,7 +167,6 @@ public class CreateLabelActivity extends BaseActivity { private void processCreateLabel() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); String repoFullName = tinyDB.getString("repoFullName"); String[] parts = repoFullName.split("/"); @@ -198,7 +197,7 @@ public class CreateLabelActivity extends BaseActivity { return; } - if(!appUtil.checkStrings(newLabelName)) { + if(!AppUtil.checkStrings(newLabelName)) { Toasty.error(ctx, getString(R.string.labelNameError)); return; diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateMilestoneActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateMilestoneActivity.java index 4b1af58f..efdfebab 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateMilestoneActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateMilestoneActivity.java @@ -12,6 +12,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateMilestoneBinding; @@ -21,7 +22,6 @@ import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Milestones; import java.util.Calendar; import retrofit2.Call; import retrofit2.Callback; @@ -92,7 +92,7 @@ public class CreateMilestoneActivity extends BaseActivity implements View.OnClic private void processNewMilestone() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); + TinyDB tinyDb = TinyDB.getInstance(appCtx); String repoFullName = tinyDb.getString("repoFullName"); String[] parts = repoFullName.split("/"); diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateNewUserActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateNewUserActivity.java index 7464795e..2c110de5 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateNewUserActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateNewUserActivity.java @@ -10,15 +10,14 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateNewUserBinding; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserInfo; import retrofit2.Call; import retrofit2.Callback; @@ -74,8 +73,6 @@ public class CreateNewUserActivity extends BaseActivity { private void processCreateNewUser() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); - TinyDB tinyDb = TinyDB.getInstance(appCtx); String newFullName = fullName.getText().toString().trim(); String newUserName = userUserName.getText().toString().trim(); @@ -94,13 +91,13 @@ public class CreateNewUserActivity extends BaseActivity { return; } - if(!appUtil.checkStrings(newFullName)) { + if(!AppUtil.checkStrings(newFullName)) { Toasty.error(ctx, getString(R.string.userInvalidFullName)); return; } - if(!appUtil.checkStringsWithAlphaNumeric(newUserName)) { + if(!AppUtil.checkStringsWithAlphaNumeric(newUserName)) { Toasty.error(ctx, getString(R.string.userInvalidUserName)); return; diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateOrganizationActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateOrganizationActivity.java index 36296ace..a0d4d953 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateOrganizationActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateOrganizationActivity.java @@ -11,6 +11,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.UserOrganizations; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateOrganizationBinding; @@ -19,7 +20,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserOrganizations; import retrofit2.Call; import retrofit2.Callback; @@ -94,8 +94,6 @@ public class CreateOrganizationActivity extends BaseActivity { private void processNewOrganization() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); - TinyDB tinyDb = TinyDB.getInstance(appCtx); String newOrgName = orgName.getText().toString(); String newOrgDesc = orgDesc.getText().toString(); @@ -119,7 +117,7 @@ public class CreateOrganizationActivity extends BaseActivity { Toasty.error(ctx, getString(R.string.orgNameErrorEmpty)); } - else if(!appUtil.checkStrings(newOrgName)) { + else if(!AppUtil.checkStrings(newOrgName)) { Toasty.warning(ctx, getString(R.string.orgNameErrorInvalid)); } diff --git a/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java index a8351f3e..a274d2ff 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java @@ -12,6 +12,10 @@ import android.view.View; import android.widget.ArrayAdapter; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.Branches; +import org.gitnex.tea4j.models.CreatePullRequest; +import org.gitnex.tea4j.models.Labels; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.actions.LabelsActions; import org.mian.gitnex.adapters.LabelsListAdapter; @@ -23,10 +27,6 @@ import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Branches; -import org.mian.gitnex.models.CreatePullRequest; -import org.mian.gitnex.models.Labels; -import org.mian.gitnex.models.Milestones; import java.util.ArrayList; import java.util.Calendar; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java index f09182c0..744391de 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java @@ -14,6 +14,8 @@ import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.Branches; +import org.gitnex.tea4j.models.Releases; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateReleaseBinding; @@ -21,8 +23,6 @@ import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.Branches; -import org.mian.gitnex.models.Releases; import java.util.ArrayList; import java.util.List; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java index 6eaae9ef..a38a2e02 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java @@ -14,6 +14,8 @@ import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; +import org.gitnex.tea4j.models.OrgOwner; +import org.gitnex.tea4j.models.OrganizationRepository; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateRepoBinding; @@ -22,8 +24,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.OrgOwner; -import org.mian.gitnex.models.OrganizationRepository; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -104,7 +104,6 @@ public class CreateRepoActivity extends BaseActivity { private void processNewRepo() { boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); - AppUtil appUtil = new AppUtil(); String newRepoName = repoName.getText().toString(); String newRepoDesc = repoDesc.getText().toString(); @@ -129,7 +128,7 @@ public class CreateRepoActivity extends BaseActivity { Toasty.error(ctx, getString(R.string.repoNameErrorEmpty)); } - else if(!appUtil.checkStrings(newRepoName)) { + else if(!AppUtil.checkStrings(newRepoName)) { Toasty.warning(ctx, getString(R.string.repoNameErrorInvalid)); } diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateTeamByOrgActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateTeamByOrgActivity.java index cb9eec7a..2a17d157 100644 --- a/app/src/main/java/org/mian/gitnex/activities/CreateTeamByOrgActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/CreateTeamByOrgActivity.java @@ -12,6 +12,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.core.content.res.ResourcesCompat; +import org.gitnex.tea4j.models.Teams; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityCreateTeamByOrgBinding; @@ -20,7 +21,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.Teams; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -224,7 +224,6 @@ public class CreateTeamByOrgActivity extends BaseActivity implements View.OnClic private void processCreateTeam() { - AppUtil appUtil = new AppUtil(); final TinyDB tinyDb = TinyDB.getInstance(appCtx); final String loginUid = tinyDb.getString("loginUid"); final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); @@ -248,7 +247,7 @@ public class CreateTeamByOrgActivity extends BaseActivity implements View.OnClic return; } - if(!appUtil.checkStringsWithAlphaNumericDashDotUnderscore(newTeamName)) { + if(!AppUtil.checkStringsWithAlphaNumericDashDotUnderscore(newTeamName)) { Toasty.warning(ctx, getString(R.string.teamNameError)); return; @@ -256,7 +255,7 @@ public class CreateTeamByOrgActivity extends BaseActivity implements View.OnClic if(!newTeamDesc.equals("")) { - if(!appUtil.checkStrings(newTeamDesc)) { + if(!AppUtil.checkStrings(newTeamDesc)) { Toasty.warning(ctx, getString(R.string.teamDescError)); return; 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 3d56aef1..42be2a54 100644 --- a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java @@ -9,6 +9,8 @@ import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import org.apache.commons.lang3.StringUtils; +import org.gitnex.tea4j.models.PullRequests; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.database.api.RepositoriesApi; @@ -17,8 +19,6 @@ import org.mian.gitnex.database.models.Repository; import org.mian.gitnex.database.models.UserAccount; import org.mian.gitnex.databinding.ActivityDeeplinksBinding; import org.mian.gitnex.helpers.UrlHelper; -import org.mian.gitnex.models.PullRequests; -import org.mian.gitnex.models.UserRepositories; import java.net.URI; import java.util.List; import java.util.Objects; @@ -78,6 +78,13 @@ public class DeepLinksActivity extends BaseActivity { if(hostUri.toLowerCase().contains(Objects.requireNonNull(data.getHost().toLowerCase()))) { accountFound = true; + + tinyDB.putString("loginUid", userAccount.getUserName()); + tinyDB.putString("userLogin", userAccount.getUserName()); + tinyDB.putString(userAccount.getUserName() + "-token", userAccount.getToken()); + tinyDB.putString("instanceUrl", userAccount.getInstanceUrl()); + tinyDB.putInt("currentActiveAccountId", userAccount.getAccountId()); + break; } } @@ -326,7 +333,7 @@ public class DeepLinksActivity extends BaseActivity { // pull was done from a deleted fork tinyDB.putString("prIsFork", "true"); - tinyDB.putString("prForkFullName", ctx.getString(R.string.prDeletedFrok)); + tinyDB.putString("prForkFullName", ctx.getString(R.string.prDeletedFork)); } } diff --git a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java index f7592f9e..9e813b5e 100644 --- a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java @@ -18,6 +18,9 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.CreateIssue; +import org.gitnex.tea4j.models.Issues; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityEditIssueBinding; @@ -27,9 +30,6 @@ import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.CreateIssue; -import org.mian.gitnex.models.Issues; -import org.mian.gitnex.models.Milestones; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; diff --git a/app/src/main/java/org/mian/gitnex/activities/FileDiffActivity.java b/app/src/main/java/org/mian/gitnex/activities/FileDiffActivity.java index 95da2dca..b24ded72 100644 --- a/app/src/main/java/org/mian/gitnex/activities/FileDiffActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/FileDiffActivity.java @@ -9,6 +9,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; +import org.gitnex.tea4j.models.FileDiffView; import org.mian.gitnex.R; import org.mian.gitnex.adapters.FilesDiffAdapter; import org.mian.gitnex.clients.RetrofitClient; @@ -18,7 +19,6 @@ import org.mian.gitnex.helpers.ParseDiff; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.FileDiffView; import java.io.IOException; import java.util.List; import okhttp3.ResponseBody; diff --git a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java index 6bf6f99f..e4e5c35d 100644 --- a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java @@ -2,10 +2,7 @@ package org.mian.gitnex.activities; import android.app.Activity; import android.content.Intent; -import android.graphics.BitmapFactory; import android.graphics.Typeface; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; @@ -20,8 +17,6 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; -import androidx.activity.result.ActivityResult; -import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; @@ -31,17 +26,18 @@ import com.github.barteksc.pdfviewer.util.FitPolicy; import com.github.chrisbanes.photoview.PhotoView; import com.vdurmont.emoji.EmojiParser; import org.apache.commons.io.FileUtils; +import org.gitnex.tea4j.models.Files; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityFileViewBinding; import org.mian.gitnex.fragments.BottomSheetFileViewerFragment; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.AppUtil; +import org.mian.gitnex.helpers.Images; import org.mian.gitnex.helpers.Markdown; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.highlightjs.HighlightJsView; import org.mian.gitnex.helpers.highlightjs.models.Theme; -import org.mian.gitnex.models.Files; import java.io.File; import java.io.IOException; import java.io.OutputStream; @@ -70,13 +66,11 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie private Boolean pdfNightMode; private String singleFileName; private String fileSha; - private AppUtil appUtil; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - appUtil = new AppUtil(); ActivityFileViewBinding activityFileViewBinding = ActivityFileViewBinding.inflate(getLayoutInflater()); setContentView(activityFileViewBinding.getRoot()); @@ -174,86 +168,94 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie tinyDB.putString("downloadFileName", filename); tinyDB.putString("downloadFileContents", response.body().getContent()); - if(appUtil.imageExtension(fileExtension)) { // file is image + boolean unknown = false; - singleFileContentsFrame.setVisibility(View.GONE); - singleCodeContents.setVisibility(View.GONE); - pdfViewFrame.setVisibility(View.GONE); - imageView.setVisibility(View.VISIBLE); + switch(AppUtil.getFileType(fileExtension)) { - imageData = Base64.decode(response.body().getContent(), Base64.DEFAULT); - Drawable imageDrawable = new BitmapDrawable(getResources(), BitmapFactory.decodeByteArray(imageData, 0, imageData.length)); - imageView.setImageDrawable(imageDrawable); + case IMAGE: + + singleFileContentsFrame.setVisibility(View.GONE); + singleCodeContents.setVisibility(View.GONE); + pdfViewFrame.setVisibility(View.GONE); + imageView.setVisibility(View.VISIBLE); + + imageData = Base64.decode(response.body().getContent(), Base64.DEFAULT); + imageView.setImageBitmap(Images.scaleImage(imageData, 1920)); + break; + case TEXT: + + imageView.setVisibility(View.GONE); + singleFileContentsFrame.setVisibility(View.GONE); + pdfViewFrame.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.setSource(AppUtil.decodeBase64(response.body().getContent())); + break; + case DOCUMENT: + + if(fileExtension.equalsIgnoreCase("pdf")) { + + imageView.setVisibility(View.GONE); + singleFileContentsFrame.setVisibility(View.GONE); + singleCodeContents.setVisibility(View.GONE); + pdfViewFrame.setVisibility(View.VISIBLE); + + pdfNightMode = tinyDB.getBoolean("enablePdfMode"); + decodedPdf = Base64.decode(response.body().getContent(), Base64.DEFAULT); + + pdfView.fromBytes(decodedPdf) + .enableSwipe(true) + .swipeHorizontal(false) + .enableDoubletap(true) + .defaultPage(0) + .enableAnnotationRendering(false) + .password(null) + .scrollHandle(null) + .enableAntialiasing(true) + .spacing(0) + .autoSpacing(true) + .pageFitPolicy(FitPolicy.WIDTH) + .fitEachPage(true) + .pageSnap(false) + .pageFling(true) + .nightMode(pdfNightMode).load(); + } + else { + + unknown = true; + } + break; + case UNKNOWN: + + default: + unknown = true; + break; } - else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode - imageView.setVisibility(View.GONE); - singleFileContentsFrame.setVisibility(View.GONE); - pdfViewFrame.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.setSource(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); - pdfViewFrame.setVisibility(View.VISIBLE); - - pdfNightMode = tinyDB.getBoolean("enablePdfMode"); - - decodedPdf = Base64.decode(response.body().getContent(), Base64.DEFAULT); - pdfView.fromBytes(decodedPdf).enableSwipe(true).swipeHorizontal(false).enableDoubletap(true).defaultPage(0).enableAnnotationRendering(false).password(null).scrollHandle(null).enableAntialiasing(true).spacing(0).autoSpacing(true).pageFitPolicy(FitPolicy.WIDTH).fitEachPage(true).pageSnap(false).pageFling(true).nightMode(pdfNightMode).load(); - - } - else if(appUtil.excludeFilesInFileViewerExtension(fileExtension)) { // files need to be excluded + if(unknown) { // While the file could still be non-binary, + // it's better we don't show it (to prevent any crashes and/or unwanted behavior) and let the user download it instead. imageView.setVisibility(View.GONE); singleCodeContents.setVisibility(View.GONE); pdfViewFrame.setVisibility(View.GONE); singleFileContentsFrame.setVisibility(View.VISIBLE); - singleFileContents.setText(getResources().getString(R.string.excludeFilesInFileviewer)); + singleFileContents.setText(getString(R.string.excludeFilesInFileViewer)); singleFileContents.setGravity(Gravity.CENTER); singleFileContents.setTypeface(null, Typeface.BOLD); } - else { // file type not known - plain text view - - imageView.setVisibility(View.GONE); - singleCodeContents.setVisibility(View.GONE); - pdfViewFrame.setVisibility(View.GONE); - singleFileContentsFrame.setVisibility(View.VISIBLE); - - singleFileContents.setText(appUtil.decodeBase64(response.body().getContent())); - } } else { @@ -323,7 +325,7 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie } else if(id == R.id.markdown) { - new Markdown(ctx, EmojiParser.parseToUnicode(appUtil.decodeBase64(tinyDB.getString("downloadFileContents"))), singleFileContents); + new Markdown(ctx, EmojiParser.parseToUnicode(AppUtil.decodeBase64(tinyDB.getString("downloadFileContents"))), singleFileContents); if(!tinyDB.getBoolean("enableMarkdownInFileView")) { @@ -337,7 +339,7 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie singleCodeContents.setVisibility(View.VISIBLE); singleFileContentsFrame.setVisibility(View.GONE); singleFileContents.setVisibility(View.GONE); - singleCodeContents.setSource(appUtil.decodeBase64(tinyDB.getString("downloadFileContents"))); + singleCodeContents.setSource(AppUtil.decodeBase64(tinyDB.getString("downloadFileContents"))); tinyDB.putBoolean("enableMarkdownInFileView", false); } return true; @@ -359,20 +361,15 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie if("deleteFile".equals(text)) { String fileExtension = FileUtils.getExtension(singleFileName); - String data = appUtil.decodeBase64(tinyDB.getString("downloadFileContents")); + + String data = AppUtil.getFileType(fileExtension) == AppUtil.FileType.TEXT ? + AppUtil.decodeBase64(tinyDB.getString("downloadFileContents")) : ""; + Intent intent = new Intent(ctx, CreateFileActivity.class); intent.putExtra("fileAction", CreateFileActivity.FILE_ACTION_DELETE); intent.putExtra("filePath", singleFileName); intent.putExtra("fileSha", fileSha); - - if(!appUtil.imageExtension(fileExtension)) { - - intent.putExtra("fileContents", data); - } - else { - - intent.putExtra("fileContents", ""); - } + intent.putExtra("fileContents", data); ctx.startActivity(intent); } @@ -380,24 +377,25 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie if("editFile".equals(text)) { String fileExtension = FileUtils.getExtension(singleFileName); - String data = appUtil.decodeBase64(tinyDB.getString("downloadFileContents")); - Intent intent = new Intent(ctx, CreateFileActivity.class); - intent.putExtra("fileAction", CreateFileActivity.FILE_ACTION_EDIT); - intent.putExtra("filePath", singleFileName); - intent.putExtra("fileSha", fileSha); - if(!appUtil.imageExtension(fileExtension)) { + switch(AppUtil.getFileType(fileExtension)) { - intent.putExtra("fileContents", data); + case TEXT: + + Intent intent = new Intent(ctx, CreateFileActivity.class); + + intent.putExtra("fileAction", CreateFileActivity.FILE_ACTION_EDIT); + intent.putExtra("filePath", singleFileName); + intent.putExtra("fileSha", fileSha); + intent.putExtra("fileContents", AppUtil.decodeBase64(tinyDB.getString("downloadFileContents"))); + + ctx.startActivity(intent); + break; + default: + + Toasty.error(ctx, getString(R.string.fileTypeCannotBeEdited)); } - else { - - intent.putExtra("fileContents", ""); - } - - ctx.startActivity(intent); } - } private void requestFileDownload() { @@ -420,11 +418,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie } } - ActivityResultLauncher fileDownloadActivityResultLauncher = registerForActivityResult( - new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { - - @Override - public void onActivityResult(ActivityResult result) { + ActivityResultLauncher fileDownloadActivityResultLauncher = + registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK) { @@ -445,15 +440,14 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie outputStream.close(); Toasty.success(ctx, getString(R.string.downloadFileSaved)); - } catch(IOException e) { Log.e("errorFileDownloading", Objects.requireNonNull(e.getMessage())); } } - } - }); + + }); private void initCloseListener() { 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 6a944713..6a18e9a0 100644 --- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java @@ -29,6 +29,11 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.amulyakhare.textdrawable.TextDrawable; import com.google.gson.JsonElement; import com.vdurmont.emoji.EmojiParser; +import org.gitnex.tea4j.models.Collaborators; +import org.gitnex.tea4j.models.Issues; +import org.gitnex.tea4j.models.Labels; +import org.gitnex.tea4j.models.UpdateIssueAssignees; +import org.gitnex.tea4j.models.WatchInfo; import org.mian.gitnex.R; import org.mian.gitnex.actions.AssigneesActions; import org.mian.gitnex.actions.LabelsActions; @@ -54,11 +59,6 @@ import org.mian.gitnex.helpers.TimeHelper; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Collaborators; -import org.mian.gitnex.models.Issues; -import org.mian.gitnex.models.Labels; -import org.mian.gitnex.models.UpdateIssueAssignees; -import org.mian.gitnex.models.WatchInfo; import org.mian.gitnex.viewmodels.IssueCommentsViewModel; import org.mian.gitnex.views.ReactionList; import java.text.DateFormat; diff --git a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java index 3926e121..4c3698cd 100644 --- a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java @@ -12,6 +12,9 @@ import android.widget.EditText; import android.widget.RadioGroup; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; +import org.gitnex.tea4j.models.GiteaVersion; +import org.gitnex.tea4j.models.UserInfo; +import org.gitnex.tea4j.models.UserTokens; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.database.api.UserAccountsApi; @@ -24,9 +27,6 @@ import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.UrlHelper; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.GiteaVersion; -import org.mian.gitnex.models.UserInfo; -import org.mian.gitnex.models.UserTokens; import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.List; @@ -61,7 +61,7 @@ public class LoginActivity extends BaseActivity { ActivityLoginBinding activityLoginBinding = ActivityLoginBinding.inflate(getLayoutInflater()); setContentView(activityLoginBinding.getRoot()); - NetworkStatusObserver networkStatusObserver = NetworkStatusObserver.get(ctx); + NetworkStatusObserver networkStatusObserver = NetworkStatusObserver.getInstance(ctx); loginButton = activityLoginBinding.loginButton; instanceUrlET = activityLoginBinding.instanceUrl; 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 e2f9f061..b02a2740 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.Typeface; import android.os.Bundle; +import android.text.Html; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -17,6 +18,8 @@ import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.biometric.BiometricPrompt; +import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; @@ -24,6 +27,9 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.navigation.NavigationView; +import org.gitnex.tea4j.models.GiteaVersion; +import org.gitnex.tea4j.models.NotificationCount; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.adapters.UserAccountsNavAdapter; import org.mian.gitnex.clients.PicassoService; @@ -52,11 +58,9 @@ import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.GiteaVersion; -import org.mian.gitnex.models.NotificationCount; -import org.mian.gitnex.models.UserInfo; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import eightbitlab.com.blurview.BlurView; import eightbitlab.com.blurview.RenderScriptBlur; import retrofit2.Call; @@ -157,6 +161,43 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig break; } + // biometric auth + if(tinyDB.getBoolean("biometricStatus")) { + + Executor executor = ContextCompat.getMainExecutor(this); + + BiometricPrompt biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() { + + @Override + public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) { + + super.onAuthenticationError(errorCode, errString); + + // Authentication error, close the app + if(errorCode == BiometricPrompt.ERROR_USER_CANCELED || + errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) { + + finish(); + } + } + + // Authentication succeeded, continue to app + @Override public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); } + + // Authentication failed, close the app + @Override public void onAuthenticationFailed() { super.onAuthenticationFailed(); } + + }); + + BiometricPrompt.PromptInfo biometricPromptBuilder = new BiometricPrompt.PromptInfo.Builder() + .setTitle(getString(R.string.biometricAuthTitle)) + .setSubtitle(getString(R.string.biometricAuthSubTitle)) + .setNegativeButtonText(getString(R.string.cancelButton)).build(); + + biometricPrompt.authenticate(biometricPromptBuilder); + + } + toolbarTitle.setTypeface(myTypeface); setSupportActionBar(toolbar); @@ -214,7 +255,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig Menu menu = navigationView.getMenu(); navNotifications = menu.findItem(R.id.nav_notifications); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigationDrawerOpen, R.string.navigationDrawerClose); drawer.addDrawerListener(toggle); drawer.addDrawerListener(new DrawerLayout.DrawerListener() { @@ -268,7 +309,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig if(!userFullNameNav.equals("")) { - userFullName.setText(userFullNameNav); + userFullName.setText(Html.fromHtml(userFullNameNav)); } if(!userAvatarNav.equals("")) { diff --git a/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java b/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java index 32ddb423..7098dc4b 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java @@ -9,6 +9,8 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.MergePullRequest; +import org.gitnex.tea4j.models.MergePullRequestSpinner; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityMergePullRequestBinding; @@ -17,8 +19,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.MergePullRequest; -import org.mian.gitnex.models.MergePullRequestSpinner; import java.util.ArrayList; import java.util.Objects; import okhttp3.ResponseBody; diff --git a/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java index 8b69b5f6..63200b4e 100644 --- a/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java @@ -212,7 +212,7 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh @Override public int getCount() { - return 4; + return 5; } } } diff --git a/app/src/main/java/org/mian/gitnex/activities/ProfileEmailActivity.java b/app/src/main/java/org/mian/gitnex/activities/ProfileEmailActivity.java index 398277da..ef47f0d4 100644 --- a/app/src/main/java/org/mian/gitnex/activities/ProfileEmailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/ProfileEmailActivity.java @@ -11,6 +11,7 @@ import android.widget.EditText; import android.widget.ImageView; import androidx.annotation.NonNull; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.AddEmail; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityProfileEmailBinding; @@ -19,7 +20,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.AddEmail; import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java index 7abf2742..fb01d048 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java @@ -27,6 +27,9 @@ import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.Branches; +import org.gitnex.tea4j.models.UserRepositories; +import org.gitnex.tea4j.models.WatchInfo; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.fragments.BottomSheetIssuesFilterFragment; @@ -44,9 +47,6 @@ import org.mian.gitnex.fragments.RepoInfoFragment; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Branches; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.models.WatchInfo; import java.util.ArrayList; import java.util.List; import java.util.Objects; diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoForksActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoForksActivity.java index b69c54b4..6c3e6f63 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoForksActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoForksActivity.java @@ -21,6 +21,7 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.adapters.RepoForksAdapter; import org.mian.gitnex.clients.RetrofitClient; @@ -29,7 +30,6 @@ import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.UserRepositories; import java.util.ArrayList; import java.util.List; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java index 9ea12885..438863b1 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java @@ -28,11 +28,11 @@ public class RepoStargazersActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ActivityRepoStargazersBinding activityRepoStargazersBinding = ActivityRepoStargazersBinding.inflate(getLayoutInflater()); setContentView(activityRepoStargazersBinding.getRoot()); - super.onCreate(savedInstanceState); - ImageView closeActivity = activityRepoStargazersBinding.close; TextView toolbarTitle = activityRepoStargazersBinding.toolbarTitle; noDataStargazers = activityRepoStargazersBinding.noDataStargazers; diff --git a/app/src/main/java/org/mian/gitnex/activities/RepositorySettingsActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepositorySettingsActivity.java index 98448a64..54e62e0d 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepositorySettingsActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepositorySettingsActivity.java @@ -10,6 +10,8 @@ import android.view.View; import android.widget.ImageView; import androidx.annotation.NonNull; import com.google.gson.JsonElement; +import org.gitnex.tea4j.models.RepositoryTransfer; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.database.api.RepositoriesApi; @@ -19,8 +21,6 @@ import org.mian.gitnex.databinding.CustomRepositoryEditPropertiesDialogBinding; import org.mian.gitnex.databinding.CustomRepositoryTransferDialogBinding; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.RepositoryTransfer; -import org.mian.gitnex.models.UserRepositories; import retrofit2.Call; import retrofit2.Callback; @@ -113,6 +113,7 @@ public class RepositorySettingsActivity extends BaseActivity { } }); + dialogTransferRepository.setCancelable(false); dialogTransferRepository.show(); } @@ -195,6 +196,7 @@ public class RepositorySettingsActivity extends BaseActivity { } }); + dialogDeleteRepository.setCancelable(false); dialogDeleteRepository.show(); } @@ -334,6 +336,7 @@ public class RepositorySettingsActivity extends BaseActivity { propBinding.repoEnableMerge.isChecked(), propBinding.repoEnableRebase.isChecked(), propBinding.repoEnableSquash.isChecked(), propBinding.repoEnableForceMerge.isChecked())); + dialogProp.setCancelable(false); dialogProp.show(); } diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java index 42f37e8c..d3e86f63 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java @@ -54,7 +54,7 @@ public class SettingsFileViewerActivity extends BaseActivity { AlertDialog.Builder fvtsBuilder = new AlertDialog.Builder(SettingsFileViewerActivity.this); - fvtsBuilder.setTitle(R.string.fileviewerSourceCodeThemeSelectorDialogTitle); + fvtsBuilder.setTitle(R.string.fileViewerSourceCodeThemeSelectorDialogTitle); fvtsBuilder.setCancelable(fileViewerSourceCodeThemesSelectedChoice != -1); fvtsBuilder.setSingleChoiceItems(fileViewerSourceCodeThemesList, fileViewerSourceCodeThemesSelectedChoice, (dialogInterfaceTheme, i) -> { diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java index a96bbb2c..f63762a5 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java @@ -113,7 +113,7 @@ public class SettingsGeneralActivity extends BaseActivity { // home screen // link handler - String[] defaultScreen_ = {getResources().getString(R.string.generalDeepLinkSelectedText), getResources().getString(R.string.navRepos), getResources().getString(R.string.navOrgs), getResources().getString(R.string.pageTitleNotifications), getResources().getString(R.string.navExplore)}; + String[] defaultScreen_ = {getResources().getString(R.string.generalDeepLinkSelectedText), getResources().getString(R.string.navRepos), getResources().getString(R.string.navOrg), getResources().getString(R.string.pageTitleNotifications), getResources().getString(R.string.navExplore)}; defaultScreen = new ArrayList<>(Arrays.asList(defaultScreen_)); String[] linksArray = new String[defaultScreen.size()]; @@ -131,7 +131,7 @@ public class SettingsGeneralActivity extends BaseActivity { } else if(defaultLinkHandlerScreenSelectedChoice == 2) { - viewBinding.generalDeepLinkSelected.setText(getResources().getString(R.string.navOrgs)); + viewBinding.generalDeepLinkSelected.setText(getResources().getString(R.string.navOrg)); } else if(defaultLinkHandlerScreenSelectedChoice == 3) { diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java index 3a231f34..b668625b 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java @@ -10,7 +10,7 @@ import org.mian.gitnex.R; import org.mian.gitnex.databinding.ActivitySettingsNotificationsBinding; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.notifications.NotificationsMaster; +import org.mian.gitnex.notifications.Notifications; /** * Template Author M M Arif @@ -43,7 +43,7 @@ public class SettingsNotificationsActivity extends BaseActivity { viewBinding.enableNotificationsMode.setOnCheckedChangeListener((buttonView, isChecked) -> { tinyDB.putBoolean("notificationsEnabled", isChecked); - if(!isChecked) NotificationsMaster.fireWorker(ctx); + if(!isChecked) Notifications.stopWorker(ctx); Toasty.info(appCtx, getResources().getString(R.string.settingsSave)); }); @@ -66,8 +66,8 @@ public class SettingsNotificationsActivity extends BaseActivity { tinyDB.putInt("pollingDelayMinutes", numberPicker.getValue()); - NotificationsMaster.fireWorker(ctx); - NotificationsMaster.hireWorker(ctx); + Notifications.stopWorker(ctx); + Notifications.startWorker(ctx); viewBinding.pollingDelaySelected.setText(String.format(getString(R.string.pollingDelaySelectedText), numberPicker.getValue())); Toasty.info(appCtx, getResources().getString(R.string.settingsSave)); diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsSecurityActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsSecurityActivity.java index ad86d2ab..0e81ccb0 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsSecurityActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsSecurityActivity.java @@ -1,7 +1,9 @@ package org.mian.gitnex.activities; +import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -9,6 +11,8 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; +import androidx.biometric.BiometricManager; +import com.google.android.material.switchmaterial.SwitchMaterial; import org.apache.commons.io.FileUtils; import org.mian.gitnex.R; import org.mian.gitnex.databinding.ActivitySettingsSecurityBinding; @@ -16,6 +20,8 @@ import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.ssl.MemorizingTrustManager; import java.io.File; import java.io.IOException; +import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG; +import static androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL; /** * Author M M Arif @@ -53,6 +59,8 @@ public class SettingsSecurityActivity extends BaseActivity { LinearLayout cacheSizeImagesFrame = activitySettingsSecurityBinding.cacheSizeImagesSelectionFrame; LinearLayout clearCacheFrame = activitySettingsSecurityBinding.clearCacheSelectionFrame; + SwitchMaterial switchBiometric = activitySettingsSecurityBinding.switchBiometric; + if(!tinyDB.getString("cacheSizeStr").isEmpty()) { cacheSizeDataSelected.setText(tinyDB.getString("cacheSizeStr")); @@ -73,6 +81,70 @@ public class SettingsSecurityActivity extends BaseActivity { cacheSizeImagesSelectedChoice = tinyDB.getInt("cacheSizeImagesId"); } + switchBiometric.setChecked(tinyDB.getBoolean("biometricStatus")); + + // biometric switcher + switchBiometric.setOnCheckedChangeListener((buttonView, isChecked) -> { + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + + if(isChecked) { + + BiometricManager biometricManager = BiometricManager.from(ctx); + KeyguardManager keyguardManager = (KeyguardManager) ctx.getSystemService(Context.KEYGUARD_SERVICE); + + if (!keyguardManager.isDeviceSecure()) { + + switch(biometricManager.canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL)) { + + case BiometricManager.BIOMETRIC_SUCCESS: + + tinyDB.putBoolean("biometricStatus", true); + Toasty.success(appCtx, getResources().getString(R.string.settingsSave)); + break; + case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE: + case BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED: + case BiometricManager.BIOMETRIC_ERROR_UNSUPPORTED: + case BiometricManager.BIOMETRIC_STATUS_UNKNOWN: + + tinyDB.putBoolean("biometricStatus", false); + switchBiometric.setChecked(false); + Toasty.error(appCtx, getResources().getString(R.string.biometricNotSupported)); + break; + case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE: + + tinyDB.putBoolean("biometricStatus", false); + switchBiometric.setChecked(false); + Toasty.error(appCtx, getResources().getString(R.string.biometricNotAvailable)); + break; + case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED: + + tinyDB.putBoolean("biometricStatus", false); + switchBiometric.setChecked(false); + Toasty.info(appCtx, getResources().getString(R.string.enrollBiometric)); + break; + } + } + else { + + tinyDB.putBoolean("biometricStatus", true); + Toasty.success(appCtx, getResources().getString(R.string.settingsSave)); + } + } + else { + + tinyDB.putBoolean("biometricStatus", false); + Toasty.success(appCtx, getResources().getString(R.string.settingsSave)); + } + } + else { + + tinyDB.putBoolean("biometricStatus", false); + Toasty.success(appCtx, getResources().getString(R.string.biometricNotSupported)); + } + + }); + // clear cache setter File cacheDir = appCtx.getCacheDir(); clearCacheSelected.setText(FileUtils.byteCountToDisplaySize((int) FileUtils.sizeOfDirectory(cacheDir))); 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 7ebf2c7f..5bce9a2e 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/AdminCronTasksAdapter.java @@ -12,13 +12,13 @@ import androidx.appcompat.app.AlertDialog; import androidx.recyclerview.widget.RecyclerView; import com.google.gson.JsonElement; import org.apache.commons.lang3.StringUtils; +import org.gitnex.tea4j.models.CronTasks; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.TimeHelper; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.CronTasks; import java.util.List; import java.util.Locale; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java index 2f8f63c7..4f7766d8 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java @@ -1,6 +1,7 @@ package org.mian.gitnex.adapters; import android.content.Context; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,10 +13,11 @@ import androidx.annotation.NonNull; import androidx.core.content.res.ResourcesCompat; import androidx.recyclerview.widget.RecyclerView; import com.amulyakhare.textdrawable.TextDrawable; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.clients.PicassoService; +import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; import java.util.ArrayList; import java.util.List; @@ -25,19 +27,22 @@ import java.util.List; public class AdminGetUsersAdapter extends RecyclerView.Adapter implements Filterable { - private List usersList; - private Context mCtx; - private List usersListFull; + private final List usersList; + private final Context mCtx; + private final List usersListFull; static class UsersViewHolder extends RecyclerView.ViewHolder { - private ImageView userAvatar; - private TextView userFullName; - private TextView userEmail; - private ImageView userRole; - private TextView userName; + private String userLoginId; + + private final ImageView userAvatar; + private final TextView userFullName; + private final TextView userEmail; + private final ImageView userRole; + private final TextView userName; private UsersViewHolder(View itemView) { + super(itemView); userAvatar = itemView.findViewById(R.id.userAvatar); @@ -46,10 +51,17 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public AdminGetUsersAdapter(Context mCtx, List usersListMain) { + this.mCtx = mCtx; this.usersList = usersListMain; usersListFull = new ArrayList<>(usersList); @@ -58,6 +70,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter filteredList = new ArrayList<>(); if (constraint == null || constraint.length() == 0) { filteredList.addAll(usersListFull); - } else { + } + else { String filterPattern = constraint.toString().toLowerCase().trim(); for (UserInfo item : usersListFull) { @@ -137,6 +159,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter { - private Context mCtx; - private List assigneesList; + private final Context mCtx; + private final List assigneesList; private List assigneesStrings = new ArrayList<>(); private List currentAssignees; - private AssigneesListAdapterListener assigneesListener; + private final AssigneesListAdapterListener assigneesListener; public interface AssigneesListAdapterListener { @@ -45,9 +46,9 @@ public class AssigneesListAdapter extends RecyclerView.Adapter collaboratorsList; - private Context mCtx; + private final List collaboratorsList; + private final Context mCtx; - private class ViewHolder { + private static class ViewHolder { - private ImageView collaboratorAvatar; - private TextView collaboratorName; + private String userLoginId; + + private final ImageView collaboratorAvatar; + private final TextView collaboratorName; ViewHolder(View v) { + collaboratorAvatar = v.findViewById(R.id.collaboratorAvatar); collaboratorName = v.findViewById(R.id.collaboratorName); + + collaboratorAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public CollaboratorsAdapter(Context mCtx, List collaboratorsListMain) { + this.mCtx = mCtx; this.collaboratorsList = collaboratorsListMain; } @@ -61,17 +74,18 @@ public class CollaboratorsAdapter extends BaseAdapter { ViewHolder viewHolder = null; if (finalView == null) { + finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_collaborators, null); viewHolder = new ViewHolder(finalView); finalView.setTag(viewHolder); } else { + viewHolder = (ViewHolder) finalView.getTag(); } initData(viewHolder, position); return finalView; - } private void initData(ViewHolder viewHolder, int position) { @@ -79,10 +93,14 @@ public class CollaboratorsAdapter extends BaseAdapter { Collaborators currentItem = collaboratorsList.get(position); PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.collaboratorAvatar); + viewHolder.userLoginId = currentItem.getLogin(); + if(!currentItem.getFull_name().equals("")) { - viewHolder.collaboratorName.setText(currentItem.getFull_name()); + + viewHolder.collaboratorName.setText(Html.fromHtml(currentItem.getFull_name())); } else { + viewHolder.collaboratorName.setText(currentItem.getLogin()); } diff --git a/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java index 609c4fa6..9c67fcde 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java @@ -12,11 +12,11 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.vdurmont.emoji.EmojiParser; +import org.gitnex.tea4j.models.Commits; import org.mian.gitnex.R; import org.mian.gitnex.helpers.ClickListener; import org.mian.gitnex.helpers.TimeHelper; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.Commits; import java.util.List; import java.util.Locale; diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java index b1ff42cc..b2af0601 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java @@ -18,6 +18,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.amulyakhare.textdrawable.TextDrawable; import com.amulyakhare.textdrawable.util.ColorGenerator; import com.google.android.material.bottomsheet.BottomSheetDialog; +import org.gitnex.tea4j.models.UserRepositories; +import org.gitnex.tea4j.models.WatchInfo; import org.mian.gitnex.R; import org.mian.gitnex.activities.OpenRepoInBrowserActivity; import org.mian.gitnex.activities.RepoDetailActivity; @@ -31,8 +33,6 @@ import org.mian.gitnex.database.models.Repository; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.models.WatchInfo; import java.util.List; import java.util.Objects; import retrofit2.Call; 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 93b12a42..5724dd44 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java @@ -9,11 +9,12 @@ import android.widget.Filterable; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; import org.apache.commons.io.FileUtils; +import org.gitnex.tea4j.models.Files; import org.mian.gitnex.R; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.Files; import java.util.ArrayList; import java.util.List; @@ -23,34 +24,33 @@ import java.util.List; public class FilesAdapter extends RecyclerView.Adapter implements Filterable { - private List filesList; - private Context mCtx; - private List filesListFull; + private final List originalFiles = new ArrayList<>(); + private final List alteredFiles = new ArrayList<>(); - private FilesAdapterListener filesListener; + private final Context mCtx; + + private final FilesAdapterListener filesListener; public interface FilesAdapterListener { + void onClickDir(String str); void onClickFile(String str); } - class FilesViewHolder extends RecyclerView.ViewHolder { + class FilesViewHolder extends RecyclerView.ViewHolder { - private ImageView fileTypeImage; - private ImageView dirTypeImage; - private ImageView unknownTypeImage; - private TextView fileName; - private TextView fileType; - private TextView fileInfo; + private String fileType; + + private final ImageView fileTypeIs; + private final TextView fileName; + private final TextView fileInfo; private FilesViewHolder(View itemView) { super(itemView); + fileName = itemView.findViewById(R.id.fileName); - fileTypeImage = itemView.findViewById(R.id.fileImage); - dirTypeImage = itemView.findViewById(R.id.dirImage); - unknownTypeImage = itemView.findViewById(R.id.unknownImage); - fileType = itemView.findViewById(R.id.fileType); + fileTypeIs = itemView.findViewById(R.id.fileTypeIs); fileInfo = itemView.findViewById(R.id.fileInfo); //ImageView filesDropdownMenu = itemView.findViewById(R.id.filesDropdownMenu); @@ -59,10 +59,10 @@ public class FilesAdapter extends RecyclerView.Adapter filesListMain, FilesAdapterListener filesListener) { + public FilesAdapter(Context mCtx, FilesAdapterListener filesListener) { + this.mCtx = mCtx; - this.filesList = filesListMain; - filesListFull = new ArrayList<>(filesList); this.filesListener = filesListener; + + } + + public List getOriginalFiles() { + return originalFiles; + } + + public void notifyOriginalDataSetChanged() { + + alteredFiles.clear(); + alteredFiles.addAll(originalFiles); + + notifyDataSetChanged(); + } @NonNull @@ -155,35 +168,32 @@ public class FilesAdapter extends RecyclerView.Adapter filteredList = new ArrayList<>(); if (constraint == null || constraint.length() == 0) { - filteredList.addAll(filesListFull); + filteredList.addAll(originalFiles); } else { String filterPattern = constraint.toString().toLowerCase().trim(); - for (Files item : filesListFull) { + for (Files item : originalFiles) { if (item.getName().toLowerCase().contains(filterPattern) || item.getPath().toLowerCase().contains(filterPattern)) { filteredList.add(item); } @@ -216,10 +228,14 @@ public class FilesAdapter extends RecyclerView.Adapter { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); + } } @@ -311,6 +319,8 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter class IssuesHolder extends RecyclerView.ViewHolder { + private String userLoginId; + private final TextView issueNumber; private final ImageView issueAssigneeAvatar; private final TextView issueTitle; @@ -118,9 +121,9 @@ public class IssuesAdapter extends RecyclerView.Adapter LinearLayout frameCommentsCount = itemView.findViewById(R.id.frameCommentsCount); issueCreatedTime = itemView.findViewById(R.id.issueCreatedTime); - issueTitle.setOnClickListener(v -> { + issueTitle.setOnClickListener(title -> { - Context context = v.getContext(); + Context context = title.getContext(); Intent intent = new Intent(context, IssueDetailActivity.class); intent.putExtra("issueNumber", issueNumber.getText()); @@ -131,9 +134,10 @@ public class IssuesAdapter extends RecyclerView.Adapter context.startActivity(intent); }); - frameCommentsCount.setOnClickListener(v -> { - Context context = v.getContext(); + frameCommentsCount.setOnClickListener(commentsCount -> { + + Context context = commentsCount.getContext(); Intent intent = new Intent(context, IssueDetailActivity.class); intent.putExtra("issueNumber", issueNumber.getText()); @@ -145,6 +149,13 @@ public class IssuesAdapter extends RecyclerView.Adapter }); + issueAssigneeAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); + } @SuppressLint("SetTextI18n") @@ -154,12 +165,7 @@ public class IssuesAdapter extends RecyclerView.Adapter final String locale = tinyDb.getString("locale"); final String timeFormat = tinyDb.getString("dateFormat"); - if(!issuesModel.getUser().getFull_name().equals("")) { - issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getFull_name(), context)); - } - else { - issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getLogin(), context)); - } + userLoginId = issuesModel.getUser().getLogin(); PicassoService.getInstance(context).get().load(issuesModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(issueAssigneeAvatar); diff --git a/app/src/main/java/org/mian/gitnex/adapters/LabelsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/LabelsAdapter.java index 73d8cab3..2b546330 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/LabelsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/LabelsAdapter.java @@ -15,11 +15,11 @@ import androidx.cardview.widget.CardView; import androidx.core.widget.ImageViewCompat; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.bottomsheet.BottomSheetDialog; +import org.gitnex.tea4j.models.Labels; import org.mian.gitnex.R; import org.mian.gitnex.activities.CreateLabelActivity; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.ColorInverter; -import org.mian.gitnex.models.Labels; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/adapters/LabelsListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/LabelsListAdapter.java index 4a01cb16..cdca4eb3 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/LabelsListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/LabelsListAdapter.java @@ -9,8 +9,8 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import org.gitnex.tea4j.models.Labels; import org.mian.gitnex.R; -import org.mian.gitnex.models.Labels; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java index 5428f4aa..e1636e8e 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java @@ -2,6 +2,7 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,10 +11,11 @@ import android.widget.Filter; import android.widget.Filterable; import android.widget.ImageView; import android.widget.TextView; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.clients.PicassoService; +import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; import java.util.ArrayList; import java.util.List; @@ -23,26 +25,36 @@ import java.util.List; public class MembersByOrgAdapter extends BaseAdapter implements Filterable { - private List membersList; - private Context mCtx; - private List membersListFull; + private final List membersList; + private final Context mCtx; + private final List membersListFull; - private class ViewHolder { + private static class ViewHolder { - private ImageView memberAvatar; - private TextView memberName; + private String userLoginId; + + private final ImageView memberAvatar; + private final TextView memberName; ViewHolder(View v) { + memberAvatar = v.findViewById(R.id.memberAvatar); memberName = v.findViewById(R.id.memberName); + + memberAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public MembersByOrgAdapter(Context mCtx, List membersListMain) { + this.mCtx = mCtx; this.membersList = membersListMain; membersListFull = new ArrayList<>(membersList); - } @Override @@ -67,17 +79,18 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable { MembersByOrgAdapter.ViewHolder viewHolder = null; if (finalView == null) { + finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_org, null); - viewHolder = new MembersByOrgAdapter.ViewHolder(finalView); + viewHolder = new ViewHolder(finalView); finalView.setTag(viewHolder); } else { + viewHolder = (MembersByOrgAdapter.ViewHolder) finalView.getTag(); } initData(viewHolder, position); return finalView; - } private void initData(MembersByOrgAdapter.ViewHolder viewHolder, int position) { @@ -85,10 +98,14 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable { UserInfo currentItem = membersList.get(position); PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(viewHolder.memberAvatar); + viewHolder.userLoginId = currentItem.getLogin(); + if(!currentItem.getFullname().equals("")) { - viewHolder.memberName.setText(currentItem.getFullname()); + + viewHolder.memberName.setText(Html.fromHtml(currentItem.getFullname())); } else { + viewHolder.memberName.setText(currentItem.getLogin()); } @@ -99,14 +116,17 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable { return membersFilter; } - private Filter membersFilter = new Filter() { + private final Filter membersFilter = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { List filteredList = new ArrayList<>(); if (constraint == null || constraint.length() == 0) { + filteredList.addAll(membersListFull); - } else { + } + else { + String filterPattern = constraint.toString().toLowerCase().trim(); for (UserInfo item : membersListFull) { @@ -124,6 +144,7 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable { @Override protected void publishResults(CharSequence constraint, FilterResults results) { + membersList.clear(); membersList.addAll((List) results.values); notifyDataSetChanged(); diff --git a/app/src/main/java/org/mian/gitnex/adapters/MilestonesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/MilestonesAdapter.java index 29dd0d2b..46966259 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/MilestonesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/MilestonesAdapter.java @@ -14,6 +14,7 @@ import androidx.core.content.res.ResourcesCompat; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.vdurmont.emoji.EmojiParser; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.actions.MilestoneActions; import org.mian.gitnex.helpers.ClickListener; @@ -21,7 +22,6 @@ import org.mian.gitnex.helpers.Markdown; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TimeHelper; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.Milestones; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java index c069ba36..944760ad 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java @@ -20,6 +20,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.amulyakhare.textdrawable.TextDrawable; import com.amulyakhare.textdrawable.util.ColorGenerator; import com.google.android.material.bottomsheet.BottomSheetDialog; +import org.gitnex.tea4j.models.UserRepositories; +import org.gitnex.tea4j.models.WatchInfo; import org.mian.gitnex.R; import org.mian.gitnex.activities.OpenRepoInBrowserActivity; import org.mian.gitnex.activities.RepoDetailActivity; @@ -33,8 +35,6 @@ import org.mian.gitnex.database.models.Repository; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.models.WatchInfo; import java.util.ArrayList; import java.util.List; import java.util.Objects; diff --git a/app/src/main/java/org/mian/gitnex/adapters/NotificationsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/NotificationsAdapter.java index 2ad63657..3a568bc0 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/NotificationsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/NotificationsAdapter.java @@ -11,11 +11,11 @@ import androidx.annotation.NonNull; import androidx.core.content.res.ResourcesCompat; import androidx.core.text.HtmlCompat; import androidx.recyclerview.widget.RecyclerView; +import org.gitnex.tea4j.models.NotificationThread; import org.mian.gitnex.R; import org.mian.gitnex.database.api.RepositoriesApi; import org.mian.gitnex.database.models.Repository; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.NotificationThread; import java.util.List; /** diff --git a/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java index 929ae2bb..73f79096 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java @@ -12,12 +12,12 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import org.gitnex.tea4j.models.UserOrganizations; import org.mian.gitnex.R; import org.mian.gitnex.activities.OrganizationDetailActivity; import org.mian.gitnex.clients.PicassoService; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.UserOrganizations; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/adapters/ProfileEmailsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ProfileEmailsAdapter.java index c124fd60..6c85fba2 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ProfileEmailsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ProfileEmailsAdapter.java @@ -10,8 +10,8 @@ import androidx.annotation.NonNull; import androidx.core.content.res.ResourcesCompat; import androidx.recyclerview.widget.RecyclerView; import com.amulyakhare.textdrawable.TextDrawable; +import org.gitnex.tea4j.models.Emails; import org.mian.gitnex.R; -import org.mian.gitnex.models.Emails; import java.util.List; /** diff --git a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java index cf20b379..55779d15 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java @@ -1,18 +1,20 @@ package org.mian.gitnex.adapters; import android.content.Context; +import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; -import org.mian.gitnex.R; -import org.mian.gitnex.clients.PicassoService; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.List; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import org.gitnex.tea4j.models.UserInfo; +import org.mian.gitnex.R; +import org.mian.gitnex.clients.PicassoService; +import org.mian.gitnex.helpers.AppUtil; +import org.mian.gitnex.helpers.RoundedTransformation; +import java.util.List; /** * Author M M Arif @@ -20,26 +22,36 @@ import androidx.recyclerview.widget.RecyclerView; public class ProfileFollowersAdapter extends RecyclerView.Adapter { - private List followersList; - private Context mCtx; + private final List followersList; + private final Context mCtx; static class FollowersViewHolder extends RecyclerView.ViewHolder { - private ImageView userAvatar; - private TextView userFullName; - private TextView userName; + private String userLoginId; + + private final ImageView userAvatar; + private final TextView userFullName; + private final TextView userName; private FollowersViewHolder(View itemView) { + super(itemView); userAvatar = itemView.findViewById(R.id.userAvatar); userFullName = itemView.findViewById(R.id.userFullName); userName = itemView.findViewById(R.id.userName); + userAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public ProfileFollowersAdapter(Context mCtx, List followersListMain) { + this.mCtx = mCtx; this.followersList = followersListMain; } @@ -47,8 +59,9 @@ public class ProfileFollowersAdapter extends RecyclerView.Adapter { - private List followingList; - private Context mCtx; + private final List followingList; + private final Context mCtx; static class FollowingViewHolder extends RecyclerView.ViewHolder { - private ImageView userAvatar; - private TextView userFullName; - private TextView userName; + private String userLoginId; + + private final ImageView userAvatar; + private final TextView userFullName; + private final TextView userName; private FollowingViewHolder(View itemView) { + super(itemView); userAvatar = itemView.findViewById(R.id.userAvatar); userFullName = itemView.findViewById(R.id.userFullName); userName = itemView.findViewById(R.id.userName); + userAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public ProfileFollowingAdapter(Context mCtx, List followingListMain) { + this.mCtx = mCtx; this.followingList = followingListMain; } @@ -47,8 +59,9 @@ public class ProfileFollowingAdapter extends RecyclerView.Adapter { Context context = v.getContext(); @@ -159,7 +163,13 @@ public class PullRequestsAdapter extends RecyclerView.Adapter { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); }); } @@ -171,19 +181,9 @@ public class PullRequestsAdapter extends RecyclerView.Adapter" + context.getResources().getString(R.string.hash) + prModel.getNumber() + ""; prTitle.setText(HtmlCompat.fromHtml(prNumber_ + " " + EmojiParser.parseToUnicode(prModel.getTitle()), HtmlCompat.FROM_HTML_MODE_LEGACY)); @@ -199,7 +199,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter { - private List searchedList; - private Context mCtx; - private TinyDB tinyDb; + private final List searchedList; + private final Context mCtx; + private final TinyDB tinyDb; public SearchIssuesAdapter(List dataList, Context mCtx) { @@ -46,12 +47,14 @@ public class SearchIssuesAdapter extends RecyclerView.Adapter { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } @@ -120,12 +130,7 @@ public class SearchIssuesAdapter extends RecyclerView.Adapter teamMembersList; - private Context mCtx; + private final List teamMembersList; + private final Context mCtx; private static class ViewHolder { - private ImageView memberAvatar; - private TextView memberName; + private String userLoginId; + + private final ImageView memberAvatar; + private final TextView memberName; ViewHolder(View v) { + memberAvatar = v.findViewById(R.id.memberAvatar); memberName = v.findViewById(R.id.memberName); + + memberAvatar.setOnClickListener(loginId -> { + + Context context = loginId.getContext(); + + AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId)); + }); } } public TeamMembersByOrgAdapter(Context mCtx, List membersListMain) { + this.mCtx = mCtx; this.teamMembersList = membersListMain; - } @Override @@ -64,17 +76,18 @@ public class TeamMembersByOrgAdapter extends BaseAdapter { TeamMembersByOrgAdapter.ViewHolder viewHolder = null; if (finalView == null) { + finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_team_by_org, null); viewHolder = new ViewHolder(finalView); finalView.setTag(viewHolder); } else { + viewHolder = (TeamMembersByOrgAdapter.ViewHolder) finalView.getTag(); } initData(viewHolder, position); return finalView; - } private void initData(TeamMembersByOrgAdapter.ViewHolder viewHolder, int position) { @@ -82,6 +95,8 @@ public class TeamMembersByOrgAdapter extends BaseAdapter { UserInfo currentItem = teamMembersList.get(position); PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar); + viewHolder.userLoginId = currentItem.getLogin(); + final TinyDB tinyDb = TinyDB.getInstance(mCtx); Typeface myTypeface; @@ -102,13 +117,14 @@ public class TeamMembersByOrgAdapter extends BaseAdapter { } if(!currentItem.getFullname().equals("")) { - viewHolder.memberName.setText(currentItem.getFullname()); - viewHolder.memberName.setTypeface(myTypeface); + + viewHolder.memberName.setText(Html.fromHtml(currentItem.getFullname())); } else { + viewHolder.memberName.setText(currentItem.getLogin()); - viewHolder.memberName.setTypeface(myTypeface); } + viewHolder.memberName.setTypeface(myTypeface); } } diff --git a/app/src/main/java/org/mian/gitnex/adapters/TeamsByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/TeamsByOrgAdapter.java index b3b7f686..2582535d 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/TeamsByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/TeamsByOrgAdapter.java @@ -8,13 +8,13 @@ import android.view.ViewGroup; import android.widget.Filter; import android.widget.Filterable; import android.widget.TextView; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OrganizationTeamMembersActivity; -import org.mian.gitnex.models.Teams; -import java.util.ArrayList; -import java.util.List; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import org.gitnex.tea4j.models.Teams; +import org.mian.gitnex.R; +import org.mian.gitnex.activities.OrganizationTeamMembersActivity; +import java.util.ArrayList; +import java.util.List; /** * Author M M Arif diff --git a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java index 99b18a4d..6849e929 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java @@ -10,6 +10,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; import org.mian.gitnex.R; import org.mian.gitnex.clients.PicassoService; @@ -27,19 +28,20 @@ import io.mikael.urlbuilder.UrlBuilder; public class UserAccountsAdapter extends RecyclerView.Adapter { - private List userAccountsList; - private Context mCtx; + private final List userAccountsList; + private final Context mCtx; private TinyDB tinyDB; class UserAccountsViewHolder extends RecyclerView.ViewHolder { - private TextView accountUrl; - private TextView userId; - private ImageView activeAccount; - private ImageView deleteAccount; - private ImageView repoAvatar; - private TextView accountId; - private TextView accountName; + private int accountId; + private String accountName; + + private final TextView accountUrl; + private final TextView userId; + private final ImageView activeAccount; + private final ImageView deleteAccount; + private final ImageView repoAvatar; private UserAccountsViewHolder(View itemView) { @@ -50,30 +52,26 @@ public class UserAccountsAdapter extends RecyclerView.Adapter { new AlertDialog.Builder(mCtx) - .setIcon(mCtx.getDrawable(R.drawable.ic_delete)) + .setIcon(AppCompatResources.getDrawable(mCtx, R.drawable.ic_delete)) .setTitle(mCtx.getResources().getString(R.string.removeAccountPopupTitle)) .setMessage(mCtx.getResources().getString(R.string.removeAccountPopupMessage)) .setPositiveButton(mCtx.getResources().getString(R.string.removeButton), (dialog, which) -> { updateLayoutByPosition(getAdapterPosition()); UserAccountsApi userAccountsApi = new UserAccountsApi(mCtx); - userAccountsApi.deleteAccount(Integer.parseInt(accountId.getText().toString())); + userAccountsApi.deleteAccount(Integer.parseInt(String.valueOf(accountId))); }).setNeutralButton(mCtx.getResources().getString(R.string.cancelButton), null) .show(); - }); - itemView.setOnClickListener(itemEdit -> { + itemView.setOnClickListener(switchAccount -> { - String accountNameSwitch = accountName.getText().toString(); UserAccountsApi userAccountsApi = new UserAccountsApi(mCtx); - UserAccount userAccount = userAccountsApi.getAccountData(accountNameSwitch); + UserAccount userAccount = userAccountsApi.getAccountData(accountName); if(tinyDB.getInt("currentActiveAccountId") != userAccount.getAccountId()) { @@ -109,7 +107,6 @@ public class UserAccountsAdapter extends RecyclerView.Adapter { - - //Log.e("PicassoService", Objects.requireNonNull(uri.toString())); - //Log.e("PicassoService", exception.toString()); - - }); +// builder.listener((picasso, uri, exception) -> { +// +// Log.e("PicassoService", Objects.requireNonNull(uri.toString())); +// Log.e("PicassoService", exception.toString()); +// +// }); picasso = builder.memoryCache(new PicassoCache(cachePath, context)).build(); @@ -66,10 +66,15 @@ public class PicassoService { public static synchronized PicassoService getInstance(Context context) { if(picassoService == null) { - picassoService = new PicassoService(context); + synchronized(PicassoService.class) { + if(picassoService == null) { + picassoService = new PicassoService(context); + } + } } return picassoService; + } } diff --git a/app/src/main/java/org/mian/gitnex/clients/RetrofitClient.java b/app/src/main/java/org/mian/gitnex/clients/RetrofitClient.java index 9304d051..d7772734 100644 --- a/app/src/main/java/org/mian/gitnex/clients/RetrofitClient.java +++ b/app/src/main/java/org/mian/gitnex/clients/RetrofitClient.java @@ -2,12 +2,12 @@ package org.mian.gitnex.clients; import android.content.Context; import android.util.Log; +import org.gitnex.tea4j.ApiInterface; +import org.gitnex.tea4j.WebInterface; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.FilesData; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.ssl.MemorizingTrustManager; -import org.mian.gitnex.interfaces.ApiInterface; -import org.mian.gitnex.interfaces.WebInterface; import java.io.File; import java.security.SecureRandom; import java.util.Map; @@ -96,30 +96,38 @@ public class RetrofitClient { } public static ApiInterface getApiInterface(Context context, String url) { + if(!apiInterfaces.containsKey(url)) { + synchronized(RetrofitClient.class) { + if(!apiInterfaces.containsKey(url)) { - ApiInterface apiInterface = createRetrofit(context, url) - .create(ApiInterface.class); - - apiInterfaces.put(url, apiInterface); - return apiInterface; + ApiInterface apiInterface = createRetrofit(context, url).create(ApiInterface.class); + apiInterfaces.put(url, apiInterface); + return apiInterface; + } + } } return apiInterfaces.get(url); + } public static WebInterface getWebInterface(Context context, String url) { + if(!webInterfaces.containsKey(url)) { + synchronized(RetrofitClient.class) { + if(!webInterfaces.containsKey(url)) { - WebInterface webInterface = createRetrofit(context, url) - .create(WebInterface.class); - - webInterfaces.put(url, webInterface); - return webInterface; + WebInterface webInterface = createRetrofit(context, url).create(WebInterface.class); + webInterfaces.put(url, webInterface); + return webInterface; + } + } } return webInterfaces.get(url); + } } diff --git a/app/src/main/java/org/mian/gitnex/core/MainApplication.java b/app/src/main/java/org/mian/gitnex/core/MainApplication.java new file mode 100644 index 00000000..ceed209a --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/core/MainApplication.java @@ -0,0 +1,134 @@ +package org.mian.gitnex.core; + +import android.annotation.SuppressLint; +import android.app.Application; +import android.content.Context; +import org.acra.ACRA; +import org.acra.BuildConfig; +import org.acra.ReportField; +import org.acra.annotation.AcraCore; +import org.acra.annotation.AcraNotification; +import org.acra.config.CoreConfigurationBuilder; +import org.acra.config.LimiterConfigurationBuilder; +import org.acra.config.MailSenderConfigurationBuilder; +import org.acra.data.StringFormat; +import org.mian.gitnex.R; +import org.mian.gitnex.helpers.AppUtil; +import org.mian.gitnex.helpers.FontsOverride; +import org.mian.gitnex.helpers.StaticGlobalVariables; +import org.mian.gitnex.helpers.TinyDB; +import org.mian.gitnex.notifications.Notifications; + +/** + * @author opyale + */ + +@SuppressLint("NonConstantResourceId") +@AcraNotification(resIcon = R.drawable.gitnex_transparent, + resTitle = R.string.crashTitle, + resChannelName = R.string.setCrashReports, + resText = R.string.crashMessage) +@AcraCore(reportContent = { ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.STACK_TRACE }) + +public class MainApplication extends Application { + + private Context appCtx; + private TinyDB tinyDB; + + @Override + public void onCreate() { + + super.onCreate(); + + appCtx = getApplicationContext(); + tinyDB = TinyDB.getInstance(appCtx); + + setDefaults(); + + switch(tinyDB.getInt("customFontId", -1)) { + + case 0: + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/roboto.ttf"); + break; + + case 2: + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/sourcecodeproregular.ttf"); + break; + + default: + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/manroperegular.ttf"); + + } + + if(tinyDB.getBoolean("crashReportingEnabled")) { + + CoreConfigurationBuilder ACRABuilder = new CoreConfigurationBuilder(this); + + ACRABuilder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.KEY_VALUE_LIST); + ACRABuilder.getPluginConfigurationBuilder(MailSenderConfigurationBuilder.class).setReportAsFile(true).setMailTo(getResources().getString(R.string.appEmail)).setSubject(getResources().getString(R.string.crashReportEmailSubject, AppUtil.getAppBuildNo(getApplicationContext()))).setEnabled(true); + ACRABuilder.getPluginConfigurationBuilder(LimiterConfigurationBuilder.class).setEnabled(true); + + ACRA.init(this, ACRABuilder); + + } + + Notifications.startWorker(appCtx); + + } + + private void setDefaults() { + + // enabling counter badges by default + if(tinyDB.getString("enableCounterBadgesInit").isEmpty()) { + + tinyDB.putBoolean("enableCounterBadges", true); + tinyDB.putString("enableCounterBadgesInit", "yes"); + } + + // enable crash reports by default + if(tinyDB.getString("crashReportingEnabledInit").isEmpty()) { + + tinyDB.putBoolean("crashReportingEnabled", true); + tinyDB.putString("crashReportingEnabledInit", "yes"); + } + + // default cache setter + if(tinyDB.getString("cacheSizeStr").isEmpty()) { + + tinyDB.putString("cacheSizeStr", getResources().getString(R.string.cacheSizeDataSelectionSelectedText)); + } + if(tinyDB.getString("cacheSizeImagesStr").isEmpty()) { + + tinyDB.putString("cacheSizeImagesStr", getResources().getString(R.string.cacheSizeImagesSelectionSelectedText)); + } + + // enable comment drafts by default + if(tinyDB.getString("draftsCommentsDeletionEnabledInit").isEmpty()) { + + tinyDB.putBoolean("draftsCommentsDeletionEnabled", true); + tinyDB.putString("draftsCommentsDeletionEnabledInit", "yes"); + } + + // setting default polling delay + if(tinyDB.getInt("pollingDelayMinutes", 0) <= 0) { + + tinyDB.putInt("pollingDelayMinutes", StaticGlobalVariables.defaultPollingDelay); + } + + // disable biometric by default + if(tinyDB.getString("biometricStatusInit").isEmpty()) { + + tinyDB.putBoolean("biometricStatus", false); + tinyDB.putString("biometricStatusInit", "yes"); + } + } +} diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFilterFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFilterFragment.java index e1279f8b..a59d2a6a 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFilterFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFilterFragment.java @@ -23,9 +23,10 @@ public class BottomSheetNotificationsFilterFragment extends BottomSheetDialogFra @Override public void onAttach(@NonNull Context context) { - this.tinyDB = TinyDB.getInstance(context); super.onAttach(context); + this.tinyDB = TinyDB.getInstance(context); + } @Nullable diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFragment.java index 4e606a8b..5f1c3169 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetNotificationsFragment.java @@ -11,12 +11,12 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import org.gitnex.tea4j.models.NotificationThread; import org.mian.gitnex.R; import org.mian.gitnex.actions.NotificationsActions; import org.mian.gitnex.databinding.BottomSheetNotificationsBinding; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.NotificationThread; /** * Author opyale @@ -30,6 +30,8 @@ public class BottomSheetNotificationsFragment extends BottomSheetDialogFragment public void onAttach(Context context, NotificationThread notificationThread, OnOptionSelectedListener onOptionSelectedListener) { + super.onAttach(context); + this.context = context; this.notificationThread = notificationThread; this.onOptionSelectedListener = onOptionSelectedListener; diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java index d5b486e0..a138c8c9 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java @@ -53,6 +53,8 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment { @Override public void onAttach(@NonNull Context context) { + super.onAttach(context); + tinyDB = TinyDB.getInstance(context); draftsApi = new DraftsApi(context); @@ -60,7 +62,6 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment { currentActiveAccountId = tinyDB.getInt("currentActiveAccountId"); issueNumber = Integer.parseInt(tinyDB.getString("issueNumber")); - super.onAttach(context); } @SuppressLint("ClickableViewAccessibility") @@ -119,7 +120,7 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment { comment.requestFocus(); comment.setOnTouchListener((v, event) -> { - BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from((View) bottomSheetReplyLayoutBinding.getRoot().getParent()); + BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from((View) bottomSheetReplyLayoutBinding.getRoot().getParent()); switch(event.getAction()) { diff --git a/app/src/main/java/org/mian/gitnex/fragments/CollaboratorsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/CollaboratorsFragment.java index a55ccda5..34756db0 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/CollaboratorsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/CollaboratorsFragment.java @@ -13,10 +13,10 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import org.gitnex.tea4j.models.Collaborators; import org.mian.gitnex.adapters.CollaboratorsAdapter; import org.mian.gitnex.databinding.FragmentCollaboratorsBinding; import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.models.Collaborators; import org.mian.gitnex.viewmodels.CollaboratorsViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java index d55590a9..db32f168 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java @@ -19,6 +19,8 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import org.gitnex.tea4j.models.ExploreRepositories; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.adapters.ExploreRepositoriesAdapter; import org.mian.gitnex.clients.RetrofitClient; @@ -30,8 +32,6 @@ import org.mian.gitnex.helpers.InfiniteScrollListener; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.ExploreRepositories; -import org.mian.gitnex.models.UserRepositories; import java.util.ArrayList; import java.util.List; import java.util.Objects; 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 29312780..5f986962 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java @@ -27,6 +27,7 @@ import org.mian.gitnex.adapters.FilesAdapter; import org.mian.gitnex.databinding.FragmentFilesBinding; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; +import org.mian.gitnex.helpers.Path; import org.mian.gitnex.viewmodels.FilesViewModel; import java.util.ArrayList; import java.util.Collections; @@ -41,34 +42,38 @@ import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem; public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapterListener { private ProgressBar mProgressBar; - private FilesAdapter adapter; private RecyclerView mRecyclerView; private TextView noDataFiles; private LinearLayout filesFrame; - private TextView fileStructure; - private static String repoNameF = "param2"; - private static String repoOwnerF = "param1"; - private static String repoRefF = "param3"; + + private static final String repoNameF = "param2"; + private static final String repoOwnerF = "param1"; + private static final String repoRefF = "param3"; private BreadcrumbsView mBreadcrumbsView; private String repoName; private String repoOwner; private String ref; + private final Path path = new Path(); + + private FilesAdapter filesAdapter; + private OnFragmentInteractionListener mListener; - public FilesFragment() { - - } + public FilesFragment() {} public static FilesFragment newInstance(String param1, String param2, String param3) { FilesFragment fragment = new FilesFragment(); + Bundle args = new Bundle(); args.putString(repoOwnerF, param1); args.putString(repoNameF, param2); args.putString(repoRefF, param3); + fragment.setArguments(args); + return fragment; } @@ -76,6 +81,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if(getArguments() != null) { repoName = getArguments().getString(repoNameF); repoOwner = getArguments().getString(repoOwnerF); @@ -84,7 +90,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { FragmentFilesBinding fragmentFilesBinding = FragmentFilesBinding.inflate(inflater, container, false); setHasOptionsMenu(true); @@ -92,10 +98,12 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter noDataFiles = fragmentFilesBinding.noDataFiles; filesFrame = fragmentFilesBinding.filesFrame; - fileStructure = fragmentFilesBinding.fileStructure; + filesAdapter = new FilesAdapter(getContext(), this); + mRecyclerView = fragmentFilesBinding.recyclerView; mRecyclerView.setHasFixedSize(true); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mRecyclerView.setAdapter(filesAdapter); DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL); mRecyclerView.addItemDecoration(dividerItemDecoration); @@ -104,10 +112,33 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter mBreadcrumbsView = fragmentFilesBinding.breadcrumbsView; mBreadcrumbsView.setItems(new ArrayList<>(Collections.singletonList(BreadcrumbItem.createSimpleItem(getResources().getString(R.string.filesBreadcrumbRoot) + getResources().getString(R.string.colonDivider) + ref)))); + // noinspection unchecked + mBreadcrumbsView.setCallback(new DefaultBreadcrumbsCallback() { + + @SuppressLint("SetTextI18n") + @Override + public void onNavigateBack(BreadcrumbItem item, int position) { + + if(position == 0) { + + path.clear(); + fetchDataAsync(Authorization.get(getContext()), repoOwner, repoName, ref); + return; + + } + + path.pop(path.size() - position); + fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, path.toString(), ref); + + } + + @Override public void onNavigateNewLocation(BreadcrumbItem newItem, int changedPosition) {} + + }); ((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerFiles(repoBranch -> { - fileStructure.setText(""); + path.clear(); ref = repoBranch; mBreadcrumbsView.setItems(new ArrayList<>(Collections.singletonList(BreadcrumbItem.createSimpleItem(getResources().getString(R.string.filesBreadcrumbRoot) + getResources().getString(R.string.colonDivider) + ref)))); fetchDataAsync(Authorization.get(getContext()), repoOwner, repoName, repoBranch); @@ -128,48 +159,10 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter @Override public void onClickDir(String dirName) { - StringBuilder breadcrumbBuilder = new StringBuilder(); - - breadcrumbBuilder.append(fileStructure.getText().toString()).append("/").append(dirName); - - fileStructure.setText(breadcrumbBuilder); - - String dirName_ = fileStructure.getText().toString(); - dirName_ = dirName_.startsWith("/") ? dirName_.substring(1) : dirName_; - final String finalDirName_ = dirName_; - + path.add(dirName); mBreadcrumbsView.addItem(new BreadcrumbItem(Collections.singletonList(dirName))); - //noinspection unchecked - mBreadcrumbsView.setCallback(new DefaultBreadcrumbsCallback() { - @SuppressLint("SetTextI18n") - @Override - public void onNavigateBack(BreadcrumbItem item, int position) { - - if(position == 0) { - - fetchDataAsync(Authorization.get(getContext()), repoOwner, repoName, ref); - fileStructure.setText(""); - return; - } - - String filterDir = fileStructure.getText().toString(); - String result = filterDir.substring(0, filterDir.indexOf(item.getSelectedItem())); - fileStructure.setText(result + item.getSelectedItem()); - - String currentIndex = (result + item.getSelectedItem()).substring(1); - - fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, currentIndex, ref); - - } - - @Override - public void onNavigateNewLocation(BreadcrumbItem newItem, int changedPosition) { - - } - }); - - fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, finalDirName_, ref); + fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, path.toString(), ref); } @@ -178,9 +171,9 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter Intent intent = new Intent(getContext(), FileViewActivity.class); - if(!fileStructure.getText().toString().equals("Root")) { + if(path.size() != 0) { - intent.putExtra("singleFileName", fileStructure.getText().toString() + "/" + fileName); + intent.putExtra("singleFileName", path.toString() + "/" + fileName); } else { @@ -199,24 +192,23 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter filesModel.getFilesList(instanceToken, owner, repo, ref, getContext(), mProgressBar, noDataFiles).observe(getViewLifecycleOwner(), filesListMain -> { - adapter = new FilesAdapter(getContext(), filesListMain, FilesFragment.this); - mBreadcrumbsView.removeItemAfter(1); + filesAdapter.getOriginalFiles().clear(); + filesAdapter.getOriginalFiles().addAll(filesListMain); + filesAdapter.notifyOriginalDataSetChanged(); - if(adapter.getItemCount() > 0) { + if(filesListMain.size() > 0) { - mRecyclerView.setAdapter(adapter); AppUtil.setMultiVisibility(View.VISIBLE, mRecyclerView, filesFrame); noDataFiles.setVisibility(View.GONE); + } else { - - adapter.notifyDataSetChanged(); - mRecyclerView.setAdapter(adapter); AppUtil.setMultiVisibility(View.VISIBLE, mRecyclerView, filesFrame, noDataFiles); } filesFrame.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); + }); } @@ -230,16 +222,16 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter filesModel2.getFilesList2(instanceToken, owner, repo, filesDir, ref, getContext(), mProgressBar, noDataFiles).observe(this, filesListMain2 -> { - adapter = new FilesAdapter(getContext(), filesListMain2, FilesFragment.this); + filesAdapter.getOriginalFiles().clear(); + filesAdapter.getOriginalFiles().addAll(filesListMain2); + filesAdapter.notifyOriginalDataSetChanged(); + + if(filesListMain2.size() > 0) { - if(adapter.getItemCount() > 0) { - mRecyclerView.setAdapter(adapter); AppUtil.setMultiVisibility(View.VISIBLE, mRecyclerView, filesFrame); noDataFiles.setVisibility(View.GONE); } else { - adapter.notifyDataSetChanged(); - mRecyclerView.setAdapter(adapter); AppUtil.setMultiVisibility(View.VISIBLE, mRecyclerView, filesFrame, noDataFiles); } @@ -268,7 +260,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter public boolean onQueryTextChange(String newText) { if(mRecyclerView.getAdapter() != null) { - adapter.getFilter().filter(newText); + filesAdapter.getFilter().filter(newText); } return false; diff --git a/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java index c0d26d1c..c535bb58 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java @@ -21,6 +21,7 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.Issues; import org.mian.gitnex.R; import org.mian.gitnex.activities.RepoDetailActivity; import org.mian.gitnex.adapters.IssuesAdapter; @@ -31,7 +32,6 @@ import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Issues; import java.util.ArrayList; import java.util.List; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/fragments/MembersByOrgFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MembersByOrgFragment.java index 5bc09959..7c2cc2f4 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/MembersByOrgFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/MembersByOrgFragment.java @@ -17,13 +17,13 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.adapters.MembersByOrgAdapter; import org.mian.gitnex.databinding.FragmentMembersByOrgBinding; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.UserInfo; import org.mian.gitnex.viewmodels.MembersByOrgViewModel; import java.util.List; import java.util.Objects; 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 b1a0d9d2..f8657f11 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/MilestonesFragment.java @@ -16,6 +16,7 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import org.gitnex.tea4j.models.Milestones; import org.mian.gitnex.R; import org.mian.gitnex.activities.RepoDetailActivity; import org.mian.gitnex.adapters.MilestonesAdapter; @@ -25,7 +26,6 @@ import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.Milestones; import java.util.ArrayList; import java.util.List; import retrofit2.Call; 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 81eca00f..91a5aba5 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 androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton; import org.apache.commons.lang3.StringUtils; +import org.gitnex.tea4j.models.NotificationThread; import org.mian.gitnex.R; import org.mian.gitnex.actions.NotificationsActions; import org.mian.gitnex.activities.IssueDetailActivity; @@ -32,7 +33,6 @@ import org.mian.gitnex.helpers.InfiniteScrollListener; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.NotificationThread; import java.io.IOException; import java.util.ArrayList; import java.util.Date; diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java index bf30aac6..cab98332 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java @@ -13,13 +13,13 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; +import org.gitnex.tea4j.models.Organization; import org.mian.gitnex.R; import org.mian.gitnex.clients.PicassoService; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.FragmentOrganizationInfoBinding; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.Organization; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java index 73590ab5..f304e9cf 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java @@ -52,7 +52,7 @@ public class OrganizationsFragment extends Fragment { final SwipeRefreshLayout swipeRefresh = fragmentOrganizationsBinding.pullToRefresh; - ((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.navOrgs)); + ((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.navOrg)); mProgressBar = fragmentOrganizationsBinding.progressBar; noDataOrg = fragmentOrganizationsBinding.noDataOrg; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileEmailsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileEmailsFragment.java index a0a47a8b..181573ab 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileEmailsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileEmailsFragment.java @@ -17,10 +17,10 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.Emails; import org.mian.gitnex.adapters.ProfileEmailsAdapter; import org.mian.gitnex.databinding.FragmentProfileEmailsBinding; import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.models.Emails; import org.mian.gitnex.viewmodels.ProfileEmailsViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowersFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowersFragment.java index 42b94362..58d8a066 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowersFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowersFragment.java @@ -18,10 +18,10 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.adapters.ProfileFollowersAdapter; import org.mian.gitnex.databinding.FragmentProfileFollowersBinding; import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.models.UserInfo; import org.mian.gitnex.viewmodels.ProfileFollowersViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowingFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowingFragment.java index 539c72bc..8450fb89 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowingFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileFollowingFragment.java @@ -18,11 +18,11 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.adapters.ProfileFollowingAdapter; import org.mian.gitnex.databinding.FragmentProfileFollowingBinding; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.UserInfo; import org.mian.gitnex.viewmodels.ProfileFollowingViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java index cb08ce87..1282c19b 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Typeface; import android.os.Bundle; +import android.text.Html; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -24,6 +25,7 @@ import com.squareup.picasso.Callback; import org.mian.gitnex.R; import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.clients.PicassoService; +import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.ColorInverter; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.helpers.TinyDB; @@ -75,7 +77,12 @@ public class ProfileFragment extends Fragment { userLanguage.setText(R.string.notSupported); } - userFullName.setText(tinyDb.getString("userFullname")); + userAvatar.setOnClickListener(loginId -> { + + AppUtil.copyToClipboard(ctx, tinyDb.getString("userLogin"), ctx.getString(R.string.copyLoginIdToClipBoard, tinyDb.getString("userLogin"))); + }); + + userFullName.setText(Html.fromHtml(tinyDb.getString("userFullname"))); userLogin.setText(getString(R.string.usernameWithAt, tinyDb.getString("userLogin"))); PicassoService.getInstance(ctx).get() diff --git a/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java index 717d5d92..793378a5 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java @@ -21,6 +21,7 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.PullRequests; import org.mian.gitnex.R; import org.mian.gitnex.activities.RepoDetailActivity; import org.mian.gitnex.adapters.PullRequestsAdapter; @@ -31,7 +32,6 @@ import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; -import org.mian.gitnex.models.PullRequests; import java.util.ArrayList; import java.util.List; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/fragments/ReleasesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ReleasesFragment.java index 323c1523..30c72f31 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ReleasesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ReleasesFragment.java @@ -18,11 +18,11 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.Releases; import org.mian.gitnex.adapters.ReleasesAdapter; import org.mian.gitnex.databinding.FragmentReleasesBinding; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.Releases; import org.mian.gitnex.viewmodels.ReleasesViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java index 25503e40..0a3962d8 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java @@ -17,6 +17,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import org.apache.commons.io.FileUtils; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.activities.RepoDetailActivity; import org.mian.gitnex.activities.RepoStargazersActivity; @@ -30,7 +31,6 @@ import org.mian.gitnex.helpers.Markdown; import org.mian.gitnex.helpers.TimeHelper; import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserRepositories; import java.util.Locale; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesByOrgFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesByOrgFragment.java index db446555..f79a32c0 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesByOrgFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesByOrgFragment.java @@ -22,13 +22,13 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.R; import org.mian.gitnex.adapters.RepositoriesByOrgAdapter; import org.mian.gitnex.databinding.FragmentRepositoriesByOrgBinding; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.UserRepositories; import org.mian.gitnex.viewmodels.RepositoriesByOrgViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/fragments/SearchIssuesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SearchIssuesFragment.java index e31c977e..374dc47c 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/SearchIssuesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/SearchIssuesFragment.java @@ -12,6 +12,7 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; +import org.gitnex.tea4j.models.Issues; import org.mian.gitnex.adapters.SearchIssuesAdapter; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.FragmentSearchIssuesBinding; @@ -19,7 +20,6 @@ import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.InfiniteScrollListener; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.Issues; import java.util.ArrayList; import java.util.List; import java.util.Objects; diff --git a/app/src/main/java/org/mian/gitnex/fragments/TeamsByOrgFragment.java b/app/src/main/java/org/mian/gitnex/fragments/TeamsByOrgFragment.java index da178f22..4a9f299a 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/TeamsByOrgFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/TeamsByOrgFragment.java @@ -22,12 +22,12 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import org.gitnex.tea4j.models.Teams; import org.mian.gitnex.R; import org.mian.gitnex.adapters.TeamsByOrgAdapter; import org.mian.gitnex.databinding.FragmentTeamsByOrgBinding; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.Teams; import org.mian.gitnex.viewmodels.TeamsByOrgViewModel; import java.util.List; diff --git a/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java b/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java index 8ff97995..a5fee3fd 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java +++ b/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java @@ -1,5 +1,7 @@ package org.mian.gitnex.helpers; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -18,7 +20,10 @@ import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; +import java.util.HashMap; +import java.util.List; import java.util.Locale; +import java.util.Objects; /** * Author M M Arif @@ -26,9 +31,36 @@ import java.util.Locale; public class AppUtil { + public enum FileType { IMAGE, DOCUMENT, TEXT, UNKNOWN } + + private static final HashMap, FileType> extensions = new HashMap<>(); + + // AppUtil should not be instantiated. + private AppUtil() {} + + static { + + extensions.put(Arrays.asList("jpg", "jpeg", "gif", "png", "ico"), FileType.IMAGE); + extensions.put(Arrays.asList("doc", "docx", "ppt", "pptx", "xls", "xlsx", "xlsm", "odt", "ott", "odf", "ods", "ots", "exe", "jar", "odg", "otg", "odp", "otp", "bin", "dmg", "psd", "xcf", "pdf"), FileType.DOCUMENT); + extensions.put(Arrays.asList("txt", "md", "json", "java", "go", "php", "c", "cc", "cpp", "h", "cxx", "cyc", "m", "cs", "bash", "sh", "bsh", "cv", "python", "perl", "pm", "rb", "ruby", "javascript", "coffee", "rc", "rs", "rust", "basic", "clj", "css", "dart", "lisp", "erl", "hs", "lsp", "rkt", "ss", "llvm", "ll", "lua", "matlab", "pascal", "r", "scala", "sql", "latex", "tex", "vb", "vbs", "vhd", "tcl", "wiki.meta", "yaml", "yml", "markdown", "xml", "proto", "regex", "py", "pl", "js", "html", "htm", "volt", "ini", "htaccess", "conf", "gitignore", "gradle", "txt", "properties", "bat", "twig", "cvs", "cmake", "in", "info", "spec", "m4", "am", "dist", "pam", "hx", "ts"), FileType.TEXT); + } + + public static FileType getFileType(String extension) { + + for(List e : extensions.keySet()) { + + if(e.contains(extension)) { + + return extensions.get(e); + } + } + + return FileType.UNKNOWN; + } + public static boolean hasNetworkConnection(Context context) { - return NetworkStatusObserver.get(context).hasNetworkConnection(); + return NetworkStatusObserver.getInstance(context).hasNetworkConnection(); } public static int getAppBuildNo(Context context) { @@ -57,19 +89,19 @@ public class AppUtil { return context.getPackageName().equals("org.mian.gitnex.pro"); } - public Boolean checkStringsWithAlphaNumeric(String str) { // [a-zA-Z0-9] + public static Boolean checkStringsWithAlphaNumeric(String str) { // [a-zA-Z0-9] return str.matches("^[\\w]+$"); } - public Boolean checkStrings(String str) { // [a-zA-Z0-9-_. ] + public static Boolean checkStrings(String str) { // [a-zA-Z0-9-_. ] return str.matches("^[\\w .-]+$"); } - public Boolean checkStringsWithAlphaNumericDashDotUnderscore(String str) { // [a-zA-Z0-9-_] + public static Boolean checkStringsWithAlphaNumericDashDotUnderscore(String str) { // [a-zA-Z0-9-_] return str.matches("^[\\w.-]+$"); } - public Boolean checkStringsWithDash(String str) { // [a-zA-Z0-9-_. ] + public static Boolean checkStringsWithDash(String str) { // [a-zA-Z0-9-_. ] return str.matches("^[\\w-]+$"); } @@ -168,7 +200,7 @@ public class AppUtil { } - public String encodeBase64(String str) { + public static String encodeBase64(String str) { String base64Str = str; if(!str.equals("")) { @@ -180,7 +212,7 @@ public class AppUtil { } - public String decodeBase64(String str) { + public static String decodeBase64(String str) { String base64Str = str; if(!str.equals("")) { @@ -192,39 +224,7 @@ public class AppUtil { } - public Boolean sourceCodeExtension(String ext) { - - String[] extValues = new String[]{"md", "json", "java", "go", "php", "c", "cc", "cpp", "h", "cxx", "cyc", "m", "cs", "bash", "sh", "bsh", "cv", "python", "perl", "pm", "rb", "ruby", "javascript", "coffee", "rc", "rs", "rust", "basic", "clj", "css", "dart", "lisp", "erl", "hs", "lsp", "rkt", "ss", "llvm", "ll", "lua", "matlab", "pascal", "r", "scala", "sql", "latex", "tex", "vb", "vbs", "vhd", "tcl", "wiki.meta", "yaml", "yml", "markdown", "xml", "proto", "regex", "py", "pl", "js", "html", "htm", "volt", "ini", "htaccess", "conf", "gitignore", "gradle", "txt", "properties", "bat", "twig", "cvs", "cmake", "in", "info", "spec", "m4", "am", "dist", "pam", "hx", "ts"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean pdfExtension(String ext) { - - String[] extValues = new String[]{"pdf"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean imageExtension(String ext) { - - String[] extValues = new String[]{"jpg", "jpeg", "gif", "png", "ico"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean excludeFilesInFileViewerExtension(String ext) { - - String[] extValues = new String[]{"doc", "docx", "ppt", "pptx", "xls", "xlsx", "xlsm", "odt", "ott", "odf", "ods", "ots", "exe", "jar", "odg", "otg", "odp", "otp", "bin", "dmg", "psd", "xcf"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public String getLastCharactersOfWord(String str, int count) { + public static String getLastCharactersOfWord(String str, int count) { return str.substring(str.length() - count); @@ -248,4 +248,14 @@ public class AppUtil { return (int) (context.getResources().getDisplayMetrics().scaledDensity * sp); } + public static void copyToClipboard(Context ctx, CharSequence data, String message) { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(ctx).getSystemService(Context.CLIPBOARD_SERVICE); + assert clipboard != null; + + ClipData clip = ClipData.newPlainText(data, data); + clipboard.setPrimaryClip(clip); + + Toasty.info(ctx, message); + } } diff --git a/app/src/main/java/org/mian/gitnex/helpers/Images.java b/app/src/main/java/org/mian/gitnex/helpers/Images.java new file mode 100644 index 00000000..d3aa82dd --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/helpers/Images.java @@ -0,0 +1,42 @@ +package org.mian.gitnex.helpers; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +/** + * Author M M Arif + */ + +public class Images { + + public static Bitmap scaleImage(byte[] imageData, int sizeLimit) { + + Bitmap original = BitmapFactory.decodeByteArray(imageData, 0, imageData.length); + + if(original.getHeight() > sizeLimit && original.getWidth() <= original.getHeight()) { + + double reductionPercentage = (double) sizeLimit / original.getHeight(); + + Bitmap scaled = Bitmap.createScaledBitmap(original, (int) (reductionPercentage * original.getWidth()), sizeLimit, false); + original.recycle(); + + return scaled; + + } + else if(original.getWidth() > sizeLimit && original.getHeight() < original.getWidth()) { + + double reductionPercentage = (double) sizeLimit / original.getWidth(); + + Bitmap scaled = Bitmap.createScaledBitmap(original, sizeLimit, (int) (reductionPercentage * original.getHeight()), false); + original.recycle(); + + return scaled; + + } + + // Image size does not exceed bounds. + return original; + + } + +} diff --git a/app/src/main/java/org/mian/gitnex/helpers/NetworkStatusObserver.java b/app/src/main/java/org/mian/gitnex/helpers/NetworkStatusObserver.java index 5845be53..a3df356b 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/NetworkStatusObserver.java +++ b/app/src/main/java/org/mian/gitnex/helpers/NetworkStatusObserver.java @@ -15,7 +15,7 @@ import java.util.concurrent.atomic.AtomicBoolean; */ public class NetworkStatusObserver { - private static NetworkStatusObserver networkStatusObserver; + private static volatile NetworkStatusObserver networkStatusObserver; private final AtomicBoolean hasNetworkConnection = new AtomicBoolean(false); private final List networkStatusListeners = new ArrayList<>(); @@ -98,12 +98,18 @@ public class NetworkStatusObserver { public interface NetworkStatusListener { void onNetworkStatusChanged(boolean hasNetworkConnection); } - public static NetworkStatusObserver get(Context context) { + public static NetworkStatusObserver getInstance(Context context) { + if(networkStatusObserver == null) { - networkStatusObserver = new NetworkStatusObserver(context); + synchronized(NetworkStatusObserver.class) { + if(networkStatusObserver == null) { + networkStatusObserver = new NetworkStatusObserver(context); + } + } } return networkStatusObserver; + } } diff --git a/app/src/main/java/org/mian/gitnex/helpers/ParseDiff.java b/app/src/main/java/org/mian/gitnex/helpers/ParseDiff.java index 69856078..d9b4968c 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/ParseDiff.java +++ b/app/src/main/java/org/mian/gitnex/helpers/ParseDiff.java @@ -1,6 +1,6 @@ package org.mian.gitnex.helpers; -import org.mian.gitnex.models.FileDiffView; +import org.gitnex.tea4j.models.FileDiffView; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; diff --git a/app/src/main/java/org/mian/gitnex/helpers/Path.java b/app/src/main/java/org/mian/gitnex/helpers/Path.java new file mode 100644 index 00000000..06567592 --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/helpers/Path.java @@ -0,0 +1,137 @@ +package org.mian.gitnex.helpers; + +import androidx.annotation.NonNull; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringJoiner; + +/** + * @author opyale + */ + +public class Path { + + private final List segments; + private final List onChangedListeners; + + public Path(String... segments) { + + this.segments = new ArrayList<>(Arrays.asList(segments)); + this.onChangedListeners = new ArrayList<>(); + + } + + public interface OnChangedListener { void onChanged(); } + + public Path addListener(OnChangedListener onChangedListener) { + + onChangedListeners.add(onChangedListener); + return this; + + } + + public Path removeListener(OnChangedListener onChangedListener) { + + onChangedListeners.remove(onChangedListener); + return this; + + } + + private void pathChanged() { + + for(OnChangedListener onChangedListener : onChangedListeners) { + onChangedListener.onChanged(); + } + } + + public Path add(String segment) { + + if(segment != null && !segment.trim().isEmpty()) { + + try { + segments.add(URLEncoder.encode(segment, "UTF-8")); + } catch(UnsupportedEncodingException ignored) {} + } + + pathChanged(); + return this; + + } + + public int size() { + + return segments.size(); + } + + public Path join(Path path) { + + this.segments.addAll(path.segments); + + pathChanged(); + return this; + + } + + public Path pop(int count) { + + for(int i=0; i !s.trim().isEmpty()) + .toArray(String[]::new) + ); + + } + + @NonNull + @Override + public String toString() { + + StringJoiner stringJoiner = new StringJoiner("/"); + + for(String segment : segments) + stringJoiner.add(segment); + + return stringJoiner.toString(); + + } + +} diff --git a/app/src/main/java/org/mian/gitnex/helpers/TinyDB.java b/app/src/main/java/org/mian/gitnex/helpers/TinyDB.java index b93962b3..92441fc8 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/TinyDB.java +++ b/app/src/main/java/org/mian/gitnex/helpers/TinyDB.java @@ -15,7 +15,7 @@ import java.util.Map; public class TinyDB { - private static TinyDB tinyDB; + private static volatile TinyDB tinyDB; private final SharedPreferences preferences; @@ -24,11 +24,17 @@ public class TinyDB { } public static synchronized TinyDB getInstance(Context context) { + if(tinyDB == null) { - tinyDB = new TinyDB(context); + synchronized(TinyDB.class) { + if(tinyDB == null) { + tinyDB = new TinyDB(context); + } + } } return tinyDB; + } /** diff --git a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java index 23395ad5..cf31106c 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java +++ b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java @@ -19,15 +19,15 @@ public class MemorizingActivity extends Activity { Intent intent = getIntent(); int decisionId = intent.getIntExtra("DECISION_INTENT_ID", MTMDecision.DECISION_INVALID); - int titleId = intent.getIntExtra("DECISION_TITLE_ID", R.string.mtm_accept_cert); + int titleId = intent.getIntExtra("DECISION_TITLE_ID", R.string.mtmAcceptCert); String cert = intent.getStringExtra("DECISION_INTENT_CERT"); AlertDialog.Builder builder = new AlertDialog.Builder(MemorizingActivity.this); builder.setTitle(titleId); builder.setMessage(cert); - builder.setPositiveButton(R.string.mtm_decision_always, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ALWAYS)); - builder.setNeutralButton(R.string.mtm_decision_abort, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); + builder.setPositiveButton(R.string.mtmDecisionAlways, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ALWAYS)); + builder.setNeutralButton(R.string.mtmDecisionAbort, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); builder.setOnCancelListener(dialog -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); builder.create().show(); diff --git a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java index 2d06e043..cc5161c0 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java +++ b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java @@ -449,10 +449,10 @@ public class MemorizingTrustManager implements X509TrustManager { StringBuilder stringBuilder = new StringBuilder(); if(isPathException(e)) { - stringBuilder.append(context.getString(R.string.mtm_trust_anchor)); + stringBuilder.append(context.getString(R.string.mtmTrustAnchor)); } else if(isExpiredException(e)) { - stringBuilder.append(context.getString(R.string.mtm_cert_expired)); + stringBuilder.append(context.getString(R.string.mtmCertExpired)); } else { // get to the cause @@ -464,9 +464,9 @@ public class MemorizingTrustManager implements X509TrustManager { } stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_connect_anyway)); + stringBuilder.append(context.getString(R.string.mtmConnectAnyway)); stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_cert_details)); + stringBuilder.append(context.getString(R.string.mtmCertDetails)); for(X509Certificate c : chain) { certDetails(stringBuilder, c); @@ -479,7 +479,7 @@ public class MemorizingTrustManager implements X509TrustManager { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(context.getString(R.string.mtm_hostname_mismatch, hostname)); + stringBuilder.append(context.getString(R.string.mtmHostnameMismatch, hostname)); stringBuilder.append("\n\n"); try { @@ -510,9 +510,9 @@ public class MemorizingTrustManager implements X509TrustManager { } stringBuilder.append("\n"); - stringBuilder.append(context.getString(R.string.mtm_connect_anyway)); + stringBuilder.append(context.getString(R.string.mtmConnectAnyway)); stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_cert_details)); + stringBuilder.append(context.getString(R.string.mtmCertDetails)); certDetails(stringBuilder, cert); return stringBuilder.toString(); } @@ -544,7 +544,7 @@ public class MemorizingTrustManager implements X509TrustManager { private void startActivityNotification(Intent intent, int decisionId, String certName) { final PendingIntent call = PendingIntent.getActivity(context, 0, intent, 0); - final String mtmNotification = context.getString(R.string.mtm_notification); + final String mtmNotification = context.getString(R.string.mtmNotification); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "ssl") .setSmallIcon(android.R.drawable.ic_lock_lock) @@ -596,7 +596,7 @@ public class MemorizingTrustManager implements X509TrustManager { private void interactCert(final X509Certificate[] chain, String authType, CertificateException cause) throws CertificateException { - if(interact(certChainMessage(chain, cause), R.string.mtm_accept_cert) == MTMDecision.DECISION_ALWAYS) { + if(interact(certChainMessage(chain, cause), R.string.mtmAcceptCert) == MTMDecision.DECISION_ALWAYS) { storeCert(chain[0]); // only store the server cert, not the whole chain } else { throw (cause); @@ -605,7 +605,7 @@ public class MemorizingTrustManager implements X509TrustManager { private boolean interactHostname(X509Certificate cert, String hostname) { - if(interact(hostNameMessage(cert, hostname), R.string.mtm_accept_server_name) == MTMDecision.DECISION_ALWAYS) { + if(interact(hostNameMessage(cert, hostname), R.string.mtmAcceptServerName) == MTMDecision.DECISION_ALWAYS) { storeCert(hostname, cert); return true; } diff --git a/app/src/main/java/org/mian/gitnex/interfaces/ApiInterface.java b/app/src/main/java/org/mian/gitnex/interfaces/ApiInterface.java deleted file mode 100644 index a1fc22e8..00000000 --- a/app/src/main/java/org/mian/gitnex/interfaces/ApiInterface.java +++ /dev/null @@ -1,440 +0,0 @@ -package org.mian.gitnex.interfaces; - -import com.google.gson.JsonElement; -import org.mian.gitnex.models.APISettings; -import org.mian.gitnex.models.AddEmail; -import org.mian.gitnex.models.AttachmentSettings; -import org.mian.gitnex.models.Branches; -import org.mian.gitnex.models.Collaborators; -import org.mian.gitnex.models.Commits; -import org.mian.gitnex.models.CreateIssue; -import org.mian.gitnex.models.CreateLabel; -import org.mian.gitnex.models.CreatePullRequest; -import org.mian.gitnex.models.CreateStatusOption; -import org.mian.gitnex.models.CronTasks; -import org.mian.gitnex.models.DeleteFile; -import org.mian.gitnex.models.EditFile; -import org.mian.gitnex.models.Emails; -import org.mian.gitnex.models.ExploreRepositories; -import org.mian.gitnex.models.Files; -import org.mian.gitnex.models.GiteaVersion; -import org.mian.gitnex.models.IssueComments; -import org.mian.gitnex.models.IssueReaction; -import org.mian.gitnex.models.Issues; -import org.mian.gitnex.models.Labels; -import org.mian.gitnex.models.MarkdownOption; -import org.mian.gitnex.models.MergePullRequest; -import org.mian.gitnex.models.Milestones; -import org.mian.gitnex.models.NewFile; -import org.mian.gitnex.models.NotificationCount; -import org.mian.gitnex.models.NotificationThread; -import org.mian.gitnex.models.OrgOwner; -import org.mian.gitnex.models.Organization; -import org.mian.gitnex.models.OrganizationRepository; -import org.mian.gitnex.models.Permission; -import org.mian.gitnex.models.PullRequests; -import org.mian.gitnex.models.Releases; -import org.mian.gitnex.models.RepositorySettings; -import org.mian.gitnex.models.RepositoryTransfer; -import org.mian.gitnex.models.Status; -import org.mian.gitnex.models.Teams; -import org.mian.gitnex.models.UISettings; -import org.mian.gitnex.models.UpdateIssueAssignees; -import org.mian.gitnex.models.UpdateIssueState; -import org.mian.gitnex.models.UserHeatmap; -import org.mian.gitnex.models.UserInfo; -import org.mian.gitnex.models.UserOrganizations; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.models.UserSearch; -import org.mian.gitnex.models.UserTokens; -import org.mian.gitnex.models.WatchInfo; -import java.util.List; -import okhttp3.ResponseBody; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.DELETE; -import retrofit2.http.GET; -import retrofit2.http.HTTP; -import retrofit2.http.Header; -import retrofit2.http.PATCH; -import retrofit2.http.POST; -import retrofit2.http.PUT; -import retrofit2.http.Path; -import retrofit2.http.Query; - -/** - * Author M M Arif - */ - -public interface ApiInterface { - - @GET("version") // gitea version API without any auth - Call getGiteaVersion(); - - @GET("version") // gitea version API - Call getGiteaVersionWithBasic(@Header("Authorization") String authorization); - - @GET("version") // gitea version API - Call getGiteaVersionWithOTP(@Header("Authorization") String authorization, @Header("X-Gitea-OTP") int loginOTP); - - @GET("version") // gitea version API - Call getGiteaVersionWithToken(@Header("Authorization") String token); - - @POST("markdown") - Call renderMarkdown(@Header("Authorization") String token, @Body MarkdownOption markdownOption); - - @POST("markdown/raw") - Call renderRawMarkdown(@Header("Authorization") String token, @Body String body); - - @GET("signing-key.gpg") // Get default signing-key.gpg - Call getSigningKey(@Header("Authorization") String token); - - @GET("settings/api") // Get instance's global settings for api - Call getAPISettings(@Header("Authorization") String token); - - @GET("settings/attachment") // Get instance's global settings for attachments - Call getAttachmentSettings(@Header("Authorization") String token); - - @GET("settings/repository") // Get instance's global settings for repositories - Call getRepositorySettings(@Header("Authorization") String token); - - @GET("settings/ui") // Get instance's global settings for ui - Call getUISettings(@Header("Authorization") String token); - - @GET("users/{username}/tokens") // get user token - Call> getUserTokens(@Header("Authorization") String authorization, @Path("username") String loginUid); - - @GET("users/{username}/tokens") // get user token with 2fa otp - Call> getUserTokensWithOTP(@Header("Authorization") String authorization, @Header("X-Gitea-OTP") int loginOTP, @Path("username") String loginUid); - - @POST("users/{username}/tokens") // create new token - Call createNewToken(@Header("Authorization") String authorization, @Path("username") String loginUid, @Body UserTokens jsonStr); - - @POST("users/{username}/tokens") // create new token with 2fa otp - Call createNewTokenWithOTP(@Header("Authorization") String authorization, @Header("X-Gitea-OTP") int loginOTP, @Path("username") String loginUid, @Body UserTokens jsonStr); - - @DELETE("users/{username}/tokens/{token}") // delete token by ID - Call deleteToken(@Header("Authorization") String authorization, @Path("username") String loginUid, @Path("token") int tokenID); - - @DELETE("users/{username}/tokens/{token}") // delete token by ID with 2fa otp - Call deleteTokenWithOTP(@Header("Authorization") String authorization, @Header("X-Gitea-OTP") int loginOTP, @Path("username") String loginUid, @Path("token") int tokenID); - - @GET("notifications") // List users's notification threads - Call> getNotificationThreads(@Header("Authorization") String token, @Query("all") Boolean all, @Query("status-types") String[] statusTypes, @Query("since") String since, @Query("before") String before, @Query("page") Integer page, @Query("limit") Integer limit); - - @PUT("notifications") // Mark notification threads as read, pinned or unread - Call markNotificationThreadsAsRead(@Header("Authorization") String token, @Query("last_read_at") String last_read_at, @Query("all") Boolean all, @Query("status-types") String[] statusTypes, @Query("to-status") String toStatus); - - @GET("notifications/new") // Check if unread notifications exist - Call checkUnreadNotifications(@Header("Authorization") String token); - - @GET("notifications/threads/{id}") // Get notification thread by ID - Call getNotificationThread(@Header("Authorization") String token, @Path("id") Integer id); - - @PATCH("notifications/threads/{id}") // Mark notification thread as read by ID - Call markNotificationThreadAsRead(@Header("Authorization") String token, @Path("id") Integer id, @Query("to-status") String toStatus); - - @GET("repos/{owner}/{repo}/notifications") // List users's notification threads on a specific repo - Call> getRepoNotificationThreads(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("all") String all, @Query("status-types") String[] statusTypes, @Query("since") String since, @Query("before") String before, @Query("page") String page, @Query("limit") String limit); - - @PUT("repos/{owner}/{repo}/notifications") // Mark notification threads as read, pinned or unread on a specific repo - Call markRepoNotificationThreadsAsRead(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("all") Boolean all, @Query("status-types") String[] statusTypes, @Query("to-status") String toStatus, @Query("last_read_at") String last_read_at); - - @GET("user") // username, full name, email - Call getUserInfo(@Header("Authorization") String token); - - @GET("user/orgs") // get user organizations - Call> getUserOrgs(@Header("Authorization") String token); - - @POST("orgs") // create new organization - Call createNewOrganization(@Header("Authorization") String token, @Body UserOrganizations jsonStr); - - @POST("org/{org}/repos") // create new repository under org - Call createNewUserOrgRepository(@Header("Authorization") String token, @Path("org") String orgName, @Body OrganizationRepository jsonStr); - - @GET("user/orgs") // get user organizations - Call> getOrgOwners(@Header("Authorization") String token); - - @GET("user/repos") // get user repositories - Call> getUserRepositories(@Header("Authorization") String token, @Query("page") int page, @Query("limit") int limit); - - @POST("user/repos") // create new repository - Call createNewUserRepository(@Header("Authorization") String token, @Body OrganizationRepository jsonStr); - - @GET("user/followers") // get user followers - Call> getFollowers(@Header("Authorization") String token); - - @GET("user/following") // get following - Call> getFollowing(@Header("Authorization") String token); - - @POST("user/emails") // add new email - Call addNewEmail(@Header("Authorization") String token, @Body AddEmail jsonStr); - - @GET("user/emails") // get user emails - Call> getUserEmails(@Header("Authorization") String token); - - @GET("user/starred") // get user starred repositories - Call> getUserStarredRepos(@Header("Authorization") String token, @Query("page") int page, @Query("limit") int limit); - - @GET("users/{username}/heatmap") // Get a user's heatmap - Call> getUserHeatmap(@Header("Authorization") String token, @Path("username") String username); - - @GET("repos/{owner}/{repo}") // get repo information - Call getUserRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @PATCH("repos/{owner}/{repo}") // patch/update repository properties - Call updateRepositoryProperties(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body UserRepositories jsonStr); - - @DELETE("repos/{owner}/{repo}") // delete repository - Call deleteRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @POST("repos/{owner}/{repo}/transfer") // transfer repository - Call transferRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body RepositoryTransfer jsonStr); - - @GET("repos/{owner}/{repo}/issues") // get issues by repo - Call> getIssues(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("page") int page, @Query("limit") int limit, @Query("type") String requestType, @Query("state") String issueState); - - @GET("repos/{owner}/{repo}/issues/{index}") // get issue by id - Call getIssueByIndex(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex); - - @GET("repos/{owner}/{repo}/issues/{index}/comments") // get issue comments - Call> getIssueComments(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex); - - @POST("repos/{owner}/{repo}/issues/{index}/comments") // reply to issue - Call replyCommentToIssue(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Body Issues jsonStr); - - @GET("repos/{owner}/{repo}/milestones") // get milestones by repo - Call> getMilestones(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Query("page") int page, @Query("limit") int limit, @Query("state") String state); - - @GET("repos/{owner}/{repo}/branches") // get branches - Call> getBranches(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/{owner}/{repo}/releases") // get releases - Call> getReleases(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/{owner}/{repo}/collaborators") // get collaborators list - Call> getCollaborators(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("orgs/{org}/members") // get organization members - Call> getOrgMembers(@Header("Authorization") String token, @Path("org") String ownerName); - - @POST("repos/{owner}/{repo}/milestones") // create new milestone - Call createMilestone(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body Milestones jsonStr); - - @POST("repos/{owner}/{repo}/issues") // create new issue - Call createNewIssue(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body CreateIssue jsonStr); - - @GET("repos/{owner}/{repo}/labels") // get labels list - Call> getLabels(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("orgs/{owner}/labels") // get org labels list - Call> getOrganizationLabels(@Header("Authorization") String token, @Path("owner") String ownerName); - - @POST("orgs/{owner}/labels") // create org label - Call createOrganizationLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Body CreateLabel jsonStr); - - @PATCH("orgs/{owner}/labels/{id}") // update / patch org label - Call patchOrganizationLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("id") int labelID, @Body CreateLabel jsonStr); - - @DELETE("orgs/{owner}/labels/{id}") // delete org label - Call deleteOrganizationLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("id") int labelID); - - @GET("users/{username}/repos") // get current logged in user repositories - Call> getCurrentUserRepositories(@Header("Authorization") String token, @Path("username") String username, @Query("page") int page, @Query("limit") int limit); - - @POST("repos/{owner}/{repo}/labels") // create label - Call createLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body CreateLabel jsonStr); - - @DELETE("repos/{owner}/{repo}/labels/{index}") // delete a label - Call deleteLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int labelIndex); - - @PATCH("repos/{owner}/{repo}/labels/{index}") // update / patch a label - Call patchLabel(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int labelIndex, @Body CreateLabel jsonStr); - - @GET("orgs/{orgName}/repos") // get repositories by org - Call> getReposByOrg(@Header("Authorization") String token, @Path("orgName") String orgName, @Query("page") int page, @Query("limit") int limit); - - @GET("orgs/{orgName}/teams") // get teams by org - Call> getTeamsByOrg(@Header("Authorization") String token, @Path("orgName") String orgName); - - @GET("orgs/{orgName}/members") // get members by org - Call> getMembersByOrg(@Header("Authorization") String token, @Path("orgName") String orgName); - - @GET("teams/{teamIndex}/members") // get team members by org - Call> getTeamMembersByOrg(@Header("Authorization") String token, @Path("teamIndex") int teamIndex); - - @POST("orgs/{orgName}/teams") // create new team - Call createTeamsByOrg(@Header("Authorization") String token, @Path("orgName") String orgName, @Body Teams jsonStr); - - @GET("users/search") // search users - Call getUserBySearch(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("limit") int limit); - - @GET("repos/{owner}/{repo}/collaborators/{collaborator}") // check collaborator in repo - Call checkRepoCollaborator(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("collaborator") String repoCollaborator); - - @DELETE("repos/{owner}/{repo}/collaborators/{username}") // delete a collaborator from repository - Call deleteCollaborator(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("username") String username); - - @PUT("repos/{owner}/{repo}/collaborators/{username}") // add a collaborator to repository - Call addCollaborator(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("username") String username, @Body Permission jsonStr); - - @PATCH("repos/{owner}/{repo}/issues/comments/{commentId}") // edit a comment - Call patchIssueComment(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("commentId") int commentId, @Body IssueComments jsonStr); - - @GET("repos/{owner}/{repo}/issues/comments/{commentId}/reactions") // get comment reactions - Call> getIssueCommentReactions(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("commentId") int commentId); - - @POST("repos/{owner}/{repo}/issues/comments/{commentId}/reactions") // add reaction to a comment - Call setIssueCommentReaction(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("commentId") int commentId, @Body IssueReaction jsonStr); - - @HTTP(method = "DELETE", path = "repos/{owner}/{repo}/issues/comments/{commentId}/reactions", hasBody = true) // delete a reaction of a comment - Call removeIssueCommentReaction(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("commentId") int commentId, @Body IssueReaction jsonStr); - - @GET("repos/{owner}/{repo}/issues/{index}/reactions") // get issue reactions - Call> getIssueReactions(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex); - - @POST("repos/{owner}/{repo}/issues/{index}/reactions") // add reaction to an issue - Call setIssueReaction(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Body IssueReaction jsonStr); - - @HTTP(method = "DELETE", path = "repos/{owner}/{repo}/issues/{index}/reactions", hasBody = true) // delete a reaction of an issue - Call removeIssueReaction(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Body IssueReaction jsonStr); - - @GET("repos/{owner}/{repo}/issues/{index}/labels") // get issue labels - Call> getIssueLabels(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex); - - @PUT("repos/{owner}/{repo}/issues/{index}/labels") // replace an issue's labels - Call updateIssueLabels(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Body Labels jsonStr); - - @GET("repos/{owner}/{repo}/raw/{filename}") // get file contents - Call getFileContents(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("filename") String filename); - - @POST("admin/users") // create new user - Call createNewUser(@Header("Authorization") String token, @Body UserInfo jsonStr); - - @PATCH("repos/{owner}/{repo}/issues/{issueIndex}") // patch issue data - Call patchIssue(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("issueIndex") int issueIndex, @Body CreateIssue jsonStr); - - @GET("orgs/{orgName}") // get an organization - Call getOrganization(@Header("Authorization") String token, @Path("orgName") String orgName); - - @PATCH("repos/{owner}/{repo}/issues/{issueIndex}") // close / reopen issue - Call closeReopenIssue(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("issueIndex") int issueIndex, @Body UpdateIssueState jsonStr); - - @POST("repos/{owner}/{repo}/releases") // create new release - Call createNewRelease(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body Releases jsonStr); - - @PATCH("repos/{owner}/{repo}/issues/{issueIndex}") // patch issue assignees - Call patchIssueAssignees(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("issueIndex") int issueIndex, @Body UpdateIssueAssignees jsonStr); - - @GET("admin/users") // get all users - Call> adminGetUsers(@Header("Authorization") String token); - - @GET("repos/{owner}/{repo}/stargazers") // get all repo stars - Call> getRepoStargazers(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/{owner}/{repo}/subscribers") // get all repo watchers - Call> getRepoWatchers(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/search") // get all the repos which match the query string - Call queryRepos(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("private") Boolean repoTypeInclude, @Query("sort") String sort, @Query("order") String order, @Query("topic") boolean topic, @Query("includeDesc") boolean includeDesc, @Query("template") boolean template, @Query("archived") boolean archived, @Query("limit") int limit, @Query("page") int page); - - @GET("repos/issues/search") // get all the issues which match the query string - Call> queryIssues(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("type") String type, @Query("state") String state, @Query("page") int page); - - @POST("repos/{owner}/{repo}/contents/{file}") // create new file - Call createNewFile(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("file") String fileName, @Body NewFile jsonStr); - - @GET("repos/{owner}/{repo}/contents") // get all the files and dirs of a repository - Call> getFiles(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Query("ref") String ref); - - @GET("repos/{owner}/{repo}/contents/{file}") // get single file contents - Call getSingleFileContents(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("file") String file, @Query("ref") String ref); - - @GET("repos/{owner}/{repo}/contents/{fileDir}") // get all the sub files and dirs of a repository - Call> getDirFiles(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("fileDir") String fileDir, @Query("ref") String ref); - - @HTTP(method = "DELETE", path = "repos/{owner}/{repo}/contents/{filepath}", hasBody = true) // delete a file - Call deleteFile(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("filepath") String filepath, @Body DeleteFile jsonStr); - - @PUT("repos/{owner}/{repo}/contents/{filepath}") // edit/update a file - Call editFile(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("filepath") String filepath, @Body EditFile jsonStr); - - @GET("user/starred/{owner}/{repo}") // check star status of a repository - Call checkRepoStarStatus(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @PUT("user/starred/{owner}/{repo}") // star a repository - Call starRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @DELETE("user/starred/{owner}/{repo}") // un star a repository - Call unStarRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/{owner}/{repo}/subscription") // check watch status of a repository - Call checkRepoWatchStatus(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @PUT("repos/{owner}/{repo}/subscription") // watch a repository - Call watchRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @DELETE("repos/{owner}/{repo}/subscription") // un watch a repository - Call unWatchRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName); - - @GET("repos/{owner}/{repo}/issues/{index}/subscriptions/check") - Call checkIssueWatchStatus(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex); - - @PUT("repos/{owner}/{repo}/issues/{index}/subscriptions/{user}") // subscribe user to issue - Call addIssueSubscriber(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Path("user") String issueSubscriber); - - @DELETE("repos/{owner}/{repo}/issues/{index}/subscriptions/{user}") // unsubscribe user to issue - Call delIssueSubscriber(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int issueIndex, @Path("user") String issueSubscriber); - - @GET("repos/{owner}/{repo}/pulls") // get repository pull requests - Call> getPullRequests(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("page") int page, @Query("state") String state, @Query("limit") int limit); - - @GET("repos/{owner}/{repo}/pulls/{index}.diff") // get pull diff file contents - Call getPullDiffContent(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Path("index") String pullIndex); - - @POST("repos/{owner}/{repo}/pulls/{index}/merge") // merge a pull request - Call mergePullRequest(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int index, @Body MergePullRequest jsonStr); - - @POST("repos/{owner}/{repo}/pulls") // create a pull request - Call createPullRequest(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body CreatePullRequest jsonStr); - - @GET("repos/{owner}/{repo}/pulls/{index}") // get pull request by index - Call getPullRequestByIndex(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Path("index") int index); - - @GET("repos/{owner}/{repo}/commits") // get all commits - Call> getRepositoryCommits(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("page") int page, @Query("sha") String branchName, @Query("limit") int limit); - - @PATCH("repos/{owner}/{repo}/milestones/{index}") // close / reopen milestone - Call closeReopenMilestone(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int index, @Body Milestones jsonStr); - - @DELETE("repos/{owner}/{repo}/issues/comments/{id}") // delete own comment from issue - Call deleteComment(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("id") int commentIndex); - - @GET("teams/{teamId}/members/{username}") // check team member - Call checkTeamMember(@Header("Authorization") String token, @Path("teamId") int teamId, @Path("username") String username); - - @PUT("teams/{teamId}/members/{username}") // add new team member - Call addTeamMember(@Header("Authorization") String token, @Path("teamId") int teamId, @Path("username") String username); - - @DELETE("teams/{teamId}/members/{username}") // remove team member - Call removeTeamMember(@Header("Authorization") String token, @Path("teamId") int teamId, @Path("username") String username); - - @DELETE("repos/{owner}/{repo}/branches/{branch}") // delete branch - Call deleteBranch(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("branch") String branchName); - - @GET("repos/{owner}/{repo}/forks") // get all repo forks - Call> getRepositoryForks(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Query("page") int page, @Query("limit") int limit); - - @POST("repos/{owner}/{repo}/statuses/{sha}") // Create a commit status - Call createCommitStatus(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Path("sha") String sha, @Body CreateStatusOption createStatusOption); - - @GET("repos/{owner}/{repo}/statuses/{sha}") // Get a commit's statuses - Call> getCommitStatuses(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("sort") String sort, @Query("state") String state, @Query("page") int page, @Query("limit") int limit); - - @GET("admin/cron") // get cron tasks - Call> adminGetCronTasks(@Header("Authorization") String token, @Query("page") int page, @Query("limit") int limit); - - @POST("admin/cron/{taskName}") // run cron task - Call adminRunCronTask(@Header("Authorization") String token, @Path("taskName") String taskName); - -} diff --git a/app/src/main/java/org/mian/gitnex/interfaces/WebInterface.java b/app/src/main/java/org/mian/gitnex/interfaces/WebInterface.java deleted file mode 100644 index 21ace76e..00000000 --- a/app/src/main/java/org/mian/gitnex/interfaces/WebInterface.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.mian.gitnex.interfaces; - -import okhttp3.ResponseBody; -import retrofit2.Call; -import retrofit2.http.GET; -import retrofit2.http.Path; - -/** - * Author M M Arif - */ - -public interface WebInterface { - - @GET("{owner}/{repo}/pulls/{index}.diff") // get pull diff file contents - Call getPullDiffContent(@Path("owner") String owner, @Path("repo") String repo, @Path("index") String pullIndex); - -} diff --git a/app/src/main/java/org/mian/gitnex/models/APISettings.java b/app/src/main/java/org/mian/gitnex/models/APISettings.java deleted file mode 100644 index ff633aea..00000000 --- a/app/src/main/java/org/mian/gitnex/models/APISettings.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class APISettings { - - private int default_git_trees_per_page; - private int default_max_blob_size; - private int default_paging_num; - private int max_response_items; - - public int getDefault_git_trees_per_page() { - - return default_git_trees_per_page; - } - - public int getDefault_max_blob_size() { - - return default_max_blob_size; - } - - public int getDefault_paging_num() { - - return default_paging_num; - } - - public int getMax_response_items() { - - return max_response_items; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/AddEmail.java b/app/src/main/java/org/mian/gitnex/models/AddEmail.java deleted file mode 100644 index fcc6c751..00000000 --- a/app/src/main/java/org/mian/gitnex/models/AddEmail.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class AddEmail { - - private List emails; - - public AddEmail(List emails) { - this.emails = emails; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/AttachmentSettings.java b/app/src/main/java/org/mian/gitnex/models/AttachmentSettings.java deleted file mode 100644 index 0f2dcef0..00000000 --- a/app/src/main/java/org/mian/gitnex/models/AttachmentSettings.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class AttachmentSettings { - - private String allowed_types; - private boolean enabled; - private float max_files; - private float max_size; - - public String getAllowed_types() { - - return allowed_types; - } - - public boolean isEnabled() { - - return enabled; - } - - public float getMax_files() { - - return max_files; - } - - public float getMax_size() { - - return max_size; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Branches.java b/app/src/main/java/org/mian/gitnex/models/Branches.java deleted file mode 100644 index 1283d281..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Branches.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; - -/** - * Author M M Arif - */ - -public class Branches { - - private String name; - - private commitObject commit; - - public Branches(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public class commitObject { - - private String id; - private String message; - private String url; - private Date timestamp; - - private authorObject author; - - public class authorObject { - - private String name; - private String email; - private String username; - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public String getUsername() { - return username; - } - } - - public String getId() { - return id; - } - - public String getMessage() { - return message; - } - - public authorObject getAuthor() { - return author; - } - - public String getUrl() { - return url; - } - - public Date getTimestamp() { - return timestamp; - } - } - - public commitObject getCommit() { - return commit; - } - - @Override - public String toString() { - return name; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/Collaborators.java b/app/src/main/java/org/mian/gitnex/models/Collaborators.java deleted file mode 100644 index 2edd579f..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Collaborators.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Objects; - -/** - * Author M M Arif - */ - -public class Collaborators { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public Collaborators(String full_name, String login, String avatar_url) { - - this.full_name = full_name; - this.login = login; - this.avatar_url = avatar_url; - } - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public String getUsername() { - return username; - } - - @Override - public boolean equals(Object o) { - - if(this == o) { - return true; - } - if(o == null || getClass() != o.getClass()) { - return false; - } - Collaborators that = (Collaborators) o; - return Objects.equals(login, that.login); - } - - @Override - public int hashCode() { - - return Objects.hash(login); - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Commits.java b/app/src/main/java/org/mian/gitnex/models/Commits.java deleted file mode 100644 index 9972ac65..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Commits.java +++ /dev/null @@ -1,262 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; -import java.util.List; - -/** - * Author M M Arif - */ - -public class Commits { - - private String url; - private String sha; - private String html_url; - private commitObject commit; - private authorObject author; - private committerObject committer; - private List parent; - - public String getUrl() { - return url; - } - - public String getSha() { - return sha; - } - - public String getHtml_url() { - return html_url; - } - - public Commits(String url) { - this.url = url; - } - - public static class commitObject { - - private String url; - private CommitAuthor author; - private CommitCommitter committer; - private String message; - private CommitTree tree; - - public static class CommitAuthor { - - String name; - String email; - Date date; - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public Date getDate() { - return date; - } - - } - - public static class CommitCommitter { - - String name; - String email; - Date date; - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public Date getDate() { - return date; - } - - } - - public static class CommitTree { - - String url; - String sha; - - public String getUrl() { - return url; - } - - public String getSha() { - return sha; - } - - } - - public String getUrl() { - return url; - } - - public String getMessage() { - return message; - } - - public CommitAuthor getAuthor() { - return author; - } - - public CommitCommitter getCommitter() { - return committer; - } - - public CommitTree getTree() { - return tree; - } - } - - public static class authorObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private Boolean is_admin; - private String last_login; - private String created; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public Boolean getIs_admin() { - return is_admin; - } - - public String getLast_login() { - return last_login; - } - - public String getCreated() { - return created; - } - - public String getUsername() { - return username; - } - } - - public static class committerObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private Boolean is_admin; - private String last_login; - private String created; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public Boolean getIs_admin() { - return is_admin; - } - - public String getLast_login() { - return last_login; - } - - public String getCreated() { - return created; - } - - public String getUsername() { - return username; - } - - } - - public static class parentObject { - - private String url; - private String sha; - - public String getUrl() { - return url; - } - - public String getSha() { - return sha; - } - } - - public commitObject getCommit() { - return commit; - } - - public authorObject getAuthor() { - return author; - } - - public committerObject getCommitter() { - return committer; - } - - public List getParent() { - return parent; - } - -} - - - diff --git a/app/src/main/java/org/mian/gitnex/models/CreateIssue.java b/app/src/main/java/org/mian/gitnex/models/CreateIssue.java deleted file mode 100644 index 974cb513..00000000 --- a/app/src/main/java/org/mian/gitnex/models/CreateIssue.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class CreateIssue { - - private String body; - private boolean closed; - private String due_date; - private int milestone; - private String title; - - private List assignees; - private List labels; - - public CreateIssue(String assignee, String body, boolean closed, String due_date, int milestone, String title, List assignees, List labels) { - this.body = body; - this.closed = closed; - this.due_date = due_date; - this.milestone = milestone; - this.title = title; - this.assignees = assignees; - this.labels = labels; - } - - public CreateIssue(String title, String body, String due_date, int milestone) { - this.title = title; - this.body = body; - this.due_date = due_date; - this.milestone = milestone; - } - - private class Assignees { - } - - private class Labels { - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/CreateLabel.java b/app/src/main/java/org/mian/gitnex/models/CreateLabel.java deleted file mode 100644 index 65d49893..00000000 --- a/app/src/main/java/org/mian/gitnex/models/CreateLabel.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class CreateLabel { - - private String name; - private String color; - - public CreateLabel(String name, String color) { - this.name = name; - this.color = color; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/CreatePullRequest.java b/app/src/main/java/org/mian/gitnex/models/CreatePullRequest.java deleted file mode 100644 index 4d4a1e9f..00000000 --- a/app/src/main/java/org/mian/gitnex/models/CreatePullRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class CreatePullRequest { - - private String title; - private String body; - private String assignee; - private String base; - private String head; - private int milestone; - private String due_date; - private String message; - - private List assignees; - private List labels; - - public CreatePullRequest(String title, String body, String assignee, String base, String head, int milestone, String due_date, List assignees, List labels) { - - this.title = title; - this.body = body; - this.assignee = assignee; - this.base = base; // merge into branch - this.head = head; // pull from branch - this.milestone = milestone; - this.due_date = due_date; - this.assignees = assignees; - this.labels = labels; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/CreateStatusOption.java b/app/src/main/java/org/mian/gitnex/models/CreateStatusOption.java deleted file mode 100644 index 74cdc8d8..00000000 --- a/app/src/main/java/org/mian/gitnex/models/CreateStatusOption.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class CreateStatusOption { - - private String context; - private String description; - private String statusState; - private String target_url; - - public CreateStatusOption(String context, String description, String statusState, String target_url) { - this.context = context; - this.description = description; - this.statusState = statusState; - this.target_url = target_url; - } - - public String getContext() { - return context; - } - - public String getDescription() { - return description; - } - - public String getStatusState() { - return statusState; - } - - public String getTarget_url() { - return target_url; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/CronTasks.java b/app/src/main/java/org/mian/gitnex/models/CronTasks.java deleted file mode 100644 index 699abcfa..00000000 --- a/app/src/main/java/org/mian/gitnex/models/CronTasks.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; - -/** - * Author M M Arif - */ - -public class CronTasks { - - private String name; - private String schedule; - private Date next; - private Date prev; - private int exec_times; - - public String getName() { - - return name; - } - - public String getSchedule() { - - return schedule; - } - - public Date getNext() { - - return next; - } - - public Date getPrev() { - - return prev; - } - - public int getExec_times() { - - return exec_times; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/DeleteFile.java b/app/src/main/java/org/mian/gitnex/models/DeleteFile.java deleted file mode 100644 index 35d19ae2..00000000 --- a/app/src/main/java/org/mian/gitnex/models/DeleteFile.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class DeleteFile { - - private String branch; - private String message; - private String new_branch; - private String sha; - - public String getBranch() { - - return branch; - } - - public void setBranch(String branch) { - - this.branch = branch; - } - - public String getMessage() { - - return message; - } - - public void setMessage(String message) { - - this.message = message; - } - - public String getNew_branch() { - - return new_branch; - } - - public void setNew_branch(String new_branch) { - - this.new_branch = new_branch; - } - - public String getSha() { - - return sha; - } - - public void setSha(String sha) { - - this.sha = sha; - } - - public DeleteFile(String branch, String message, String new_branch, String sha) { - this.branch = branch; - this.message = message; - this.new_branch = new_branch; - this.sha = sha; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/EditFile.java b/app/src/main/java/org/mian/gitnex/models/EditFile.java deleted file mode 100644 index 4461ada0..00000000 --- a/app/src/main/java/org/mian/gitnex/models/EditFile.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class EditFile { - - private String branch; - private String message; - private String new_branch; - private String sha; - private String content; - - public String getBranch() { - - return branch; - } - - public void setBranch(String branch) { - - this.branch = branch; - } - - public String getMessage() { - - return message; - } - - public void setMessage(String message) { - - this.message = message; - } - - public String getNew_branch() { - - return new_branch; - } - - public void setNew_branch(String new_branch) { - - this.new_branch = new_branch; - } - - public String getSha() { - - return sha; - } - - public void setSha(String sha) { - - this.sha = sha; - } - - public String getContent() { - - return content; - } - - public void setContent(String content) { - - this.content = content; - } - - public EditFile(String branch, String message, String new_branch, String sha, String content) { - this.branch = branch; - this.message = message; - this.new_branch = new_branch; - this.sha = sha; - this.content = content; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Emails.java b/app/src/main/java/org/mian/gitnex/models/Emails.java deleted file mode 100644 index 069ac710..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Emails.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class Emails { - - private String email; - private Boolean verified; - private Boolean primary; - - public String getEmail() { - return email; - } - - public Boolean getVerified() { - return verified; - } - - public Boolean getPrimary() { - return primary; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/ExploreRepositories.java b/app/src/main/java/org/mian/gitnex/models/ExploreRepositories.java deleted file mode 100644 index 07aab8dc..00000000 --- a/app/src/main/java/org/mian/gitnex/models/ExploreRepositories.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.ArrayList; - -/** - * Author M M Arif - */ - -public class ExploreRepositories { - - private ArrayList data; - private Boolean ok; - - public ArrayList getSearchedData() { - return data; - } - - public Boolean getOk() { - return ok; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/FileDiffView.java b/app/src/main/java/org/mian/gitnex/models/FileDiffView.java deleted file mode 100644 index ddb5d8b0..00000000 --- a/app/src/main/java/org/mian/gitnex/models/FileDiffView.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.mian.gitnex.models; - -import androidx.annotation.NonNull; -import java.util.List; - -/** - * Author M M Arif - * Author 6543 - */ - -public class FileDiffView { - - private String fileNewName; - private String fileOldName; - private String diffType; - private String fileInfo; - private Stats stats; - private List contents; - - public class Stats { - - private int lineAdded; - private int lineRemoved; - - public Stats(int added, int removed) { - - this.lineAdded = added; - this.lineRemoved = removed; - } - - public int getAdded() { - - return lineAdded; - } - - public int getRemoved() { - - return lineRemoved; - } - - @NonNull - public String toString() { - - return "+" + this.lineAdded + ", -" + this.lineRemoved; - } - - } - - public static class Content { - - private int lineAdded; - private int lineRemoved; - private int oldLineStart; - private int newLineStart; - private String raw; - - public Content(String content) { - - this.raw = content; - } - - public Content(String content, int oldStart, int newStart, int removed, int added) { - - this.raw = content; - this.lineAdded = added; - this.lineRemoved = removed; - this.oldLineStart = oldStart; - this.newLineStart = newStart; - } - - public String getRaw() { - - return raw; - } - - public int getLineAdded() { - - return this.lineAdded; - } - - public int getLineRemoved() { - - return this.lineRemoved; - } - - public int getOldLineStart() { - - return this.oldLineStart; - } - - public int getNewLineStart() { - - return this.newLineStart; - } - - } - - public FileDiffView(String oldName, String newName, String diffType, String fileInfo, List fileContents) { - - this.fileNewName = newName.trim(); - this.fileOldName = oldName.trim(); - this.diffType = diffType; - this.fileInfo = fileInfo; - this.contents = fileContents; - this.stats = new Stats(0, 0); - if(fileContents != null) { - for(Content content : this.contents) { - stats.lineAdded += content.lineAdded; - stats.lineRemoved += content.lineRemoved; - } - } - - } - - public String getFileName() { - - if(fileOldName.length() != 0 && !fileOldName.equals(fileNewName)) { - return fileOldName + " -> " + fileNewName; - } - return fileNewName; - } - - public boolean isFileBinary() { - - return diffType.equals("binary"); - } - - public String getFileInfo() { - - if(diffType.equals("binary")) { - return diffType + " " + fileInfo; - } - - if(fileInfo.equals("change") && this.stats != null) { - return this.stats.toString(); - } - - return fileInfo; - } - - @NonNull - public String toString() { - - StringBuilder raw = new StringBuilder(); - if(this.contents != null) { - for(Content c : this.contents) { - raw.append(c.getRaw()); - } - } - return raw.toString(); - } - - @NonNull - public List getFileContents() { - - return this.contents; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Files.java b/app/src/main/java/org/mian/gitnex/models/Files.java deleted file mode 100644 index 4d2509af..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Files.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class Files { - - private String name; - private String path; - private String sha; - private String type; - private int size; - private String encoding; - private String content; - private String target; - private String url; - private String html_url; - private String git_url; - private String download_url; - private String submodule_git_url; - - public String getName() { - return name; - } - - public String getPath() { - return path; - } - - public String getSha() { - return sha; - } - - public String getType() { - return type; - } - - public int getSize() { - return size; - } - - public String getEncoding() { - return encoding; - } - - public String getContent() { - return content; - } - - public String getTarget() { - return target; - } - - public String getUrl() { - return url; - } - - public String getHtml_url() { - return html_url; - } - - public String getGit_url() { - return git_url; - } - - public String getDownload_url() { - return download_url; - } - - public String getSubmodule_git_url() { - return submodule_git_url; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/GiteaVersion.java b/app/src/main/java/org/mian/gitnex/models/GiteaVersion.java deleted file mode 100644 index d285396d..00000000 --- a/app/src/main/java/org/mian/gitnex/models/GiteaVersion.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class GiteaVersion { - - private String version; - - public String getVersion() { - return version; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/IssueComments.java b/app/src/main/java/org/mian/gitnex/models/IssueComments.java deleted file mode 100644 index ba0d0c4c..00000000 --- a/app/src/main/java/org/mian/gitnex/models/IssueComments.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; - -/** - * Author M M Arif - */ - -public class IssueComments { - - private int id; - private String html_url; - private String pull_request_url; - private String issue_url; - private String body; - private Date created_at; - private Date updated_at; - - private userObject user; - - public IssueComments(String body) { - - this.body = body; - } - - public class userObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public int getId() { - - return id; - } - - public String getLogin() { - - return login; - } - - public String getFull_name() { - - return full_name; - } - - public String getEmail() { - - return email; - } - - public String getAvatar_url() { - - return avatar_url; - } - - public String getLanguage() { - - return language; - } - - public String getUsername() { - - return username; - } - - } - - public int getId() { - - return id; - } - - public String getHtml_url() { - - return html_url; - } - - public String getPull_request_url() { - - return pull_request_url; - } - - public String getIssue_url() { - - return issue_url; - } - - public String getBody() { - - return body; - } - - public Date getCreated_at() { - - return created_at; - } - - public userObject getUser() { - - return user; - } - - public Date getUpdated_at() { - - return updated_at; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/IssueReaction.java b/app/src/main/java/org/mian/gitnex/models/IssueReaction.java deleted file mode 100644 index 74fcc838..00000000 --- a/app/src/main/java/org/mian/gitnex/models/IssueReaction.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; - -/** - * Author 6543 - */ - -public class IssueReaction { - - private String content; - private userObject user; - private Date created_at; - - public IssueReaction(String content) { - this.content = content; - } - - public static class userObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public String getUsername() { - return username; - } - - } - - public String getContent() { - return content; - } - - public userObject getUser() { - return user; - } - - public Date getCreated_at() { - return created_at; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Issues.java b/app/src/main/java/org/mian/gitnex/models/Issues.java deleted file mode 100644 index b5269176..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Issues.java +++ /dev/null @@ -1,305 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; -import java.util.List; - -/** - * Author M M Arif - */ - -public class Issues { - - private int id; - private String url; - private String html_url; - private int number; - private String title; - private String body; - private String state; - private int comments; - private Date created_at; - private Date updated_at; - private Date due_date; - private Date closed_at; - - private userObject user; - private List labels; - private pullRequestObject pull_request; - private milestoneObject milestone; - private List assignees; - private repositoryObject repository; - - public Issues(String body) { - this.body = body; - } - - public static class userObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public String getUsername() { - return username; - } - - } - - public static class labelsObject { - - private int id; - private String name; - private String color; - private String url; - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getColor() { - return color; - } - - public String getUrl() { - return url; - } - } - - public static class pullRequestObject { - - private boolean merged; - private String merged_at; - - public boolean isMerged() { - return merged; - } - - public String getMerged_at() { - return merged_at; - } - } - - public static class milestoneObject { - - private int id; - private String title; - private String description; - private String state; - private String open_issues; - private String closed_issues; - private String closed_at; - private String due_on; - - public int getId() { - return id; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public String getState() { - return state; - } - - public String getOpen_issues() { - return open_issues; - } - - public String getClosed_issues() { - return closed_issues; - } - - public String getClosed_at() { - return closed_at; - } - - public String getDue_on() { - return due_on; - } - } - - public static class assigneesObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public String getUsername() { - return username; - } - } - - public static class repositoryObject { - - private int id; - private String full_name; - private String name; - private String owner; - - public int getId() { - - return id; - } - - public String getFull_name() { - - return full_name; - } - - public String getName() { - - return name; - } - - public String getOwner() { - - return owner; - } - - } - - public int getId() { - return id; - } - - public String getUrl() { - return url; - } - - public int getNumber() { - return number; - } - - public String getTitle() { - return title; - } - - public String getBody() { - return body; - } - - public String getState() { - return state; - } - - public int getComments() { - return comments; - } - - public Date getCreated_at() { - return created_at; - } - - public Date getUpdated_at() { - return updated_at; - } - - public Date getDue_date() { - return due_date; - } - - public Date getClosed_at() { - return closed_at; - } - - public userObject getUser() { - return user; - } - - public List getLabels() { - return labels; - } - - public pullRequestObject getPull_request() { - return pull_request; - } - - public milestoneObject getMilestone() { - return milestone; - } - - public List getAssignees() { - return assignees; - } - - public String getHtml_url() { - - return html_url; - } - - public void setHtml_url(String html_url) { - - this.html_url = html_url; - } - - public repositoryObject getRepository() { - - return repository; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Labels.java b/app/src/main/java/org/mian/gitnex/models/Labels.java deleted file mode 100644 index 90630930..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Labels.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class Labels { - - private int id; - private String name; - private String color; - private String url; - private List labels; - - public Labels(String name, String color) { - this.name = name; - this.color = color; - } - - public Labels(List labels) { - this.labels = labels; - } - - public Labels(int id, String name, String color) { - this.id = id; - this.name = name; - this.color = color; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getColor() { - return color; - } - - public String getUrl() { - return url; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/MarkdownOption.java b/app/src/main/java/org/mian/gitnex/models/MarkdownOption.java deleted file mode 100644 index 444dea44..00000000 --- a/app/src/main/java/org/mian/gitnex/models/MarkdownOption.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class MarkdownOption { - - private String Context; - private String Mode; - private String Text; - private boolean Wiki; - - public MarkdownOption(String context, String mode, String text, boolean wiki) { - - Context = context; - Mode = mode; - Text = text; - Wiki = wiki; - } - - public String getContext() { - - return Context; - } - - public String getMode() { - - return Mode; - } - - public String getText() { - - return Text; - } - - public boolean isWiki() { - - return Wiki; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/MergePullRequest.java b/app/src/main/java/org/mian/gitnex/models/MergePullRequest.java deleted file mode 100644 index 1d142def..00000000 --- a/app/src/main/java/org/mian/gitnex/models/MergePullRequest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class MergePullRequest { - - private String Do; - private String MergeMessageField; - private String MergeTitleField; - - public MergePullRequest(String Do, String MergeMessageField, String MergeTitleField) { - - this.Do = Do; - this.MergeMessageField = MergeMessageField; - this.MergeTitleField = MergeTitleField; - - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/MergePullRequestSpinner.java b/app/src/main/java/org/mian/gitnex/models/MergePullRequestSpinner.java deleted file mode 100644 index 6feb5073..00000000 --- a/app/src/main/java/org/mian/gitnex/models/MergePullRequestSpinner.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.mian.gitnex.models; - -import androidx.annotation.NonNull; - -/** - * Author M M Arif - */ - -public class MergePullRequestSpinner { - - private String id; - private String mergerMethod; - - public MergePullRequestSpinner(String id, String mergerMethod) { - this.id = id; - this.mergerMethod = mergerMethod; - } - - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - private String getMergerMethod() { - return mergerMethod; - } - - public void setName(String mergerMethod) { - this.mergerMethod = mergerMethod; - } - - @NonNull - @Override - public String toString() { - return mergerMethod; - } - - @Override - public boolean equals(Object obj) { - - if(obj instanceof MergePullRequestSpinner){ - - MergePullRequestSpinner spinner = (MergePullRequestSpinner )obj; - return spinner.getMergerMethod().equals(mergerMethod) && spinner.getId().equals(id); - - } - - return false; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Milestones.java b/app/src/main/java/org/mian/gitnex/models/Milestones.java deleted file mode 100644 index 0a16f2c2..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Milestones.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class Milestones { - - private int id; - private String title; - private String description; - private String state; - private int open_issues; - private int closed_issues; - private String due_on; - - public Milestones(String description, String title, String due_on) { - this.description = description; - this.title = title; - this.due_on = due_on; - } - - public Milestones(int id, String title) { - this.id = id; - this.title = title; - } - - public Milestones(String state) { - this.state = state; - } - - public int getId() { - return id; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public String getState() { - return state; - } - - public int getOpen_issues() { - return open_issues; - } - - public int getClosed_issues() { - return closed_issues; - } - - public String getDue_on() { - return due_on; - } - - @Override - public String toString() { - return title; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/NewFile.java b/app/src/main/java/org/mian/gitnex/models/NewFile.java deleted file mode 100644 index 3d13067c..00000000 --- a/app/src/main/java/org/mian/gitnex/models/NewFile.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class NewFile { - - private String branch; - private String content; - private String message; - private String new_branch; - - private authorObject author; - private committerObject committer; - - public String getBranch() { - return branch; - } - - public void setBranch(String branch) { - this.branch = branch; - } - - public String getContents() { - return content; - } - - public void setContents(String contents) { - this.content = contents; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getNew_branch() { - return new_branch; - } - - public void setNew_branch(String new_branch) { - this.new_branch = new_branch; - } - - public static class authorObject { - - private String email; - private String name; - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - } - - public static class committerObject { - - private String email; - private String name; - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - } - - public NewFile(String branch, String content, String message, String new_branch) { - this.branch = branch; - this.content = content; - this.message = message; - this.new_branch = new_branch; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/NotificationCount.java b/app/src/main/java/org/mian/gitnex/models/NotificationCount.java deleted file mode 100644 index 840a00cb..00000000 --- a/app/src/main/java/org/mian/gitnex/models/NotificationCount.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.mian.gitnex.models; - -import com.google.gson.annotations.SerializedName; - -/** - * Author M M Arif - */ - -public class NotificationCount { - - @SerializedName("new") - private int counter; - - public int getCounter() { - - return counter; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/NotificationSubject.java b/app/src/main/java/org/mian/gitnex/models/NotificationSubject.java deleted file mode 100644 index 3c05f69d..00000000 --- a/app/src/main/java/org/mian/gitnex/models/NotificationSubject.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class NotificationSubject { - private String latest_comment_url; - private String title; - private String type; - private String url; - - public NotificationSubject(String latest_comment_url, String title, String type, String url) { - - this.latest_comment_url = latest_comment_url; - this.title = title; - this.type = type; - this.url = url; - } - - public String getLatest_comment_url() { - return latest_comment_url; - } - - public String getTitle() { - return title; - } - - public String getType() { - return type; - } - - public String getUrl() { - return url; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/NotificationThread.java b/app/src/main/java/org/mian/gitnex/models/NotificationThread.java deleted file mode 100644 index 322400f5..00000000 --- a/app/src/main/java/org/mian/gitnex/models/NotificationThread.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class NotificationThread { - private int id; - private boolean pinned; - private UserRepositories repository; - private NotificationSubject subject; - private boolean unread; - private String updated_at; - private String url; - - public NotificationThread(int id, boolean pinned, UserRepositories repository, NotificationSubject subject, boolean unread, String updated_at, String url) { - - this.id = id; - this.pinned = pinned; - this.repository = repository; - this.subject = subject; - this.unread = unread; - this.updated_at = updated_at; - this.url = url; - } - - public int getId() { - return id; - } - - public boolean isPinned() { - return pinned; - } - - public UserRepositories getRepository() { - return repository; - } - - public NotificationSubject getSubject() { - return subject; - } - - public boolean isUnread() { - return unread; - } - - public String getUpdated_at() { - return updated_at; - } - - public String getUrl() { - return url; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/OrgOwner.java b/app/src/main/java/org/mian/gitnex/models/OrgOwner.java deleted file mode 100644 index 7b1eceaf..00000000 --- a/app/src/main/java/org/mian/gitnex/models/OrgOwner.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class OrgOwner { - - private int id; - private String username; - - public OrgOwner(String username) { - this.username = username; - } - - public String getUsername() { - return username; - } - - public int getId() { - return id; - } - - @Override - public String toString() { - return username; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/Organization.java b/app/src/main/java/org/mian/gitnex/models/Organization.java deleted file mode 100644 index 3649b1e2..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Organization.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class Organization { - - private int id; - private String avatar_url; - private String description; - private String full_name; - private String location; - private String username; - private String website; - - public int getId() { - return id; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getDescription() { - return description; - } - - public String getFull_name() { - return full_name; - } - - public String getLocation() { - return location; - } - - public String getUsername() { - return username; - } - - public String getWebsite() { - return website; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/OrganizationRepository.java b/app/src/main/java/org/mian/gitnex/models/OrganizationRepository.java deleted file mode 100644 index 473d0b51..00000000 --- a/app/src/main/java/org/mian/gitnex/models/OrganizationRepository.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.mian.gitnex.models; - -import com.google.gson.annotations.SerializedName; - -/** - * Author M M Arif - */ - -public class OrganizationRepository { - - private boolean auto_init; - private String description; - private String gitignores; - private String license; - private String name; - private String readme; - - @SerializedName("private") - private boolean is_private; - - public OrganizationRepository(boolean auto_init, String description, String gitignores, String license, String name, boolean is_private, String readme) { - this.auto_init = auto_init; - this.description = description; - this.gitignores = gitignores; - this.license = license; - this.name = name; - this.is_private = is_private; - this.readme = readme; - } - - public void setAuto_init(boolean auto_init) { - this.auto_init = auto_init; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setGitignores(String gitignores) { - this.gitignores = gitignores; - } - - public void setLicense(String license) { - this.license = license; - } - - public void setName(String name) { - this.name = name; - } - - public void setIs_private(boolean is_private) { - this.is_private = is_private; - } - - public void setReadme(String readme) { - this.readme = readme; - } - - public boolean isAuto_init() { - return auto_init; - } - - public String getDescription() { - return description; - } - - public String getGitignores() { - return gitignores; - } - - public String getLicense() { - return license; - } - - public String getName() { - return name; - } - - public boolean isIs_private() { - return is_private; - } - - public String getReadme() { - return readme; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/Permission.java b/app/src/main/java/org/mian/gitnex/models/Permission.java deleted file mode 100644 index fc61892d..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Permission.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class Permission { - - private String permission; - - public Permission(String permission) { - this.permission = permission; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/PullRequests.java b/app/src/main/java/org/mian/gitnex/models/PullRequests.java deleted file mode 100644 index d7e0d5ab..00000000 --- a/app/src/main/java/org/mian/gitnex/models/PullRequests.java +++ /dev/null @@ -1,883 +0,0 @@ -package org.mian.gitnex.models; - -import com.google.gson.annotations.SerializedName; -import java.util.Date; -import java.util.List; - -/** - * Author M M Arif - */ - -public class PullRequests { - - private int id; - private String body; - private int comments; - private String diff_url; - private String html_url; - private String merge_base; - private String merge_commit_sha; - private boolean mergeable; - private boolean merged; - private int number; - private String patch_url; - private String state; - private String title; - private String url; - private Date closed_at; - private Date created_at; - private Date due_date; - private Date merged_at; - private Date updated_at; - - private userObject user; - private List labels; - private List assignees; - private mergedByObject merged_by; - private milestoneObject milestone; - private baseObject base; - private headObject head; - - public PullRequests(String body) { - this.body = body; - } - - public static class headObject { - - private int repo_id; - private String label; - private String ref; - private String sha; - - private repoObject repo; - - public static class repoObject { - - private int repo_id; - private boolean allow_merge_commits; - private boolean allow_rebase; - private boolean allow_rebase_explicit; - private boolean allow_squash_merge; - private boolean archived; - private boolean empty; - private boolean fork; - private boolean has_issues; - private boolean has_pull_requests; - private boolean has_wiki; - private boolean ignore_whitespace_conflicts; - @SerializedName("private") - private boolean privateFlag; - private boolean mirror; - private String avatar_url; - private String clone_url; - private String default_branch; - private String description; - private String full_name; - private String html_url; - private String name; - private String ssh_url; - private String website; - private int forks_count; - private int id; - private int open_issues_count; - private int open_pr_counter; - private int release_counter; - private int size; - private int stars_count; - private int watchers_count; - private Date created_at; - private Date updated_at; - - private ownerObject owner; - private permissionsObject permissions; - - public static class ownerObject { - - private int repo_id; - private boolean is_admin; - private String avatar_url; - private String email; - private String full_name; - private String language; - private String login; - private Date created; - - public int getRepo_id() { - return repo_id; - } - - public boolean isIs_admin() { - return is_admin; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getEmail() { - return email; - } - - public String getFull_name() { - return full_name; - } - - public String getLanguage() { - return language; - } - - public String getLogin() { - return login; - } - - public Date getCreated() { - return created; - } - } - - public static class permissionsObject { - - private boolean admin; - private boolean pull; - private boolean push; - - public boolean isAdmin() { - return admin; - } - - public boolean isPull() { - return pull; - } - - public boolean isPush() { - return push; - } - } - - public int getRepo_id() { - return repo_id; - } - - public boolean isAllow_merge_commits() { - return allow_merge_commits; - } - - public boolean isAllow_rebase() { - return allow_rebase; - } - - public boolean isAllow_rebase_explicit() { - return allow_rebase_explicit; - } - - public boolean isAllow_squash_merge() { - return allow_squash_merge; - } - - public boolean isArchived() { - return archived; - } - - public boolean isEmpty() { - return empty; - } - - public boolean isFork() { - return fork; - } - - public boolean isHas_issues() { - return has_issues; - } - - public boolean isHas_pull_requests() { - return has_pull_requests; - } - - public boolean isHas_wiki() { - return has_wiki; - } - - public boolean isIgnore_whitespace_conflicts() { - return ignore_whitespace_conflicts; - } - - public boolean isPrivateFlag() { - return privateFlag; - } - - public boolean isMirror() { - return mirror; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getClone_url() { - return clone_url; - } - - public String getDefault_branch() { - return default_branch; - } - - public String getDescription() { - return description; - } - - public String getFull_name() { - return full_name; - } - - public String getHtml_url() { - return html_url; - } - - public String getName() { - return name; - } - - public String getSsh_url() { - return ssh_url; - } - - public String getWebsite() { - return website; - } - - public int getForks_count() { - return forks_count; - } - - public int getId() { - return id; - } - - public int getOpen_issues_count() { - return open_issues_count; - } - - public int getOpen_pull_count() { - return open_pr_counter; - } - - public int getRelease_count() { - return release_counter; - } - - public int getSize() { - return size; - } - - public int getStars_count() { - return stars_count; - } - - public int getWatchers_count() { - return watchers_count; - } - - public Date getCreated_at() { - return created_at; - } - - public Date getUpdated_at() { - return updated_at; - } - - public ownerObject getOwner() { - return owner; - } - - public permissionsObject getPermissions() { - return permissions; - } - } - - public int getRepo_id() { - - return repo_id; - } - - public String getLabel() { - - return label; - } - - public String getRef() { - - return ref; - } - - public String getSha() { - - return sha; - } - - public repoObject getRepo() { - - return repo; - } - - } - - public static class baseObject { - - private int repo_id; - private String label; - private String ref; - private String sha; - - private repoObject repo; - - public static class repoObject { - - private int repo_id; - private boolean allow_merge_commits; - private boolean allow_rebase; - private boolean allow_rebase_explicit; - private boolean allow_squash_merge; - private boolean archived; - private boolean empty; - private boolean fork; - private boolean has_issues; - private boolean has_pull_requests; - private boolean has_wiki; - private boolean ignore_whitespace_conflicts; - @SerializedName("private") - private boolean privateFlag; - private boolean mirror; - private String avatar_url; - private String clone_url; - private String default_branch; - private String description; - private String full_name; - private String html_url; - private String name; - private String ssh_url; - private String website; - private int forks_count; - private int id; - private int open_issues_count; - private int size; - private int stars_count; - private int watchers_count; - private Date created_at; - private Date updated_at; - - private ownerObject owner; - private permissionsObject permissions; - - public static class ownerObject { - - private int repo_id; - private boolean is_admin; - private String avatar_url; - private String email; - private String full_name; - private String language; - private String login; - private Date created; - - public int getRepo_id() { - return repo_id; - } - - public boolean isIs_admin() { - return is_admin; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getEmail() { - return email; - } - - public String getFull_name() { - return full_name; - } - - public String getLanguage() { - return language; - } - - public String getLogin() { - return login; - } - - public Date getCreated() { - return created; - } - } - - public static class permissionsObject { - - private boolean admin; - private boolean pull; - private boolean push; - - public boolean isAdmin() { - return admin; - } - - public boolean isPull() { - return pull; - } - - public boolean isPush() { - return push; - } - } - - public int getRepo_id() { - return repo_id; - } - - public boolean isAllow_merge_commits() { - return allow_merge_commits; - } - - public boolean isAllow_rebase() { - return allow_rebase; - } - - public boolean isAllow_rebase_explicit() { - return allow_rebase_explicit; - } - - public boolean isAllow_squash_merge() { - return allow_squash_merge; - } - - public boolean isArchived() { - return archived; - } - - public boolean isEmpty() { - return empty; - } - - public boolean isFork() { - return fork; - } - - public boolean isHas_issues() { - return has_issues; - } - - public boolean isHas_pull_requests() { - return has_pull_requests; - } - - public boolean isHas_wiki() { - return has_wiki; - } - - public boolean isIgnore_whitespace_conflicts() { - return ignore_whitespace_conflicts; - } - - public boolean isPrivateFlag() { - return privateFlag; - } - - public boolean isMirror() { - return mirror; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getClone_url() { - return clone_url; - } - - public String getDefault_branch() { - return default_branch; - } - - public String getDescription() { - return description; - } - - public String getFull_name() { - return full_name; - } - - public String getHtml_url() { - return html_url; - } - - public String getName() { - return name; - } - - public String getSsh_url() { - return ssh_url; - } - - public String getWebsite() { - return website; - } - - public int getForks_count() { - return forks_count; - } - - public int getId() { - return id; - } - - public int getOpen_issues_count() { - return open_issues_count; - } - - public int getSize() { - return size; - } - - public int getStars_count() { - return stars_count; - } - - public int getWatchers_count() { - return watchers_count; - } - - public Date getCreated_at() { - return created_at; - } - - public Date getUpdated_at() { - return updated_at; - } - - public ownerObject getOwner() { - return owner; - } - - public permissionsObject getPermissions() { - return permissions; - } - } - - public int getRepo_id() { - - return repo_id; - } - - public String getLabel() { - - return label; - } - - public String getRef() { - - return ref; - } - - public String getSha() { - - return sha; - } - - public repoObject getRepo() { - - return repo; - } - - } - - public static class userObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private boolean is_admin; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public boolean isIs_admin() { - return is_admin; - } - } - - public static class labelsObject { - - private int id; - private String name; - private String color; - private String url; - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getColor() { - return color; - } - - public String getUrl() { - return url; - } - } - - public static class assigneesObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private boolean is_admin; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public boolean isIs_admin() { - return is_admin; - } - } - - public static class mergedByObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private boolean is_admin; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public boolean isIs_admin() { - return is_admin; - } - } - - public static class milestoneObject { - - private int id; - private String title; - private String description; - private String state; - private String open_issues; - private String closed_issues; - private String closed_at; - private String due_on; - - public int getId() { - return id; - } - - public String getTitle() { - return title; - } - - public String getDescription() { - return description; - } - - public String getState() { - return state; - } - - public String getOpen_issues() { - return open_issues; - } - - public String getClosed_issues() { - return closed_issues; - } - - public String getClosed_at() { - return closed_at; - } - - public String getDue_on() { - return due_on; - } - } - - public int getId() { - return id; - } - - public String getBody() { - return body; - } - - public int getComments() { - return comments; - } - - public String getDiff_url() { - return diff_url; - } - - public String getHtml_url() { - return html_url; - } - - public String getMerge_base() { - return merge_base; - } - - public String getMerge_commit_sha() { - return merge_commit_sha; - } - - public boolean isMergeable() { - return mergeable; - } - - public boolean isMerged() { - return merged; - } - - public int getNumber() { - return number; - } - - public String getPatch_url() { - return patch_url; - } - - public String getState() { - return state; - } - - public String getTitle() { - return title; - } - - public String getUrl() { - return url; - } - - public Date getClosed_at() { - return closed_at; - } - - public Date getCreated_at() { - return created_at; - } - - public Date getDue_date() { - return due_date; - } - - public Date getMerged_at() { - return merged_at; - } - - public Date getUpdated_at() { - return updated_at; - } - - public userObject getUser() { - return user; - } - - public List getLabels() { - return labels; - } - - public List getAssignees() { - return assignees; - } - - public mergedByObject getMerged_by() { - return merged_by; - } - - public milestoneObject getMilestone() { - return milestone; - } - - public baseObject getBase() { - return base; - } - - public headObject getHead() { - return head; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/Releases.java b/app/src/main/java/org/mian/gitnex/models/Releases.java deleted file mode 100644 index 90dfac50..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Releases.java +++ /dev/null @@ -1,170 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; -import java.util.List; - -/** - * Author M M Arif - */ - -public class Releases { - - private int id; - private String tag_name; - private String tag_commitish; - private String name; - private String body; - private String url; - private String tarball_url; - private String zipball_url; - private boolean draft; - private boolean prerelease; - private Date created_at; - private Date published_at; - - private authorObject author; - private List assets; - - public Releases(String body, boolean draft, String name, boolean prerelease, String tag_name, String tag_commitish) { - this.body = body; - this.draft = draft; - this.name = name; - this.prerelease = prerelease; - this.tag_name = tag_name; - this.tag_commitish = tag_commitish; - } - - public class authorObject { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFull_name() { - return full_name; - } - - public String getEmail() { - return email; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getLanguage() { - return language; - } - - public String getUsername() { - return username; - } - } - - public class assetsObject { - - private int id; - private String name; - private int size; - private int download_count; - private Date created_at; - private String uuid; - private String browser_download_url; - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public int getSize() { - return size; - } - - public int getDownload_count() { - return download_count; - } - - public Date getCreated_at() { - return created_at; - } - - public String getUuid() { - return uuid; - } - - public String getBrowser_download_url() { - return browser_download_url; - } - } - - public int getId() { - return id; - } - - public String getTag_name() { - return tag_name; - } - - public String getTag_commitish() { - return tag_commitish; - } - - public String getName() { - return name; - } - - public String getBody() { - return body; - } - - public String getUrl() { - return url; - } - - public String getTarball_url() { - return tarball_url; - } - - public String getZipball_url() { - return zipball_url; - } - - public boolean isDraft() { - return draft; - } - - public boolean isPrerelease() { - return prerelease; - } - - public Date getCreated_at() { - return created_at; - } - - public Date getPublished_at() { - return published_at; - } - - public authorObject getAuthor() { - return author; - } - - public List getAssets() { - return assets; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/RepositorySettings.java b/app/src/main/java/org/mian/gitnex/models/RepositorySettings.java deleted file mode 100644 index 0fdf189f..00000000 --- a/app/src/main/java/org/mian/gitnex/models/RepositorySettings.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class RepositorySettings { - - private boolean http_git_disabled; - private boolean mirrors_disabled; - - public boolean isHttp_git_disabled() { - - return http_git_disabled; - } - - public boolean isMirrors_disabled() { - - return mirrors_disabled; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/RepositoryTransfer.java b/app/src/main/java/org/mian/gitnex/models/RepositoryTransfer.java deleted file mode 100644 index 248dffb6..00000000 --- a/app/src/main/java/org/mian/gitnex/models/RepositoryTransfer.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class RepositoryTransfer { - - private String new_owner; - - public RepositoryTransfer(String new_owner) { - - this.new_owner = new_owner; - } - - public String getNew_owner() { - - return new_owner; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/Status.java b/app/src/main/java/org/mian/gitnex/models/Status.java deleted file mode 100644 index a0012d11..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Status.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.Date; - -/** - * Author opyale - */ - -public class Status { - - private String context; - private Date created_at; - private UserInfo creator; - private String description; - private int id; - private String status; - private String target_url; - private Date updated_at; - private String url; - - public String getContext() { - return context; - } - - public Date getCreated_at() { - return created_at; - } - - public UserInfo getCreator() { - return creator; - } - - public String getDescription() { - return description; - } - - public int getId() { - return id; - } - - public String getStatus() { - return status; - } - - public String getTarget_url() { - return target_url; - } - - public Date getUpdated_at() { - return updated_at; - } - - public String getUrl() { - return url; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/Teams.java b/app/src/main/java/org/mian/gitnex/models/Teams.java deleted file mode 100644 index 6c7649c2..00000000 --- a/app/src/main/java/org/mian/gitnex/models/Teams.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class Teams { - - private int id; - private String name; - private String description; - private String permission; - private List units; - - public Teams(String name, String description, String permission, List units) { - this.name = name; - this.description = description; - this.permission = permission; - this.units = units; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getPermission() { - return permission; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/UISettings.java b/app/src/main/java/org/mian/gitnex/models/UISettings.java deleted file mode 100644 index 67b6e7ba..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UISettings.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class UISettings { - - private String[] allowed_reactions; - - public String[] getAllowed_reactions() { - - return allowed_reactions; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/UpdateIssueAssignees.java b/app/src/main/java/org/mian/gitnex/models/UpdateIssueAssignees.java deleted file mode 100644 index 190895f0..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UpdateIssueAssignees.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.List; - -/** - * Author M M Arif - */ - -public class UpdateIssueAssignees { - - private List assignees; - - public UpdateIssueAssignees(List assignees) { - this.assignees = assignees; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/UpdateIssueState.java b/app/src/main/java/org/mian/gitnex/models/UpdateIssueState.java deleted file mode 100644 index fdf11a30..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UpdateIssueState.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class UpdateIssueState { - - private String state; - - public UpdateIssueState(String state) { - this.state = state; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/UserHeatmap.java b/app/src/main/java/org/mian/gitnex/models/UserHeatmap.java deleted file mode 100644 index f0a62c3b..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserHeatmap.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author opyale - */ - -public class UserHeatmap { - - private long contributions; - private long timestamp; - -} diff --git a/app/src/main/java/org/mian/gitnex/models/UserInfo.java b/app/src/main/java/org/mian/gitnex/models/UserInfo.java deleted file mode 100644 index cbb348e1..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserInfo.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.mian.gitnex.models; - -import androidx.annotation.NonNull; - -/** - * Author M M Arif - */ - -public class UserInfo { - - private int id; - private String login; - private String full_name; - private String email; - private String avatar_url; - private String language; - private String username; - - private String login_name; - private String password; - private Boolean send_notify; - private int source_id; - - private Boolean is_admin; - - public UserInfo(String email, String full_name, String login_name, String password, String username, int source_id, Boolean send_notify) { - this.email = email; - this.full_name = full_name; - this.login_name = login_name; - this.password = password; - this.username = username; - this.source_id = source_id; - this.send_notify = send_notify; - } - - public int getId() { - return id; - } - - public String getLogin() { - return login; - } - - public String getFullname() { - return full_name; - } - - public String getEmail() { - return email; - } - - @NonNull - public String getAvatar() { - return avatar_url; - } - - public String getLang() { - return language; - } - - public String getUsername() { - return username; - } - - public Boolean getIs_admin() { - return is_admin; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/UserOrganizations.java b/app/src/main/java/org/mian/gitnex/models/UserOrganizations.java deleted file mode 100644 index 136f22ed..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserOrganizations.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class UserOrganizations { - - private int id; - private String username; - private String avatar_url; - private String description; - private String website; - private String location; - - public UserOrganizations(String username, String avatar_url, String description, String website, String location) { - this.username = username; - this.avatar_url = avatar_url; - this.description = description; - this.website = website; - this.location = location; - } - - public int getId() { - return id; - } - - public String getUsername() { - return username; - } - - public String getAvatar_url() { - return avatar_url; - } - - public String getDescription() { - return description; - } - - public String getWebsite() { - return website; - } - - public String getLocation() { - return location; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/UserRepositories.java b/app/src/main/java/org/mian/gitnex/models/UserRepositories.java deleted file mode 100644 index 7fe82c0f..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserRepositories.java +++ /dev/null @@ -1,377 +0,0 @@ -package org.mian.gitnex.models; - -import com.google.gson.annotations.SerializedName; -import java.util.Date; - -/** - * Author M M Arif - */ - -public class UserRepositories { - - private int id; - private String name; - private String full_name; - private String description; - @SerializedName("private") - private boolean privateFlag; - private String stars_count; - private String watchers_count; - private String open_issues_count; - private String open_pr_counter; - private String release_counter; - private String html_url; - private String default_branch; - private Date created_at; - private Date updated_at; - private String clone_url; - private long size; - private String ssh_url; - private String website; - private String forks_count; - private Boolean has_issues; - private String avatar_url; - private boolean archived; - private boolean allow_merge_commits; - private boolean allow_rebase; - private boolean allow_rebase_explicit; - private boolean allow_squash_merge; - private boolean has_pull_requests; - private boolean has_wiki; - private boolean ignore_whitespace_conflicts; - private boolean template; - - private permissionsObject permissions; - private externalIssueTrackerObject external_tracker; - private externalWikiObject external_wiki; - private internalTimeTrackerObject internal_tracker; - - public UserRepositories(String body) { - this.name = name; - } - - public UserRepositories(String name, String website, String description, - boolean repoPrivate, boolean repoAsTemplate, boolean repoEnableIssues, - boolean repoEnableWiki, boolean repoEnablePr, - boolean repoEnableMerge, boolean repoEnableRebase, boolean repoEnableSquash, boolean repoEnableForceMerge) { - - this.name = name; - this.website = website; - this.description = description; - this.privateFlag = repoPrivate; - this.template = repoAsTemplate; - this.has_issues = repoEnableIssues; - this.has_wiki = repoEnableWiki; - this.has_pull_requests = repoEnablePr; - this.allow_merge_commits = repoEnableMerge; - this.allow_rebase = repoEnableRebase; - this.allow_squash_merge = repoEnableSquash; - this.allow_rebase_explicit = repoEnableForceMerge; - } - - public UserRepositories(String name, String website, String description, - boolean repoPrivate, boolean repoAsTemplate, boolean repoEnableIssues, - boolean repoEnableWiki, boolean repoEnablePr, internalTimeTrackerObject repoEnableTimer, - boolean repoEnableMerge, boolean repoEnableRebase, boolean repoEnableSquash, boolean repoEnableForceMerge) { - - this.name = name; - this.website = website; - this.description = description; - this.privateFlag = repoPrivate; - this.template = repoAsTemplate; - this.has_issues = repoEnableIssues; - this.has_wiki = repoEnableWiki; - this.has_pull_requests = repoEnablePr; - this.internal_tracker = repoEnableTimer; - this.allow_merge_commits = repoEnableMerge; - this.allow_rebase = repoEnableRebase; - this.allow_squash_merge = repoEnableSquash; - this.allow_rebase_explicit = repoEnableForceMerge; - } - - public static class internalTimeTrackerObject { - - private boolean allow_only_contributors_to_track_time; - private boolean enable_issue_dependencies; - private boolean enable_time_tracker; - - public internalTimeTrackerObject(boolean enable_time_tracker) { - - this.enable_time_tracker = enable_time_tracker; - } - - public boolean isAllow_only_contributors_to_track_time() { - - return allow_only_contributors_to_track_time; - } - - public boolean isEnable_issue_dependencies() { - - return enable_issue_dependencies; - } - - public boolean isEnable_time_tracker() { - - return enable_time_tracker; - } - - } - - public static class externalWikiObject { - - private String external_wiki_url; - - public externalWikiObject(String external_wiki_url) { - - this.external_wiki_url = external_wiki_url; - } - - public String getExternal_wiki_url() { - - return external_wiki_url; - } - - } - - public static class externalIssueTrackerObject { - - private String external_tracker_format; - private String external_tracker_style; - private String external_tracker_url; - - public externalIssueTrackerObject(String external_tracker_url) { - - this.external_tracker_url = external_tracker_url; - } - - public String getExternal_tracker_format() { - - return external_tracker_format; - } - - public String getExternal_tracker_style() { - - return external_tracker_style; - } - - public String getExternal_tracker_url() { - - return external_tracker_url; - } - - } - - public static class permissionsObject { - - private boolean admin; - private boolean push; - private boolean pull; - - public boolean isAdmin() { - - return admin; - } - - public boolean canPush() { - - return push; - } - - public boolean canPull() { - - return pull; - } - - } - - public int getId() { - - return id; - } - - public String getName() { - - return name; - } - - public String getFullName() { - - return full_name; - } - - public String getDescription() { - - return description; - } - - public permissionsObject getPermissions() { - - return permissions; - } - - public Boolean getPrivateFlag() { - - return privateFlag; - } - - public String getStars_count() { - - return stars_count; - } - - public String getOpen_pull_count() { - - return open_pr_counter; - } - - public String getRelease_count() { - - return release_counter; - } - - public String getWatchers_count() { - - return watchers_count; - } - - public String getOpen_issues_count() { - - return open_issues_count; - } - - public String getHtml_url() { - - return html_url; - } - - public String getDefault_branch() { - - return default_branch; - } - - public Date getCreated_at() { - - return created_at; - } - - public Date getUpdated_at() { - - return updated_at; - } - - public String getClone_url() { - - return clone_url; - } - - public long getSize() { - - return size; - } - - public String getSsh_url() { - - return ssh_url; - } - - public String getWebsite() { - - return website; - } - - public String getForks_count() { - - return forks_count; - } - - public Boolean getHas_issues() { - - return has_issues; - } - - public String getAvatar_url() { - - return avatar_url; - } - - public boolean isPrivateFlag() { - - return privateFlag; - } - - public String getOpen_pr_counter() { - - return open_pr_counter; - } - - public String getRelease_counter() { - - return release_counter; - } - - public boolean isArchived() { - - return archived; - } - - public String getFull_name() { - - return full_name; - } - - public boolean isAllow_merge_commits() { - - return allow_merge_commits; - } - - public boolean isAllow_rebase() { - - return allow_rebase; - } - - public boolean isAllow_rebase_explicit() { - - return allow_rebase_explicit; - } - - public boolean isAllow_squash_merge() { - - return allow_squash_merge; - } - - public boolean isHas_pull_requests() { - - return has_pull_requests; - } - - public boolean isHas_wiki() { - - return has_wiki; - } - - public boolean isIgnore_whitespace_conflicts() { - - return ignore_whitespace_conflicts; - } - - public boolean isTemplate() { - - return template; - } - - public externalIssueTrackerObject getExternal_tracker() { - - return external_tracker; - } - - public externalWikiObject getExternal_wiki() { - - return external_wiki; - } - - public internalTimeTrackerObject getInternal_tracker() { - - return internal_tracker; - } - -} diff --git a/app/src/main/java/org/mian/gitnex/models/UserSearch.java b/app/src/main/java/org/mian/gitnex/models/UserSearch.java deleted file mode 100644 index 6fecdf64..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserSearch.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.mian.gitnex.models; - -import java.util.ArrayList; - -/** - * Author M M Arif - */ - -public class UserSearch { - - private ArrayList data; - private Boolean ok; - - public ArrayList getData() { - return data; - } - - public Boolean getOk() { - return ok; - } - -} \ No newline at end of file diff --git a/app/src/main/java/org/mian/gitnex/models/UserTokens.java b/app/src/main/java/org/mian/gitnex/models/UserTokens.java deleted file mode 100644 index 7bd17e86..00000000 --- a/app/src/main/java/org/mian/gitnex/models/UserTokens.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class UserTokens { - - private int id; - private String name; - private String sha1; - private String token_last_eight; - - public UserTokens(String name) { - this.name = name; - } - - public int getId() { - return id; - } - - public String getName() { - return name; - } - - public String getSha1() { - return sha1; - } - - public void setName(String name) { - this.name = name; - } - - public String getToken_last_eight() { - return token_last_eight; - } -} diff --git a/app/src/main/java/org/mian/gitnex/models/WatchInfo.java b/app/src/main/java/org/mian/gitnex/models/WatchInfo.java deleted file mode 100644 index 046755a1..00000000 --- a/app/src/main/java/org/mian/gitnex/models/WatchInfo.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.mian.gitnex.models; - -/** - * Author M M Arif - */ - -public class WatchInfo { - - private Boolean subscribed; - private Boolean ignored; // = !subscribed - private String reason; // not used by gitea jet - private String created_at; - private String url; - private String repository_url; - - public Boolean getSubscribed() { - - return subscribed; - - } - - public String getCreated_at() { - - return created_at; - - } - - public String getUrl() { - - return url; - - } - - public String getRepository_url() { - - return repository_url; - - } - -} diff --git a/app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java similarity index 93% rename from app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java rename to app/src/main/java/org/mian/gitnex/notifications/Notifications.java index aca4981e..37d90a5f 100644 --- a/app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java +++ b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java @@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit; * Author opyale */ -public class NotificationsMaster { +public class Notifications { private static int notificationsSupported = -1; @@ -30,12 +30,12 @@ public class NotificationsMaster { } } - public static void fireWorker(Context context) { + public static void stopWorker(Context context) { WorkManager.getInstance(context).cancelAllWorkByTag(context.getPackageName()); } - public static void hireWorker(Context context) { + public static void startWorker(Context context) { TinyDB tinyDB = TinyDB.getInstance(context); diff --git a/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java b/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java index b7e13062..1972f016 100644 --- a/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java +++ b/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java @@ -15,13 +15,13 @@ import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; import androidx.work.Worker; import androidx.work.WorkerParameters; +import org.gitnex.tea4j.models.NotificationThread; import org.mian.gitnex.R; import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.NotificationThread; import java.util.Date; import java.util.List; import retrofit2.Call; @@ -36,8 +36,8 @@ public class NotificationsWorker extends Worker { private static final int MAXIMUM_NOTIFICATIONS = 100; private static final long[] VIBRATION_PATTERN = new long[]{ 1000, 1000 }; - private Context context; - private TinyDB tinyDB; + private final Context context; + private final TinyDB tinyDB; public NotificationsWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { @@ -157,7 +157,7 @@ public class NotificationsWorker extends Worker { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationChannel notificationChannel = new NotificationChannel(context.getPackageName(), context.getString(R.string.app_name), + NotificationChannel notificationChannel = new NotificationChannel(context.getPackageName(), context.getString(R.string.appName), NotificationManager.IMPORTANCE_DEFAULT); notificationChannel.setDescription(context.getString(R.string.notificationChannelDescription)); diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/AdminCronTasksViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/AdminCronTasksViewModel.java index e7f0c0a3..c11c5a44 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/AdminCronTasksViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/AdminCronTasksViewModel.java @@ -6,11 +6,11 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.CronTasks; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.CronTasks; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/AdminGetUsersViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/AdminGetUsersViewModel.java index 4d834265..98c688c9 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/AdminGetUsersViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/AdminGetUsersViewModel.java @@ -6,11 +6,11 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/BranchesViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/BranchesViewModel.java index 26d55d00..d33128b0 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/BranchesViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/BranchesViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Branches; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Branches; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/CollaboratorsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/CollaboratorsViewModel.java index a54d81ee..6d673e58 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/CollaboratorsViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/CollaboratorsViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Collaborators; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Collaborators; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/FilesViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/FilesViewModel.java index 15116a3e..aa6eabb0 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/FilesViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/FilesViewModel.java @@ -8,10 +8,10 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Files; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.Files; import java.util.Collections; import java.util.List; import retrofit2.Call; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java index a9d473d9..90a09e47 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.IssueComments; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.IssueComments; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/LabelsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/LabelsViewModel.java index c83c4df5..f6e6d56f 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/LabelsViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/LabelsViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Labels; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Labels; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/MembersByOrgViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/MembersByOrgViewModel.java index 3a1480b9..7bd9941f 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/MembersByOrgViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/MembersByOrgViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/MyRepositoriesViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/MyRepositoriesViewModel.java index 15a82907..07495d5c 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/MyRepositoriesViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/MyRepositoriesViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserRepositories; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationLabelsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationLabelsViewModel.java index 1340b08c..098c5066 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationLabelsViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationLabelsViewModel.java @@ -9,9 +9,9 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Labels; import org.jetbrains.annotations.NotNull; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Labels; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationListViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationListViewModel.java index a40517cb..e973e433 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationListViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/OrganizationListViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserOrganizations; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserOrganizations; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileEmailsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileEmailsViewModel.java index 28da6ec8..f871dcdb 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileEmailsViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileEmailsViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Emails; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Emails; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowersViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowersViewModel.java index 4ddcd249..380b8d59 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowersViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowersViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowingViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowingViewModel.java index 2d974b7b..146554e9 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowingViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/ProfileFollowingViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/ReleasesViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/ReleasesViewModel.java index ec686395..ea7de358 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/ReleasesViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/ReleasesViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Releases; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Releases; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/RepoStargazersViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/RepoStargazersViewModel.java index af8f4470..ef75b351 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/RepoStargazersViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/RepoStargazersViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/RepoWatchersViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/RepoWatchersViewModel.java index 3755a00e..ce4b7144 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/RepoWatchersViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/RepoWatchersViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesByOrgViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesByOrgViewModel.java index df97855c..e4826f3e 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesByOrgViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesByOrgViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserRepositories; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesListViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesListViewModel.java index e4975a24..357e5eec 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesListViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/RepositoriesListViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserRepositories; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/StarredRepositoriesViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/StarredRepositoriesViewModel.java index 55dada7e..e269d45a 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/StarredRepositoriesViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/StarredRepositoriesViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserRepositories; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserRepositories; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/TeamMembersByOrgViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/TeamMembersByOrgViewModel.java index 4a029bf5..e1476c49 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/TeamMembersByOrgViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/TeamMembersByOrgViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.UserInfo; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.UserInfo; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/TeamsByOrgViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/TeamsByOrgViewModel.java index af872c6c..1d2a9fc5 100644 --- a/app/src/main/java/org/mian/gitnex/viewmodels/TeamsByOrgViewModel.java +++ b/app/src/main/java/org/mian/gitnex/viewmodels/TeamsByOrgViewModel.java @@ -6,8 +6,8 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.models.Teams; import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.models.Teams; import java.util.List; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/org/mian/gitnex/views/ReactionList.java b/app/src/main/java/org/mian/gitnex/views/ReactionList.java index e651e51e..4e5cfdcb 100644 --- a/app/src/main/java/org/mian/gitnex/views/ReactionList.java +++ b/app/src/main/java/org/mian/gitnex/views/ReactionList.java @@ -12,12 +12,12 @@ import android.widget.TextView; import androidx.cardview.widget.CardView; import com.vdurmont.emoji.Emoji; import com.vdurmont.emoji.EmojiManager; +import org.gitnex.tea4j.models.IssueReaction; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.IssueReaction; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; diff --git a/app/src/main/java/org/mian/gitnex/views/ReactionSpinner.java b/app/src/main/java/org/mian/gitnex/views/ReactionSpinner.java index 32da4d05..a263f338 100644 --- a/app/src/main/java/org/mian/gitnex/views/ReactionSpinner.java +++ b/app/src/main/java/org/mian/gitnex/views/ReactionSpinner.java @@ -12,13 +12,13 @@ import android.widget.TextView; import androidx.cardview.widget.CardView; import com.vdurmont.emoji.Emoji; import com.vdurmont.emoji.EmojiManager; +import org.gitnex.tea4j.models.IssueReaction; +import org.gitnex.tea4j.models.UISettings; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; -import org.mian.gitnex.models.IssueReaction; -import org.mian.gitnex.models.UISettings; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; diff --git a/app/src/main/res/layout/activity_add_collaborator_to_repository.xml b/app/src/main/res/layout/activity_add_collaborator_to_repository.xml index 030ae915..ab0394e0 100644 --- a/app/src/main/res/layout/activity_add_collaborator_to_repository.xml +++ b/app/src/main/res/layout/activity_add_collaborator_to_repository.xml @@ -42,11 +42,12 @@ - @@ -81,6 +82,7 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" android:imeOptions="actionSend" android:inputType="text" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_add_new_account.xml b/app/src/main/res/layout/activity_add_new_account.xml index c5bd242e..25785e8e 100644 --- a/app/src/main/res/layout/activity_add_new_account.xml +++ b/app/src/main/res/layout/activity_add_new_account.xml @@ -75,6 +75,7 @@ android:inputType="none" android:textColor="?attr/inputTextColor" android:labelFor="@+id/protocolSpinner" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -102,7 +103,8 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" - android:maxLines="1" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -130,7 +132,8 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" - android:maxLines="1" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_add_new_team_member.xml b/app/src/main/res/layout/activity_add_new_team_member.xml index 298a878d..95ca58e1 100644 --- a/app/src/main/res/layout/activity_add_new_team_member.xml +++ b/app/src/main/res/layout/activity_add_new_team_member.xml @@ -42,12 +42,13 @@ - diff --git a/app/src/main/res/layout/activity_commits.xml b/app/src/main/res/layout/activity_commits.xml index 3b889389..12804fee 100644 --- a/app/src/main/res/layout/activity_commits.xml +++ b/app/src/main/res/layout/activity_commits.xml @@ -60,21 +60,23 @@ - - @@ -134,6 +136,7 @@ android:inputType="textCapSentences" android:labelFor="@id/new_file_branches" android:singleLine="true" + android:imeOptions="actionNext" android:textColor="?attr/inputTextColor" android:textSize="16sp" /> @@ -164,6 +167,7 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_issue.xml b/app/src/main/res/layout/activity_create_issue.xml index c4586b87..807280d3 100644 --- a/app/src/main/res/layout/activity_create_issue.xml +++ b/app/src/main/res/layout/activity_create_issue.xml @@ -78,6 +78,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_milestone.xml b/app/src/main/res/layout/activity_create_milestone.xml index 216c369f..a08ed94f 100644 --- a/app/src/main/res/layout/activity_create_milestone.xml +++ b/app/src/main/res/layout/activity_create_milestone.xml @@ -75,6 +75,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_new_user.xml b/app/src/main/res/layout/activity_create_new_user.xml index a093c5b5..52edfcd8 100644 --- a/app/src/main/res/layout/activity_create_new_user.xml +++ b/app/src/main/res/layout/activity_create_new_user.xml @@ -75,6 +75,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -100,6 +102,8 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -125,6 +129,8 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -150,6 +156,7 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_organization.xml b/app/src/main/res/layout/activity_create_organization.xml index 50c4c6ba..6adb7d93 100644 --- a/app/src/main/res/layout/activity_create_organization.xml +++ b/app/src/main/res/layout/activity_create_organization.xml @@ -75,6 +75,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_pr.xml b/app/src/main/res/layout/activity_create_pr.xml index 6ce160bc..a0f35305 100644 --- a/app/src/main/res/layout/activity_create_pr.xml +++ b/app/src/main/res/layout/activity_create_pr.xml @@ -78,6 +78,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_release.xml b/app/src/main/res/layout/activity_create_release.xml index 75147b09..936d015f 100644 --- a/app/src/main/res/layout/activity_create_release.xml +++ b/app/src/main/res/layout/activity_create_release.xml @@ -74,7 +74,9 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" - android:inputType="textCapSentences|textMultiLine" + android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -101,6 +103,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_create_team_by_org.xml b/app/src/main/res/layout/activity_create_team_by_org.xml index 6a1f1593..e6452b93 100644 --- a/app/src/main/res/layout/activity_create_team_by_org.xml +++ b/app/src/main/res/layout/activity_create_team_by_org.xml @@ -75,6 +75,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> @@ -103,6 +105,8 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_deeplinks.xml b/app/src/main/res/layout/activity_deeplinks.xml index c47935fd..dbd557ae 100644 --- a/app/src/main/res/layout/activity_deeplinks.xml +++ b/app/src/main/res/layout/activity_deeplinks.xml @@ -6,11 +6,12 @@ android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> - @@ -94,7 +95,7 @@ android:id="@+id/organization" android:layout_width="match_parent" android:layout_height="60dp" - android:text="@string/navOrgs" + android:text="@string/navOrg" android:textColor="@color/btnTextColor" android:textSize="16sp" android:layout_marginTop="8dp" /> diff --git a/app/src/main/res/layout/activity_edit_issue.xml b/app/src/main/res/layout/activity_edit_issue.xml index 4449e83a..3da786c3 100644 --- a/app/src/main/res/layout/activity_edit_issue.xml +++ b/app/src/main/res/layout/activity_edit_issue.xml @@ -75,6 +75,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_file_diff.xml b/app/src/main/res/layout/activity_file_diff.xml index 9c465288..2268bb74 100644 --- a/app/src/main/res/layout/activity_file_diff.xml +++ b/app/src/main/res/layout/activity_file_diff.xml @@ -61,11 +61,12 @@ - diff --git a/app/src/main/res/layout/activity_file_view.xml b/app/src/main/res/layout/activity_file_view.xml index aff93f71..57e080b2 100644 --- a/app/src/main/res/layout/activity_file_view.xml +++ b/app/src/main/res/layout/activity_file_view.xml @@ -45,11 +45,12 @@ - - @@ -134,6 +135,7 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" android:textSize="16sp" /> @@ -162,6 +164,7 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textPassword" + android:singleLine="true" android:textSize="16sp" /> @@ -193,6 +196,7 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="number" + android:singleLine="true" android:textSize="16sp" /> @@ -220,6 +224,7 @@ android:textColor="?attr/inputTextColor" android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" + android:singleLine="true" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_merge_pull_request.xml b/app/src/main/res/layout/activity_merge_pull_request.xml index 99a347f9..3ea2d0b0 100644 --- a/app/src/main/res/layout/activity_merge_pull_request.xml +++ b/app/src/main/res/layout/activity_merge_pull_request.xml @@ -89,6 +89,8 @@ android:textColorHighlight="?attr/hintColor" android:textColorHint="?attr/hintColor" android:inputType="textCapSentences" + android:singleLine="true" + android:imeOptions="actionNext" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_org_detail.xml b/app/src/main/res/layout/activity_org_detail.xml index 97def43a..d9990da2 100644 --- a/app/src/main/res/layout/activity_org_detail.xml +++ b/app/src/main/res/layout/activity_org_detail.xml @@ -48,7 +48,7 @@ android:id="@+id/tabItemInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/tab_text_info" /> + android:text="@string/tabTextInfo" /> + android:text="@string/tabTextLabels" /> - + android:text="@string/tabTextInfo" /> + android:text="@string/tabTextFiles" /> + android:text="@string/tabTextReleases" /> + android:text="@string/tabTextMl" /> + android:text="@string/tabTextLabels" /> + android:text="@string/tabTextCollaborators" /> diff --git a/app/src/main/res/layout/activity_repo_forks.xml b/app/src/main/res/layout/activity_repo_forks.xml index edcd061c..07f7d43a 100644 --- a/app/src/main/res/layout/activity_repo_forks.xml +++ b/app/src/main/res/layout/activity_repo_forks.xml @@ -60,21 +60,23 @@ - - - - diff --git a/app/src/main/res/layout/activity_settings_security.xml b/app/src/main/res/layout/activity_settings_security.xml index 578f248b..17a76f0a 100644 --- a/app/src/main/res/layout/activity_settings_security.xml +++ b/app/src/main/res/layout/activity_settings_security.xml @@ -43,11 +43,42 @@ + + + + + + + + - - - - - - - - - - - + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> + app:UnSelectedTextColor="@color/lightGray" /> - diff --git a/app/src/main/res/layout/fragment_issues.xml b/app/src/main/res/layout/fragment_issues.xml index e8237bd6..fb1aa9ec 100644 --- a/app/src/main/res/layout/fragment_issues.xml +++ b/app/src/main/res/layout/fragment_issues.xml @@ -20,19 +20,21 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_organizations.xml b/app/src/main/res/layout/fragment_organizations.xml index d14654ef..e7a0ae12 100644 --- a/app/src/main/res/layout/fragment_organizations.xml +++ b/app/src/main/res/layout/fragment_organizations.xml @@ -19,11 +19,12 @@ - - - - - - - - diff --git a/app/src/main/res/layout/fragment_repositories.xml b/app/src/main/res/layout/fragment_repositories.xml index a3b7ea53..91ca3bc7 100644 --- a/app/src/main/res/layout/fragment_repositories.xml +++ b/app/src/main/res/layout/fragment_repositories.xml @@ -21,11 +21,12 @@ - - - - - - diff --git a/app/src/main/res/layout/list_files.xml b/app/src/main/res/layout/list_files.xml index cf59bc16..03839bb7 100644 --- a/app/src/main/res/layout/list_files.xml +++ b/app/src/main/res/layout/list_files.xml @@ -1,91 +1,67 @@ - + android:background="?attr/primaryBackgroundColor" + android:gravity="center_vertical" + android:orientation="horizontal"> - - - - - - - - - - - + + android:orientation="vertical"> - + android:orientation="horizontal"> + + + + + + - + diff --git a/app/src/main/res/layout/list_repositories.xml b/app/src/main/res/layout/list_repositories.xml index 42373fbf..498c5785 100644 --- a/app/src/main/res/layout/list_repositories.xml +++ b/app/src/main/res/layout/list_repositories.xml @@ -107,7 +107,7 @@ android:id="@+id/repoFullName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/repoFullname" + android:text="@string/repoFullName" android:textColor="?attr/primaryTextColor" android:textSize="16sp" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/list_user_accounts.xml b/app/src/main/res/layout/list_user_accounts.xml index b80112c2..c0d60f4e 100644 --- a/app/src/main/res/layout/list_user_accounts.xml +++ b/app/src/main/res/layout/list_user_accounts.xml @@ -1,92 +1,68 @@ - + android:background="?attr/primaryBackgroundColor" + xmlns:android="http://schemas.android.com/apk/res/android"> - + - - - - - - - - - - - - - - - + android:orientation="horizontal" + android:layout_toEndOf="@+id/repoAvatar" + android:layout_marginBottom="10dp"> + android:textSize="16sp" + android:textStyle="bold" /> - + - + + + + + + diff --git a/app/src/main/res/menu/drawer_menu.xml b/app/src/main/res/menu/drawer_menu.xml index 22a04944..bf084a1e 100644 --- a/app/src/main/res/menu/drawer_menu.xml +++ b/app/src/main/res/menu/drawer_menu.xml @@ -17,7 +17,7 @@ + android:title="@string/navOrg" /> المستودعات الملف التعريفي الإعدادات - المنظمات + المنظمات عن التطبيق GitNex معدل الخروج @@ -28,7 +28,7 @@ New Issue New Label Credits - Select Branch + اختر فرعًا Update Label التبرعات المستودعات المفضلة @@ -41,7 +41,7 @@ New Pull Request Demo repo - Repo with ORG + Repo with ORG مثال عن الوصف لم يٌعثر على أية مستودَعات Demo organization @@ -61,11 +61,14 @@ الكلمة السرية لِج عنوان مثيل الخادم - Open Navigation Drawer - Close Navigation Drawer + Open Navigation Drawer + Close Navigation Drawer لِج إلى Gitea Protocol - 1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. + 1. پروتکل درست را انتخاب کنید (http یا https) +2. نشانی Gitea را وارد کنید. مثلا: try.gitea.io +3. اگر احراز هویت دو مرحله‌ای را برای حساب خود فعال کرده‌اید، رمز را در کادر OTP وارد کنید. +4. برای احراز هویت عادی HTTP از USERNAME@DOMAIN.COM در نشانی استفاده کنید. Couldn\'t connect to host. Please check your URL or port for any errors It is not recommended to use HTTP protocol unless you are testing on local network Malformed JSON was received. Server response was not successful @@ -101,14 +104,14 @@ Pri إزالة Instance has returned an error. Code\u0020 - RepoDetailActivity - التفاصيل - الملفات - Milestones - اﻹصدارات - الفروع - Labels - المتعاونون + RepoDetailActivity + التفاصيل + الملفات + Milestones + اﻹصدارات + الفروع + Labels + المتعاونون Pull Requests No issues found الحجم @@ -195,8 +198,8 @@ الوضع الليلي لـ PDF عارض الملفات Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +245,7 @@ حسنًا إلغاء - OrgDetailActivity + OrgDetailActivity المستودعات الفِرَق الأعضاء @@ -321,19 +324,17 @@ Subscribe Unsubscribe - - Select Entries - Please select at least - You can only select up to - خيار - الخيارات - اختيار الكل - Repository Meta إضافة مستخدم جديد System Users المُدير + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully الاسم الكامل @@ -385,10 +386,9 @@ Invalid branch name, may only contain –, a–z, 0–9 Commit message is too long أنشئ ملف جديد - الفروع الحالية + Select or create a branch Fields like filename, content and commit message are required - Selecting current branch will disable new branch - مثال: new-branch + Leave blank to push to the default branch New branch name cannot be empty if current branch is not selected Filter Branches @@ -400,6 +400,7 @@ لم يٌعثر على ملفات Sorry this file cannot be viewed as API returned an error + Files of this type cannot be edited Not supported حسنًا @@ -448,7 +449,7 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -477,7 +478,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -493,22 +494,22 @@ Committed by %1$s View Commits - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index f3a521b0..401a46d1 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -6,7 +6,7 @@ Repozitáře Profil Nastavení - Organizace + Organizace O aplikaci Ohodnotit GitNex Odhlásit se @@ -41,7 +41,7 @@ New Pull Request Demo repozitář - Repo with ORG + Repo with ORG Demo popis Nebyly nalezeny žádné repozitáře Demo organizace @@ -61,8 +61,8 @@ Heslo Přihlásit se URL instance - Otevřít navigační menu - Zavřít navigační menu + Otevřít navigační menu + Zavřít navigační menu Přihlásit se do Gitea Protocol 1- Vyberte správný protokol (https nebo http). \n2- zadejte URL Gitea např.: try.gitea.io. \n3- Pokud jste pro svůj účet povolili 2FA, zadejte kód do pole OTP kód. \n4- Pro základní ověření HTTP použijte USERNAME@DOMAIN.COM v poli URL. @@ -101,14 +101,14 @@ Soukromý avatar Odebrat Instance vrátila chybu. Kód\u0020 - Detailní aktivity repozitáře - Podrobnosti - Soubory - Milníky - Vydání - Větve - Štítky - Spolupracovníci + Detailní aktivity repozitáře + Podrobnosti + Soubory + Milníky + Vydání + Větve + Štítky + Spolupracovníci Pull Requesty Nebyla nalezena žádná issue Velikost @@ -195,8 +195,8 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ OK Cancel - OrgDetailActivity + OrgDetailActivity Repositories Teams Members @@ -321,19 +321,17 @@ Subscribe Unsubscribe - - Select Entries - Please select at least - You can only select up to - option - options - Select all - Repository Meta Add New User System Users Admin + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Full Name @@ -385,10 +383,9 @@ Invalid branch name, may only contain –, a–z, 0–9 Commit zpráva je příliš dlouhá New file created - Current Branches + Select or create a branch Fields like filename, content and commit message are required - Selecting current branch will disable new branch - e.g: new-branch + Leave blank to push to the default branch New branch name cannot be empty if current branch is not selected Filter Branches @@ -400,6 +397,7 @@ No files found Sorry this file cannot be viewed as API returned an error + Files of this type cannot be edited Not supported OK @@ -448,7 +446,7 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -477,7 +475,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Commitnuto uživatelem %1$s Zobrazit commity - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f2022ea7..4da82c9d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -6,7 +6,7 @@ Repositories Profil Einstellungen - Organisationen + Organisationen Über Bewerte GitNex Ausloggen @@ -41,7 +41,7 @@ Neuer Pull-Request Demo Repo - Repo mit ORG + Repo mit ORG Demo Beschreibung Keine Repositories gefunden Demo Organisation @@ -61,8 +61,8 @@ Passwort ANMELDEN Instanz Link - Navigationsleiste öffnen - Navigationsleiste schließen + Navigationsleiste öffnen + Navigationsleiste schließen In Gitea anmelden Protokoll 1- Wähle das richtige Protokoll (https oder http) \ N2- Gebe die Gitea-URL ein, z.B. try.gitea.io \n3- Falls du 2FA aktiviert hast, gib den Code in das OTP-Code Feld ein. \n4- Für HTTP basic auth nutze BENUTZERNAME@DOMAIN.COM im URL Feld @@ -101,14 +101,14 @@ Pri Entfernen Die Instanz hat einen Fehler zurückgegeben. Code\u0020 - Repo-Details Aktivität - Details - Dateien - Meilensteine - Releases - Branches - Labels - Mitarbeiter + Repo-Details Aktivität + Details + Dateien + Meilensteine + Releases + Branches + Labels + Mitarbeiter Pull Requests Keine Issues gefunden! Größe @@ -195,8 +195,8 @@ PDF Nachtmodus Dateibetrachter Zähler für Tabs - Quellcode-Theme - Wähle dein Quellcode-Theme + Quellcode-Theme + Wähle dein Quellcode-Theme Daten-Cache Größe Daten-Cache Größe Bilder-Cache Größe @@ -242,7 +242,7 @@ Ok Abbrechen - OrgDetailActivity + OrgDetailActivity Repositories Teams Mitglieder @@ -321,19 +321,17 @@ Abonnieren De-Abonnieren - - Einträge auswählen - Du musst mindestens so viele auswählen: - Du kannst höchstens so viele auswählen: - Option - Optionen - Alle auswählen - Repository Informationen Neuen Benutzer erstellen Systembenutzer Administrator + Cron-Jobs + Termin planen + Nächste Ausführung + Zuletzt ausgeführt + Ausführungen + Job %1$s wurde erfolgreich erstellt Ganzer Name @@ -385,10 +383,9 @@ Der Branch-Name ist ungültig und sollte nur folgendes beinhalten –, a–z, 0–9 Commit-Nachricht ist zu lang Neue Datei erstellt - Derzeitige Branches + Wähle oder Erstelle einen Branch Felder wie Dateiname, Inhalt und Commit-Nachricht sind erforderlich. - Das Auswählen des derzeitigen Branches wird \"neuer Branch-Name\" deaktivieren - z.B.: neuer-branch + Leer lassen, um zum Standart-Branch zu pushen Neuer Branch-Name kann nicht leer sein, wenn der derzeitige Branch nicht ausgewählt ist Filter Branches @@ -400,6 +397,7 @@ Keine Dateien gefunden Leider kann diese Datei nicht angezeigt werden, da die API einen Fehler zurückgab + Dateien dieses Typs können nicht editiert werden Nicht unterstützt OK @@ -448,7 +446,7 @@ Wählen deine bevorzugte Login-Methode, um auf deinen Account zuzugreifen. Token ist sicherer! Gitea hat einen Fehler zurückgegeben - Nicht autorisiert. Überprüfen Sie Ihre Anmeldeinformationen und versuchen Sie es erneut Token ist erforderlich - Gelöschter Fork + Gelöschter Fork Keine Pull-Requests gefunden Ersteller:\u0020 Bearbeite Pull-Request @@ -477,7 +475,7 @@ Datei herunterladen Bitte warte, bis die Datei in den Speicher geladen wurde Datei erfolgreich gespeichert - Dieser Dateityp wird nicht vom Datei-Viewer unterstützt. Du kannst sie stattdessen übers Menü herunterladen. + Dieser Dateityp wird nicht vom Datei-Viewer unterstützt. Du kannst sie stattdessen übers Menü herunterladen? Diese Datei löschen Diese Datei bearbeiten Lösche %1$s @@ -493,22 +491,22 @@ Committed von %1$s Commits anzeigen - Zertifikatsüberprüfung - Unbekanntes Zertifikat akzeptieren? - Das Serverzertifikat wurde nicht von einer bekannten Zertifizierungsstelle signiert - Das Server-Zertifikat ist abgelaufen. - Nicht übereinstimmender Hostname akzeptieren? - Server konnte sich nicht als \"%s\" authentifizieren. Das Zertifikat ist nur gültig für: - Möchtest du dich trotzdem verbinden? - Zertifikats-Details: - Vertrauen - Abbrechen + Zertifikatsüberprüfung + Unbekanntes Zertifikat akzeptieren? + Das Serverzertifikat wurde nicht von einer bekannten Zertifizierungsstelle signiert + Das Server-Zertifikat ist abgelaufen. + Nicht übereinstimmender Hostname akzeptieren? + Server konnte sich nicht als \"%s\" authentifizieren. Das Zertifikat ist nur gültig für: + Möchtest du dich trotzdem verbinden? + Zertifikats-Details: + Vertrauen + Abbrechen Erfolgreich abonniert Du hast bereits abonniert Abonnieren fehlgeschlagen Erfolgreich de-abonniert Du hast bereits de-abonniert - De-Abonnieren fehlgeschlagen + De-Abonnieren fehlgeschlagen Meilenstein schließen Meilenstein wieder öffnen Meilensteinstatus erfolgreich aktualisiert diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 6e03ec5b..7f3e2cd6 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -6,13 +6,13 @@ Repositorios Perfil Ajustes - Organizaciones + Organizaciones Sobre Valorar GitNex Cerrar sesión Explorar - Administration - Search Issues + Administración + Buscar incidencias Sobre @@ -28,7 +28,7 @@ Nueva incidencia Nueva etiqueta Créditos - Select Branch + Seleccionar rama Actualizar etiqueta Donadores Favoritos @@ -41,7 +41,7 @@ New Pull Request Repo Demo - Repo con ORG + Repo with ORG Descripción de demostración No se han encontrado repositorios Demostración de organización @@ -57,20 +57,20 @@ Nombre de la organización Descripción de la organización Máximo 255 caracteres - Usuario + Nombre de usuario Contraseña INICIAR SESIÓN URL de instancia - Abrir cajón de navegación - Cerrar cajón de navegación + Abrir cajón de navegación + Cerrar cajón de navegación Iniciar sesión en Gitea Protocol 1- Elige el protocolo correcto (https o http).\n2- Introduce Gitea URL p.e: try.gitea.io.\n3- Si has activado 2FA, introduce el código OTP.\n4- Para HTTP Basic Auth usa USUARIO@DOMAIN.COM en la caja de texto URL. Couldn\'t connect to host. Please check your URL or port for any errors - It is not recommended to use HTTP protocol unless you are testing on local network - Malformed JSON was received. Server response was not successful + No se recomienda usar el protocolo HTTP aparte de testos en la red de área local + JSON fue recibido invalido. La respuesta del servidor no tuvo éxito Se requiere la URL de la instancia - Se requiere el usuario + Se requiere el nombre de usuario Se requiere la contraseña Protocol is required No se puede acceder a la red, por favor comprueba tu conexión a internet @@ -101,14 +101,14 @@ Pri Eliminar La instancia ha devuelto un error. Código\u0020 - Repetir actividad - Detalles - Archivos - Milestones - Lanzamientos - Ramas - Etiquetas - Colaboradores + Repetir actividad + Detalles + Archivos + Milestones + Lanzamientos + Ramas + Etiquetas + Colaboradores Peticiones pull No se han encontrado incidencias Tamaño @@ -170,7 +170,7 @@ No se han encontrado etiquetas Traducción - Security + Seguridad Delete Trusted Certificates Delete Trusted Certificates? Are you sure to delete any manually trusted certificate or hostname? \n\nYou will also be logged out. @@ -182,7 +182,7 @@ Bonito Selecciona idioma Selecciona un formato de hora - Help us translate GitNex to your language + Ayúdanos a traducir GitNex a tu idioma nativo Code Block Color Code Block Color Selector Home Screen @@ -195,8 +195,8 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -218,18 +218,18 @@ No more data available Nueva etiqueta Repo Menu - Label Name - Label Color - Label name is empty - Label name is not valid - Label created. + Nombre de la etiqueta + Color de la etiqueta + Nombre de la etiqueta está vacía + Nombre de la etiqueta está invalida + Etiqueta creada. Algo salió mal, por favor, inténtalo de nuevo - Label updated. + Etiqueta actualizada. No se han encontrado etiquetas Desc - Edit + Editar Delete - Label deleted + Etiqueta borrada Algo salió mal, por favor, inténtalo de nuevo No se han encontrado ramas Select a branch for release @@ -238,139 +238,137 @@ Cancelar Cerrar sesión Eliminar\u0020 - Do you really want to delete this label? + ¿Estás seguro de borrar esta etiqueta? OK - Cancel + Cancelar - OrgDetailActivity + OrgDetailActivity Repositorios - Teams - Members - New Team - No teams found - Team name + Equipos + Miembros + Nuevo equipo + Ningún equipo encontrado + Nombre del equipo Team desc - Permission : %1$s - No members found + Permiso: %1$s + Ningún miembro encontrado Org members Organization team members - Add / Remove New Member + Añadir / Eliminar Miembro Nuevo Remove\u0020 Add\u0020 - Do you want to add this user to the team? - Do you want to remove this user from the team? - Member added to the team successfully - Member removed from the team successfully + ¿Quieres añadir este usuario al equipo? + ¿Quieres eleminar este usuario del equipo? + Miembro fue añadido al equipo con éxito + Miembro fue eliminado del equipo con éxito - Team Name - Description - Permission - Access Controls - Members can view and clone team repositories - Members can read and push to team repositories - Members can pull and push to team repositories and add collaborators to them - Please enter team name - Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters - Please select permission - Team description have illegal characters - Team description have more than 100 characters - Team created successfully + Nombre del equipo + Descripción + Permiso + Controles de acceso + Miembros pueden ver y clonar los repositorios del equipo + Miembros pueden leer y push a los repositorios del equipo + Miembros pueden pull y push a los repositorios del equipo y pueden añadir colaboradores + Por favor, introduce el nombre del equipo + El nombre del equipo tiene que consistir sólo en caracteres alfanuméricos, minus (-), barra baja (_) y punto (.) + Por favor, selecciona un permiso + La descripción del equipo incluye caracteres ilegales + La descripción del equipo tiene más de 100 caracteres + El equipo se ha creado con éxito Algo salió mal, por favor, inténtalo de nuevo - Edit Comment + Editar comentario Editar - Comment updated - Share Comment - Comment deleted successfully - Copy Comment + Comentario actualizado + Compartir comentario + El comentario se ha borrado con éxito + Copiar comentario - Add / Remove Collaborator - Search users - Usuario + Añadir / Eliminar colaborador + Buscar usuarios + Nombre de usuario Remove\u0020 - Do you want to remove this user from the repository? - User removed from the repository. - User added to the repository. + ¿Quieres eliminar este usuario del repositorio? + El usuario fue eliminado del repositorio. + El usuario fue añadido al repositorio. - Followers - Following - Add Email Address - Save + Seguidores + Siguiendo + Añadir correo electrónico + Guardar Email Address - New email added successfully - Email address is empty - Email address is not valid - Email address is already in use - Primary + Nuevo correo electrónico añadido con éxito + Correo electrónico está vacio + El correo electrónico está inválido + La dirección de correo electrónico ya está en uso + Principal Emails - Add / Remove Labels - Labels updated - Close Issue - Edit Issue - Reopen Issue - Issue closed - Issue reopened - Add / Remove Assignees - Assignees updated - Subscribe - Unsubscribe + Añadir / Eliminar etiquetas + Etiquetas actualizadas + Cerrar incidencia + Editar incidencia + Reabrir incidencia + Incidencia cerrada + Incidencia reabierta + Añadir / Eliminar asignados + Asignados actualizados + Suscribir + Desuscribir - - Select Entries - Please select at least - You can only select up to - option - options - Select all - - Repository Meta + Informaciones del repositorio - Add New User - System Users - Admin + Añadir nuevo usario + Usuarios del sistema + Administrador + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully - Full Name - Email - Username - Password - Invalid Full Name - Invalid Username - Invalid Email - New user added successfully - User already exists + Nombre completo + Correo electrónico + Nombre de usuario + Contraseña + Nombre completo inválido + Nombre de usuario inválido + Correo electrónico inválido + Nuevo usuario añadido con éxito + Usuario ya existe - Edit Issue #%1$s - Issue updated + Editar incidencia #%1$s + Incidencia actualizada - New Release - Tag Name - Title - Content - Mark as Pre-Release - Select Branch - Draft - Tag name is empty - Title is empty - New release created + Nueva Release + Nombre de la etiqueta + Título + Contenido + Marcar como versión previa + Seleccionar rama + Borrador + Nombre de la etiqueta está vacía + Título está vacío + Nueva Release creada - OTP code should be numbers - OTP Code (Optional) - Enter otp code if 2FA is enabled - Open in Browser - Stargazers - Watchers - No website found - No description found - No location found + Código de OTP debe consistir en números + Código de OTP (opcional) + Entre código de OTP cuando 2FA está activada + Abrir en navegador + Fans + Observadores + No se encontró una página web + No se encontró una descripción + No se encontró una ubicación Star Watcher Source code (ZIP) @@ -381,57 +379,57 @@ File Content Crear nuevo archivo with folder: app/test.md - Commit Message - Invalid branch name, may only contain –, a–z, 0–9 - Commit message is too long - New file created - Current Branches - Fields like filename, content and commit message are required - Selecting current branch will disable new branch - e.g: new-branch - New branch name cannot be empty if current branch is not selected - Filter - Branches + Mensaje del Commit + Nombre del rama inválido, solo tiene que contener –, a–z, 0–9 + Mensaje del Commit es demasiado largo + Nuevo archivo creado + Seleccionar o crear rama + Casillas como nombre del archivo, contenidos y mensaje del commit son necesarios + Deja blanco para hacer push a la rama estandarizada + Nuevo nombre del rama no puede estar vacío si la rama actuál no está seleccionada + Filtro + Ramas Markdown - Copy Issue URL - URL copied to clipboard - Copied comment to clipboard - %1$d\uFF05 completed + Copiar URL de la incidencia + URL copiada a los portapapeles + Comentario copiado a los portapapeles + %1$d\uFF05 completado - No files found - Sorry this file cannot be viewed as API returned an error - Not supported + Ningún archivo encontrado + Perdón, este archivo no se puede ver porque la API retorna un error + Archivos de este tipo no se pueden editar + No ofrece soporte OK - Done - Cancel + Hecho + Cancelar Algo salió mal, por favor, inténtalo de nuevo - This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea. - No data found - Add - Remove - You are not authorized to perform this action. + Este pedido necesita una Gitea versión más alta de la que está instalada. Por favor, actualiza tu instancia de Gitea a la versión más actual. + Ningunos datos encontrados + Añadir + Eliminar + No tienes permiso de hacer esta acción. Menú - Edit - Delete - Copy - Quote and Reply - edited - Save - Website - Location - Max 255 characters - All fields are required - Continue + Editar + Eliminar + Copiar + Citar y responder + modificado + Guardar + Página web + Ubicación + Máximo 255 caracteres + Todas las castillas son necesarias + Continuar Token Ver en el navegador - Open - Closed - We cannot reach the server at the moment, please check your server status and try again - Copy URL + Abierto + Cerrado + Por el momento no se puede contactar con el servidor. Por favor, compruebe el statús del servidor y intentalo de nuevo + Copiar URL - Explore repositories - Star Repository + Explorar repositorios + Favorizar repositorio Unstar Repository Repository added to starred list Repository removed from starred list @@ -448,9 +446,9 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found - Creator :\u0020 + Creador:\u0020 Edit Pull Request Copy Pull Request URL Edit Pull Request #%1$s @@ -477,7 +475,7 @@ Descargar este archivo Por favor espere a que el dispositivo cargue File saved successfully - Este tipo de archivo no es compatible con el visor de archivos. ¿Descargarlo en su lugar desde el menú de tres puntos? + Este tipo de archivo no es compatible con el visor de archivos. ¿Descargarlo en su lugar desde el menú de tres puntos? Delete This File Edit This File Delete %1$s @@ -489,26 +487,26 @@ Compartir Pull Request Compartir repositorio Crear repositorio - Commits + Compromisos Comisionado por %1$s Ver Compromisos - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index a9cf878a..7bbc83c0 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -6,7 +6,7 @@ مخازن نمایه تنظیمات - سازمان‌ها + سازمان‌ها درباره ما به GitNex امتیاز دهید خروج از حساب کاربری @@ -41,7 +41,7 @@ ایجاد درخواست ادغام جدید مخزن پیش نمایشی - مخزن با ORG + مخزن با ORG توضیحات پیش نمایشی هیچ مخزنی یافت نشد سازمان پیش نمایشی @@ -61,8 +61,8 @@ گذرواژه ورود به حساب کاربری URL نمونه - بار کردن کشوی ناوبری - بستن کشوی ناوبری + بار کردن کشوی ناوبری + بستن کشوی ناوبری ورود به Gitea پروتکل 1. پروتوکل صحیح را انتخاب کنید (http یا https) @@ -104,14 +104,14 @@ Pri حذف نمونه یک خطا اعلام کرد. کد\u0020 - RepoDetailActivity - جزئیات - فایل ها - نقاط عطف - انتشارها - شاخه‌ها - برچسب‌ها - همکاران + RepoDetailActivity + جزئیات + فایل ها + نقاط عطف + انتشارها + شاخه‌ها + برچسب‌ها + همکاران درخواست‌های ادغام هیچ مسئله‌ای یافت نشد اندازه‌ @@ -198,13 +198,13 @@ حالت شب PDF نمایشگر پرونده نشان‌های شمارشگر - پوسته کد منبع - انتخاب پوسته کد منبع + پوسته کد منبع + انتخاب پوسته کد منبع Data Cache Size Data Cache Size Images Cache Size Images Cache Size - Clear Cache + پاک‌کردن حافظه پنهان حافظه پنهان پاک شود؟ This will delete all the cache data including files and images.\n\nProceed with deletion? پیش نویس‌ها @@ -245,7 +245,7 @@ باشه لغو - OrgDetailActivity + OrgDetailActivity مخازن تیم‌ها اعضا @@ -324,19 +324,17 @@ مشترک شدن لغو اشتراک - - ورودی‌ها را انتخاب کنید - Please select at least - You can only select up to - گزینه - گزینه‌ها - انتخاب همه - Repository Meta افزودن کاربر جدید کاربران سامانه مدیر + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully نام کامل @@ -375,7 +373,7 @@ هیج توضیحی یافت نشد هیچ مکانی یافت نشد Star - Watcher + دیدبان کد منبع (ZIP) کد منبع (TAR.GZ) @@ -388,10 +386,9 @@ Invalid branch name, may only contain –, a–z, 0–9 Commit message is too long پرونده جدید ایجاد شد - شاخه‌های کنونی + Select or create a branch Fields like filename, content and commit message are required - Selecting current branch will disable new branch - برای مثال: شاخه-جدید + Leave blank to push to the default branch New branch name cannot be empty if current branch is not selected پالایه شاخه‌ها @@ -403,6 +400,7 @@ هیچ پرونده‌ای یافت نشد Sorry this file cannot be viewed as API returned an error + Files of this type cannot be edited پشتیبانی نمی‎شود باشه @@ -451,7 +449,7 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again توکن الزامی است - انشعاب پاک شده + انشعاب پاک شده No pull requests found سازنده :\u0020 ویرایش درخواست ادغام @@ -480,7 +478,7 @@ بارگیری این پرونده لطفا منتظر بمانید تا پرونده در حافظه بارگذاری شود پرونده با موفقیت ذخیره شد - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? حذف این پرونده ویرایش این پرونده حذف %1$s @@ -496,22 +494,22 @@ Committed by %1$s View Commits - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - جزئیات گواهی: - Trust - انصراف + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + جزئیات گواهی: + اطمینان + انصراف با موفقیت مشترک شد You have already subscribed - Subscription failed + اشتراک شکست خورد اشتراک با موفقیت لغو شد You have already Unsubscribed - لغو اشتراک شکست خورد + لغو اشتراک شکست خورد بستن نقطه عطف باز کردن نقطه عطف Milestone status updated successfully diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index a5dc943c..e5ce37a5 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -6,7 +6,7 @@ Repot Profiili Asetukset - Organisaatiot + Organisaatiot Tietoja Anna palautetta Kirjaudu ulos @@ -41,7 +41,7 @@ New Pull Request Demo repo - Repo with ORG + Repo with ORG Demo kuvaus Repoja ei löytynyt Demo organisaatio @@ -61,8 +61,8 @@ Salasana LOGIN Instance URL - Open Navigation Drawer - Close Navigation Drawer + Open Navigation Drawer + Close Navigation Drawer Login to Gitea Protocol 1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. @@ -101,14 +101,14 @@ Pri Remove Instance has returned an error. Code\u0020 - RepoDetailActivity - Details - Files - Milestones - Releases - Branches - Labels - Collaborators + RepoDetailActivity + Details + Files + Milestones + Releases + Branches + Labels + Collaborators Pull Requests No issues found Koko @@ -195,8 +195,8 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ OK Cancel - OrgDetailActivity + OrgDetailActivity Repositories Teams Members @@ -321,19 +321,17 @@ Subscribe Unsubscribe - - Select Entries - Please select at least - You can only select up to - option - options - Select all - Repository Meta Add New User System Users Admin + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Full Name @@ -385,10 +383,9 @@ Invalid branch name, may only contain –, a–z, 0–9 Commit message is too long New file created - Current Branches + Select or create a branch Fields like filename, content and commit message are required - Selecting current branch will disable new branch - e.g: new-branch + Leave blank to push to the default branch New branch name cannot be empty if current branch is not selected Filter Branches @@ -400,6 +397,7 @@ No files found Sorry this file cannot be viewed as API returned an error + Files of this type cannot be edited Not supported OK @@ -448,7 +446,7 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -477,7 +475,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Committed by %1$s View Commits - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index dc4d8346..b345d66b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -6,7 +6,7 @@ Dépôts Profil Configuration - Organisations + Organisations À propos Noter GitNex Déconnexion @@ -41,7 +41,7 @@ Nouvelle demande de tirage Dépôt de démonstration - Nom complet du dépôt + Nom complet du dépôt Description de démonstration Aucun dépôt Organisation de démonstration @@ -61,8 +61,8 @@ Mot de passe CONNEXION URL de l’instance - Ouvrir le volet de navigation - Fermer le volet de navigation + Ouvrir le volet de navigation + Fermer le volet de navigation Se connecter à Gitea Protocole 1. Choisissez le protocole adéquat (HTTPS ou HTTP)\n2. Entrez l’URL de votre instance Gitea (ex : try.gitea.io)\n3. Si l’authentification à deux facteurs est activée pour votre compte, saisissez le code OTP\n4. Pour une authentification basique avec HTTP, utilisez NOMDUTILISATEUR@DOMAINE.COM dans le champ URL GITEA @@ -101,14 +101,14 @@ Pri Supprimer L’instance a renvoyé une erreur. Code\u0020 - Activité du dépôt - Détails - Fichiers - Jalons - Versions - Branches - Étiquettes - Collaborateurs + Activité du dépôt + Détails + Fichiers + Jalons + Versions + Branches + Étiquettes + Collaborateurs Demandes de tirage Aucun ticket Taille @@ -171,8 +171,8 @@ Traduction Sécurité - Supprimer les certificats de confiance - Supprimer les certificats de confiance ? + Supprimer les certificats + Supprimer les certificats ? Les noms d’hôtes et les certificats ajoutés manuellement seront supprimés.\n\nIl faudra vous reconnecter. Date et heure Réglages enregistrés @@ -191,12 +191,12 @@ Police Police Thème de l’application - Thème + Thème de l’application PDF mode nuit Visionneuse de fichiers Compteurs - Thème des codes sources - Thème des codes sources + Couleurs du code source + Couleurs du code source Cache des données Cache des données Cache des images @@ -242,7 +242,7 @@ Confirmer Annuler - Activité de l’organisation + Activité de l’organisation Dépôts Équipes Membres @@ -321,19 +321,17 @@ S’abonner Se désabonner - - Sélection des entrées - Veuillez sélectionner au moins - Vous ne pouvez sélectionner que - option - options - Tout sélectionner - Informations Ajouter un nouvel utilisateur Utilisateurs système Admin + Tâches cron + Plannifier + Exécution suivante + Dernière exécution + Exécutions + La tâche %1$s a été créée avec succès Nom complet @@ -385,10 +383,9 @@ Nom de branche invalide [–, un–z, 0–9] Message de la révision trop long Nouveau fichier créé - Branche + Sélectionner ou créer une branche Le nom de fichier, le contenu et le message de la révision sont requis - Sélectionner une branche désactive les champs suivants - ex : new-branch + Laisser vide pour pousser dans la branche par défaut Nom de la nouvelle branche requis si aucune branche n’est sélectionnée Filtrer Branches @@ -400,6 +397,7 @@ Aucun fichier Ce fichier ne peut être affiché, l’API a retourné une erreur + Les fichiers de ce type ne peuvent être modifiés Non pris en charge Confirmer @@ -448,7 +446,7 @@ Choisissez une méthode de connexion pour accéder à votre compte. Le jeton est la plus sécurisée ! L\'instance a renvoyé une erreur « Autorisation refusée ». Vérifiez vos identifiants et réessayez. Jeton est requis - Fourche supprimée + Bifurcation supprimée Aucune demande de tirage Auteur :\u0020 Modifier la demande de tirage @@ -463,7 +461,7 @@ Supprimer la branche après la fusion La fusion peut échouer si vous n’êtes pas autorisé à fusionner cette demande de tirage. Le bouton Fusion désactivé signifie qu’il y a des conflits ou des choses à corriger au préalable - Cette branche appartient à un dépôt forké + Cette branche appartient à un dépôt bifurqué Commentaire de la fusion La demande de tirage a été fusionnée La demande de tirage ne peut pas être fusionnée @@ -477,7 +475,7 @@ Télécharger ce fichier Chargement du fichier dans la mémoire Fichier sauvegardé avec succès - La visionneuse ne prend pas en charge ce type de fichier. Télécharger ce fichier ? + La visionneuse ne prend pas en charge ce type de fichier. Télécharger ce fichier ? Supprimer ce fichier Éditer ce fichier Supprimer %1$s @@ -493,30 +491,30 @@ Révision de %1$s Voir révisions - Vérification du certificat - Accepter le certificat inconnu ? - Le certificat du serveur est signé par une autorité de certification inconnue - Le certificat du serveur a expiré. - Accepter le nom de serveur incohérent ? - Le serveur ne peut s’authentifier comme « %s ». Le certificat est valide pour : - Se connecter malgré tout ? - Détails du certificat : - Faire confiance - Abandonner + Vérification du certificat + Accepter le certificat inconnu ? + Le certificat du serveur est signé par une autorité de certification inconnue + Le certificat du serveur a expiré. + Accepter le nom de serveur incohérent ? + Le nom de serveur \"%s\" n’est pas certifié. Le certificat est valide pour : + Se connecter malgré tout ? + Détails du certificat : + Faire confiance + Abandonner Abonné avec succès Vous êtes déjà inscrit Échec de l’abonnement Désabonné avec succès Vous êtes déjà désabonné - Échec du désabonnement + Échec du désabonnement Fermer le jalon Ouvrir le jalon Jalon mis à jour Impossible d’accéder au serveur, veuillez vérifier son statut - Rapports de plantage + Débogage Rapports de plantage GitNex a planté :( - Rapports de plantage + Débogage Il est conseillé de créer un ticket expliquant comment reproduire ce bogue pour faciliter la correction du problème.\n\nAppuyez sur OK si vous préférez envoyer le rapport de plantage par courriel. Libre à vous d’y ajouter du contenu supplémentaire.\nMerci! Veuillez vous reconnecter Une reconnexion est nécessaire en raison de changements majeurs du fonctionnement interne pour améliorer la souplesse de l\'application.\n\nMerci pour votre patience et toutes nos excuses pour la gêne occasionnée. @@ -527,7 +525,7 @@ Tous les brouillons du compte seront supprimés.\n\nContinuer ? Brouillon sauvegardé automatiquement Thèmes, polices, badges - Mode PDF, thème du code source + Mode PDF, couleurs du code source Certificats SSL, cache Langues Rapports de plantage @@ -545,19 +543,19 @@ Notifications Aucune notification - Délai de scrutation des notifications + Période de scrutation %d minutes - Délai de scrutation - Choisissez un délai de scrutation où GitNex obtient les notifications + Période de scrutation + GitNex tentera de récupérer des notifications toutes les (en minutes) : Marquer comme lu Marquer comme non lu Épingler la notification Les notifications ont été marquées comme lues Délai d\'interrogation, témoin lumineux, vibreur - Activer les notifications + Notifications Activer le témoin lumineux Activer le vibreur - Choisir une couleur + Couleur Nouveaux messages Vous avez %d nouvelles notifications. Lu diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 94887aca..432c934f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -6,7 +6,7 @@ Repositories Profilo Impostazioni - Organizzazioni + Organizzazioni Info su Valuta GitNex Esci @@ -41,7 +41,7 @@ New Pull Request Demo repo - Repo con ORG + Repo con ORG Descrizione demo Nessuna repository trovata Organizzazione demo @@ -61,8 +61,8 @@ Password LOGIN URL Istanza - Apri panello Navigazione - Chiudi panello Navigazione + Apri panello Navigazione + Chiudi panello Navigazione Accedi a Gitea Protocol 1- Scegli il protocollo corretto(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. @@ -102,14 +102,14 @@ URL è richiesto Pri Rimuovi L\'istanza ha restituito un errore. Codice\u0020 - RepoDettaglioAttività - Dettagli - File - Milestones - Rilasci - Branches - Labels - Collaboratori + RepoDettaglioAttività + Dettagli + File + Milestones + Rilasci + Branches + Labels + Collaboratori Pull Requests Nessun problema trovato Dimensione @@ -196,8 +196,8 @@ URL è richiesto PDF Modalità Notturna Visualizzatore File Contatori - Tema Codice Sorgente - Seleziona il tema del Codice Sorgente + Tema Codice Sorgente + Seleziona il tema del Codice Sorgente Dimensione Cache Dati Dimensione Cache Dati Dimensione Cache Immagini @@ -243,7 +243,7 @@ URL è richiesto OK Annullare - OrgDettaglioActivita + OrgDettaglioActivita I miei Repository Team Partecipanti @@ -323,19 +323,17 @@ autorizzazione Iscriviti Disiscriviti - - Elementi selezionati - Seleziona almeno - Puoi selezionare solo fino a - opzione - opzioni - Seleziona tutti - Meta repository Aggiungi nuovo utente Utenti Di Sistema Amministratore + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Nome completo @@ -387,10 +385,9 @@ autorizzazione Nome del branch non valido, può contenere solo –, a–z, 0–9 Il messaggio di commit è troppo lungo Nuovo file creato - Branches correnti + Select or create a branch Campi come nome file, contenuto e messaggio di commit sono obbligatori - Selezionando il branch attuale disattiverà il nuovo branch - ad es: nuovo branch + Leave blank to push to the default branch Il nuovo nome del branch non può essere vuoto se il branch attuale non è selezionato Filtro Branches @@ -402,6 +399,7 @@ autorizzazione Nessun file trovato Spiacenti, questo file non può essere visto come l\'API ha restituito un errore + Files of this type cannot be edited Non supportato OK @@ -450,7 +448,7 @@ autorizzazione Scegli il tuo metodo di accesso preferito per accedere al tuo account. Il token è più sicuro! L\'istanza ha restituito un errore - Non autorizzato. Controlla le tue credenziali e riprova Token is required - Fork Eliminato + Fork Eliminato Nessuna richiesta pull request trovata Creatore:\u0020 Modifica Pull Request @@ -479,7 +477,7 @@ autorizzazione Scarica Questo File Attendere che il file venga caricato in memoria File salvato con successo - Questo tipo di file non è supportato nel visualizzatore di file. Scaricarlo invece dal menu con i tre punti? + Questo tipo di file non è supportato nel visualizzatore di file. Scaricarlo invece dal menu con i tre punti? Delete This File Edit This File Delete %1$s @@ -495,22 +493,22 @@ autorizzazione Commit di %1$s Visualizza Commit - Verifica Del Certificato - Accettare Certificato Sconosciuto? - The server certificate is not signed by a known Certificate Authority - Il certificato del server è scaduto. - Accettare Nome Server Non Corrispondente? - Il server non può autenticarsi come \"%s\". Il certificato è valido solo per: - Vuoi connetterti comunque? - Dettagli del certificato: - Fidati - Annulla + Verifica Del Certificato + Accettare Certificato Sconosciuto? + Il certificato del server non è firmato da un\'autorità di certificazione conosciuta + Il certificato del server è scaduto. + Accettare Nome Server Non Corrispondente? + Il server non può autenticarsi come \"%s\". Il certificato è valido solo per: + Vuoi connetterti comunque? + Dettagli del certificato: + Fidati + Annulla Iscritto con successo Ti sei già iscritto Sottoscrizione fallita Disiscritto con successo Hai già annullato l\'iscrizione - Disiscrizione fallita + Disiscrizione fallita Chiudi Milestone Apri Milestone Stato del Milestone aggiornato con successo diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 388d3daa..d690006b 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -6,7 +6,7 @@ Repozitoriji Profils Iestatījumi - Organizācijas + Organizācijas Par Rate GitNex Logout @@ -41,7 +41,7 @@ New Pull Request Demo repo - Repo with ORG + Repo with ORG Demo description No repositories found Demo organization @@ -61,8 +61,8 @@ Password LOGIN Instance URL - Open Navigation Drawer - Close Navigation Drawer + Open Navigation Drawer + Close Navigation Drawer Login to Gitea Protocol 1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. @@ -101,14 +101,14 @@ Pri Remove Instance has returned an error. Code\u0020 - RepoDetailActivity - Details - Files - Milestones - Releases - Branches - Labels - Collaborators + RepoDetailActivity + Details + Files + Milestones + Releases + Branches + Labels + Collaborators Pull Requests No issues found Size @@ -195,8 +195,8 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ OK Cancel - OrgDetailActivity + OrgDetailActivity Repositories Teams Members @@ -321,19 +321,17 @@ Subscribe Unsubscribe - - Select Entries - Please select at least - You can only select up to - option - options - Select all - Repository Meta Add New User System Users Admin + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Full Name @@ -385,10 +383,9 @@ Invalid branch name, may only contain –, a–z, 0–9 Commit message is too long New file created - Current Branches + Select or create a branch Fields like filename, content and commit message are required - Selecting current branch will disable new branch - e.g: new-branch + Leave blank to push to the default branch New branch name cannot be empty if current branch is not selected Filter Branches @@ -400,6 +397,7 @@ No files found Sorry this file cannot be viewed as API returned an error + Files of this type cannot be edited Not supported OK @@ -448,7 +446,7 @@ Choose your preferred login method to access your account. Token is more secure! Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -477,7 +475,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Committed by %1$s View Commits - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 43efea75..646985cd 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -6,7 +6,7 @@ Repozytoria Profil Ustawienia - Organizacje + Organizacje O programie Oceń GitNex Wyloguj się @@ -41,7 +41,7 @@ New Pull Request Repozytorium demo - Repozytorium z ORG + Repozytorium z ORG Opis demo Nie znaleziono repozytoriów Organizacja demo @@ -61,8 +61,8 @@ Hasło ZALOGUJ Adres URL instancji - Otwórz szufladę nawigacji - Zamknij szufladę nawigacji + Otwórz szufladę nawigacji + Zamknij szufladę nawigacji Zaloguj się do Gitea Protokół 1- Wybierz poprawny protokół (https lub http). \n2- Wprowadź adres URL Gitea np: try.gitea.io. \n3- Jeśli włączyłeś 2FA dla swojego konta, wprowadź kod w polu OTP Code. \n4 - Dla podstawowej autoryzacji HTTP użyj NAZWAUŻYTKOWNIKA@STRONA.PL w polu URL. @@ -101,14 +101,14 @@ Pri Usuń Instancja zwróciła błąd. Kod\u0020 - Szczegółowa aktywność repozytorium - Szczegóły - Pliki - Kamienie milowe - Wydania - Oddziały - Etykiety - Współpracownicy + Szczegółowa aktywność repozytorium + Szczegóły + Pliki + Kamienie milowe + Wydania + Oddziały + Etykiety + Współpracownicy Pull Requesty Nie znaleziono problemów Rozmiar @@ -195,8 +195,8 @@ Tryb nocny PDF Przeglądarka plików Odznaki liczników - Motyw kodu źródłowego - Wybierz motyw kodu źródłowego + Motyw kodu źródłowego + Wybierz motyw kodu źródłowego Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ OK Anuluj - Szczegółowa aktywność organizacji + Szczegółowa aktywność organizacji Repozytoria Zespoły Członkowie @@ -321,19 +321,17 @@ Subskrybuj Anuluj subskrypcję - - Wybierz wpisy - Proszę wybrać co najmniej - Możesz wybrać tylko do - opcja - opcje - Zaznacz wszystkie - Meta repozytorium Dodaj nowego użytkownika System Users Administrator + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Pełna nazwa @@ -385,10 +383,9 @@ Nieprawidłowa nazwa gałęzi, może zawierać tylko –,–z, 0–9 Wiadomość commitu jest zbyt długa Nowy plik został utworzony - Bieżące oddziały + Select or create a branch Pola takie jak nazwa pliku, zawartość i wiadomość zatwierdzenia są wymagane - Wybranie bieżącej gałęzi spowoduje wyłączenie nowej gałęzi - np. nowa-gałąź + Leave blank to push to the default branch Nazwa nowej gałęzi nie może być pusta, jeśli nie wybrano bieżącej gałęzi Filtr Branches @@ -400,6 +397,7 @@ Nie znaleziono plików Przepraszamy, ten plik nie może być otworzony, ponieważ API zwrócił błąd + Files of this type cannot be edited Not supported OK @@ -448,7 +446,7 @@ Wybierz preferowaną metodę logowania, aby uzyskać dostęp do swojego konta. Token jest bezpieczniejszy! Instancja zwróciła błąd - nieautoryzowana. Sprawdź swoje dane i spróbuj ponownie Token is required - Deleted Fork + Deleted Fork Nie znaleziono pull requestów Twórca:\u0020 Edytuj Pull Request @@ -477,7 +475,7 @@ Pobierz ten plik Poczekaj aż plik załaduje się do pamięci File saved successfully - Ten typ pliku nie jest obsługiwany w przeglądarce plików. Pobrać go z trzech kropkowanych menu? + Ten typ pliku nie jest obsługiwany w przeglądarce plików. Pobrać go z trzech kropkowanych menu? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Zcommitowane przez %1$s Zobacz commity - Weryfikacja certyfikatu - Zaakceptować nieznany certyfikat? - The server certificate is not signed by a known Certificate Authority - Certyfikat serwera wygasł. - Accept Mismatching Server Name? - Serwer nie mógł uwierzytelnić jako \"%s\". Certyfikat jest ważny tylko dla: - Czy mimo to chcesz się połączyć? - Szczegóły certyfikatu: - Zaufaj - Przerwij + Weryfikacja certyfikatu + Zaakceptować nieznany certyfikat? + Certyfikat serwera jest podpisany przez nieznany organ certyfikacji + Certyfikat serwera wygasł. + Zaakceptować niepasującą nazwę serwera? + Serwer nie mógł uwierzytelnić jako \"%s\". Certyfikat jest ważny tylko dla: + Czy mimo to chcesz się połączyć? + Szczegóły certyfikatu: + Zaufaj + Przerwij Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Zamknij etap Otwórz etap Status etapu zaktualizowany pomyślnie diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index a02d45aa..0a96d13c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -6,7 +6,7 @@ Repositórios Perfil Configurações - Organizações + Organizações Sobre Avalie o GitNex Sair @@ -41,7 +41,7 @@ Novo Pull Request Repo demo - Repo com ORG + Repo com ORG Descrição demo Nenhum repositório encontrado Organização demo @@ -61,8 +61,8 @@ Senha ENTRAR URL da instância - Abrir painel de navegação - Fechar painel de navegação + Abrir painel de navegação + Fechar painel de navegação Conectar no Gitea Protocolo 1- Escolha o protocolo correto (https ou http). \n2- Insira a url do Gitea. Por exemplo: try.gitea.io. \n3 - Se você habilitou 2FA para sua conta, digite o código no campo de código OTP. \n4- Para autenticação básica HTTP use USUARIO@DOMINIO.COM no campo URL. @@ -101,14 +101,14 @@ Pri Remover A instância retornou um erro. Código\u0020 - RepoDetailActivity - Detalhes - Arquivos - Metas - Versões - Branches - Marcadores - Colaboradores + RepoDetailActivity + Detalhes + Arquivos + Metas + Versões + Branches + Marcadores + Colaboradores Pull requests Nenhum incidente encontrado Tamanho @@ -195,8 +195,8 @@ Modo noturno do PDF Visualizador de Arquivos Contra-emblemas - Tema do Código Fonte - Escolha Tema do Código Fonte + Tema do Código Fonte + Escolha Tema do Código Fonte Tamanho do Arquivo Cache Tamanho do Arquivo Cache Tamanho do Cache das Imagens @@ -242,7 +242,7 @@ OK Cancelar - OrgDetailActivity + OrgDetailActivity Repositórios Equipes Membros @@ -321,19 +321,17 @@ Inscreva-se Anular inscrição - - Selecionar - Por favor, selecione pelo menos - Você só pode selecionar até - opção - opções - Selecionar tudo - Metadados do repositório Adicionar novo usuário Usuários do Sistema Admin + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Nome completo @@ -385,10 +383,9 @@ Nome de branch inválido só pode conter –, um–z, 0–9 Mensagem de commit muito longa Novo arquivo criado - Branches atuais + Select or create a branch Campos como nome de arquivo, conteúdo e mensagem de commit são necessários - Selecionar branch atual irá desativar o novo branch - ex.: nova-branch + Leave blank to push to the default branch Novo nome do branch não pode estar vazio se o branch atual não estiver selecionado Filtro Filiais @@ -400,6 +397,7 @@ Nenhum arquivo encontrado Desculpe, este arquivo não pode ser visto pois a API retornou um erro + Files of this type cannot be edited Não suportado OK @@ -448,7 +446,7 @@ Escolha seu método de login preferido para acessar sua conta. O token é mais seguro! A instância retornou um erro - Não autorizado. Verifique suas credenciais e tente novamente Token é obrigatório - Fork excluído + Fork excluído Nenhum pull request encontrado Criador:\u0020 Editar Pull Request @@ -477,7 +475,7 @@ Baixar este arquivo Aguarde que o arquivo seja carregado para a memória Arquivo salvo com êxito - Esse tipo de arquivo não é suportado no visualizador de arquivos. Baixe-o no menu de três pontos? + Esse tipo de arquivo não é suportado no visualizador de arquivos. Baixe-o no menu de três pontos? Excluir Este Arquivo Editar Este Arquivo Excluir %1$s @@ -493,22 +491,22 @@ Commit feito por %1$s Ver Commits - Certificado de Verificação - Aceitar Certificado desconhecido? - O certificado do servidor não é assinado por uma Autoridade Certificadora conhecida - O certificado do servidor expirou. - Aceitar o nome do servidor incompatível? - O servidor não pôde se autenticar como \"%s\". O certificado é válido apenas para: - Deseja conectar mesmo assim? - Detalhes do certificado: - Confiança - Anular + Certificado de Verificação + Aceitar Certificado desconhecido? + O certificado do servidor não é assinado por uma Autoridade Certificadora conhecida + O certificado do servidor expirou. + Aceitar o nome do servidor incompatível? + O servidor não pôde se autenticar como \"%s\". O certificado é válido apenas para: + Deseja conectar mesmo assim? + Detalhes do certificado: + Confiança + Anular Inscrito com êxito Você já se inscreveu Falha na assinatura Subscrição anulada com êxito Você já cancelou sua assinatura - Falha ao cancelar assinatura + Falha ao cancelar assinatura Fechar marco Nova meta Estado do Marco atualizado com êxito diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 440ecbf2..db0358dd 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -6,7 +6,7 @@ Репозитории Профиль Настройки - Организации + Организации О программе Оценить GitNex Выход @@ -41,7 +41,7 @@ Новый запрос на слияние Демо репозиторий - Репозиторий с организацией + Репозиторий с организацией Демо описание Репозиториев не обнаружено Демо организации @@ -61,8 +61,8 @@ Пароль Войти Адрес сервера - Открыть навигацию - Закрыть навигацию + Открыть навигацию + Закрыть навигацию Войти в Gitea Протокол 1. Выберите протокол (https или http) \n2. Укажите URL Gitea, например: try.gitea.io \n3. Если для учетной записи включена 2FA, введите код OTP в соответствующее поле. \n4. Для базовой аутентификации HTTP укажите USERNAME@DOMAIN.COM в поле URL. @@ -101,14 +101,14 @@ Лич. Удалить Инстанция вернула ошибку. Код\u0020 - Активность - Детали - Файлы - Вехи - Релизы - Ветки - Метки - Сотрудники + Активность + Детали + Файлы + Вехи + Релизы + Ветки + Метки + Сотрудники Запросы на слияние Задач не обнаружено Размер @@ -195,8 +195,8 @@ Ночной режим PDF Просмотрщик файла Значки счётчика - Тема исходного кода - Выбрать тему исходного кода + Тема исходного кода + Выбрать тему исходного кода Размер кэша данных Размер кэша данных Размер кэша изображений @@ -242,7 +242,7 @@ Да Отмена - Активность организации + Активность организации Репозитории Команды Участники @@ -321,19 +321,17 @@ Подписаться Отписаться - - Выбрать записи - Пожалуйста, выберите по хотя бы - Вы можете выбрать только до - вариант - варианты - Выбрать все - Метаинформация репозитория Создать нового пользователя Пользователи системы Администратор + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Полное имя @@ -385,10 +383,9 @@ Некоректное имя ветки, разрешенные символя: –, a–z, 0–9 Слишком длинное сообщение коммита Новый файл создан - Текущие ветки + Select or create a branch Необходимо указать имя файла, содержимое и сообщение коммита - Выбор текущей ветки отключит новую ветку - например: новая-ветка + Leave blank to push to the default branch Имя новой ветки не может быть пустым, если текущая ветка не выбрана Фильтр Ветки @@ -400,6 +397,7 @@ Файлов не найдено Извините, невозможно просмотреть файл, поскольку API вернул ошибку + Files of this type cannot be edited Не поддерживается ОК @@ -448,7 +446,7 @@ Выберите предпочтительный метод входа для доступа к вашей учетной записи. Токен более безопасный! Экземпляр вернул ошибку - не авторизовано. Проверьте ваши учетные данные и повторите попытку Требуется токен - Удалённый Форк + Удалённый Форк Запросов на слияние не найдено Автор:\u0020 Редактировать запрос на слияние @@ -477,7 +475,7 @@ Скачать этот файл Пожалуйста дождитесь загрузки файла Файл успешно сохранён - Этот тип файла не поддерживается в средстве просмотра файлов. Загрузить его? + Этот тип файла не поддерживается в средстве просмотра файлов. Загрузить его? Удалить этот файл Редактировать этот файл Удалить %1$s @@ -493,22 +491,22 @@ Коммит от %1$s Просмотр коммитов - Проверка сертификата - Принять неизвестный сертификат? - Сертификат сервера не подписан известным центром сертификации - Срок действия сертификата сервера истек. - Принять несоответствующее имя сервера? - Сервер не может быть опознан как \"%s\". Сертификат действителен только для: - Вы все равно хотите продолжить? - Детали о сертификате: - Доверять - Прервать + Проверка сертификата + Принять неизвестный сертификат? + Сертификат сервера не подписан известным центром сертификации + Срок действия сертификата сервера истек. + Имя сервера не совпадает. Принять? + Сервер не может быть опознан как \"%s\". Сертификат действителен только для: + Вы все равно хотите продолжить? + Детали о сертификате: + Доверять + Прервать Подписано успешно Вы уже подписаны Подписка не удалась Подписка успешно отменена Вы уже отписались - Не удалось отменить подписку + Не удалось отменить подписку Закрыть этап Открыть этап Статус этапа успешно обновлён diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index eaa7e4ee..ff43856e 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -6,7 +6,7 @@ Репозиторијуми Профил Подешавања - Организације + Организације О програму Оцени GitNex Одјави ме @@ -41,7 +41,7 @@ New Pull Request Демо репозиторијум - Репозиторијум са ORG + Репозиторијум са ORG Демо опис Ниједан репозиторијум није пронађен Демо организација @@ -61,8 +61,8 @@ Лозинка Пријави ме URL инстанце - Отвори навигацију - Затвори навигацију + Отвори навигацију + Затвори навигацију Пријави ме Protocol 1. Одабери одговарајући протокол (HTTPS или HTTP).\n2. Унеси URL инстанце, нпр. try.gitea.io.\n3. Ако користиш 2FA, унеси OTP код.\n4. Ако користиш HTTP протокол, унеси URL инстанце у формату korisnickoime@domen.com. @@ -101,14 +101,14 @@ При Уклони Сервер је вратио грешку: код\u0020 - Активности - Детаљи - Фајлови - Фазе - Издања - Гране - Ознаке - Сарадници + Активности + Детаљи + Фајлови + Фазе + Издања + Гране + Ознаке + Сарадници Пул захтеви Ниједан задатак није пронађен Величина @@ -195,8 +195,8 @@ PDF ноћни режим Прегледач фајлова Беџеви - Тема - Изабери тему + Тема + Изабери тему Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ У реду Откажи - Активности + Активности Репозиторијуми Тимови Чланови @@ -321,19 +321,17 @@ Пријави се Одјави се - - Одабери - Одабери бар - Можеш одабрати највише - опцију - опције - Одабери све - Основни подаци Додај новог корисника System Users Администратор + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Пуно име @@ -385,10 +383,9 @@ Назив гране није валидан Опис комита је предугачак Фајл је креиран - Постојеће гране + Select or create a branch Назив фајла и опис комита су обавезни - Одабир тренутне гране ће онемогућити нову грану - нпр. nova-grana + Leave blank to push to the default branch Назив нове гране је обавезан ако тренутна грана није одабрана Филтер Branches @@ -400,6 +397,7 @@ Ниједан фајл није пронађен Нешто је пошло наопако, покушај поново + Files of this type cannot be edited Not supported У реду @@ -448,7 +446,7 @@ Одабери начин за пријављивање. Имај у виду да је токен безбеднији него корисничко име и лозинка. Грешка. Провери креденцијале и покушај поново. Token is required - Deleted Fork + Deleted Fork Ниједан пул захтев није пронађен Аутор: \u0020 Уреди пул захтев @@ -477,7 +475,7 @@ Преузми овај фајл Сачекај да се фајл учита у меморију File saved successfully - Прегледач фајлова не подржава овај тип. Да ли желиш да преузмеш фајл? + Прегледач фајлова не подржава овај тип. Да ли желиш да преузмеш фајл? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Аутор комита: %1$s Прегледај комитове - Провера сертификата - Да ли желиш да прихватиш непознате сертификате? - The server certificate is not signed by a known Certificate Authority - Сертификат је истекао. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Да ли ипак желиш да се повежеш? - Детаљи о сертификату: - Trust - Abort + Провера сертификата + Да ли желиш да прихватиш непознате сертификате? + The server certificate is not signed by a known Certificate Authority + Сертификат је истекао. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Да ли ипак желиш да се повежеш? + Детаљи о сертификату: + Поуздано + Поништи Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Затвори фазу Отвори фазу Фаза је ажурирана diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3eb8b36b..f6dc7e2c 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -6,7 +6,7 @@ Depolar Profil Ayarlar - Organizasyonlar + Organizasyonlar Hakkında GitNex\'i Puanla Çıkış Yap @@ -41,7 +41,7 @@ New Pull Request Demo deposu - ORG ile Depo + ORG ile Depo Demo açıklaması Depo bulunamadı Demo organizasyonu @@ -61,8 +61,8 @@ Parola OTURUM AÇ Örnek URL - Gezinme Çekmecesini Aç - Gezinme Çekmecesini Kapat + Gezinme Çekmecesini Aç + Gezinme Çekmecesini Kapat Gitea\'ya Giriş Yap Protocol 1- Doğru protokolü seçin (https veya http). \n2- Gitea url girin, örneğin: try.gitea.io. \n3- Hesabınız için 2FA\'yı etkinleştirdiyseniz, kodu OTP Kodu alanına girin. \n4- HTTP temel kimlik doğrulaması için, URL alanında KULLANICIADI@DOMAIN.COM adresini kullanın. @@ -101,14 +101,14 @@ Gizli Kaldır Örnek bir hata döndürdü. Kod\u0020 - DepoDetayEtkinliği - Ayrıntılar - Dosyalar - Kilometre Taşları - Sürümler - Dallar - Etiketler - İşbirlikçiler + DepoDetayEtkinliği + Ayrıntılar + Dosyalar + Kilometre Taşları + Sürümler + Dallar + Etiketler + İşbirlikçiler İstekleri Çek Konu bulunamadı Boyut @@ -195,8 +195,8 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Select Source Code Theme + Source Code Theme + Select Source Code Theme Data Cache Size Data Cache Size Images Cache Size @@ -242,7 +242,7 @@ Tamam İptal - KuruluşDetayıEtkinliği + KuruluşDetayıEtkinliği Depolar Takımlar Üyeler @@ -321,19 +321,17 @@ Subscribe Unsubscribe - - Öğeleri Seç - Lütfen en azını seçin - Sadece en fazla şunu yapabilirsiniz - seçenek - seçenekler - Tümünü seç - Depo Meta Yeni Kullanıcı Ekle System Users Yönetici + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Tam Ad @@ -385,10 +383,9 @@ Geçersiz dal adı, yalnızca –, a–z, 0–9 içerebilir İşleme mesajı çok uzun Yeni dosya oluşturuldu - Dallar + Select or create a branch Dosya adı, içerik ve işleme mesajı gibi alanların doldurulması zorunludur - Mevcut şubeyi seçmek yeni şubeyi devre dışı bırakacaktır - ör: yeni-dal + Leave blank to push to the default branch Geçerli dal seçilmemişse yeni dal adı boş bırakılamaz Filtre Branches @@ -400,6 +397,7 @@ Dosya bulunamadı Üzgünüz, bu dosya API hata döndürdüğü için görüntülenemiyor + Files of this type cannot be edited Not supported Tamam @@ -448,7 +446,7 @@ Hesabınıza erişmek için tercih ettiğiniz giriş yöntemini seçin. Jeton daha güvenli! Örnek bir hata döndürdü - Yetkisiz. Kimlik bilgilerinizi kontrol edin ve tekrar deneyin Token is required - Deleted Fork + Deleted Fork Çekme isteği bulunamadı Yaratıcı :\u0020 Çekme İsteğini Düzenle @@ -477,7 +475,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Committed by %1$s View Commits - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Sertifika doğrulama + Bilinmeyen sertifika kabul edilsin mi? + Sunucu sertifikası bilinen bir sertifika yetkilisi tarafından imzalanmamış + Bu sertifikasının süresi doldu. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone Milestone status updated successfully diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 0a75e74b..52e1ba47 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -6,7 +6,7 @@ Репозиторії Профіль Налаштування - Організації + Організації Про додаток Оцінити GitNex Вийти @@ -41,7 +41,7 @@ New Pull Request Демо-репозиторій - Репозиторій з організацією + Репозиторій з організацією Демо опис Репозиторіїв не знайдено Демо організація @@ -61,8 +61,8 @@ Пароль УВІЙТИ URL екземпляру - Відкрити панель навігації - Закрити панель навігації + Відкрити панель навігації + Закрити панель навігації Увійти до Gitea Protocol 1. Оберіть правильний протокол (https або http). \n2. Введіть URL Gitea, наприклад: try.gitea.io. \n3. Якщо для вашого облікового запису увімкнено двофакторну аутентифікацію, введіть код OTP у відповідне поле. \n4. Для базової автентифікації HTTP використовуйте USERNAME@DOMAIN.COM в полі URL. @@ -101,14 +101,14 @@ Пр Видалити Екземпляр повернув помилку. Код\u0020 - Активність - Подробиці - Файли - Етапи - Релізи - Гілки - Мітки - Співавтори + Активність + Подробиці + Файли + Етапи + Релізи + Гілки + Мітки + Співавтори Запити на злиття Проблем не знайдено Розмір @@ -195,8 +195,8 @@ Нічний режим PDF Перегляд файлів Кількість значків - Тема вихідного коду - Оберіть тему вихідного коду + Тема вихідного коду + Оберіть тему вихідного коду Розмір кешу даних Розмір кешу даних Розмір кешу зображень @@ -242,7 +242,7 @@ Так Скасувати - Активність організації + Активність організації Репозиторії Команди Учасники @@ -321,19 +321,17 @@ Підписатися Відписатися - - Обрати записи - Будь ласка, оберіть принаймні - Ви можете обрати до - параметр - параметри - Вибрати все - Метаінформація репозиторія Додати нового користувача Користувачі системи Адміністратор + Cron Tasks + Schedule + Next Run + Last Run + Executions + Task %1$s is initiated successfully Повне ім\'я @@ -385,10 +383,9 @@ Некоректне ім\'я гілки, дозволені символи: –, a–z, 0–9 Повідомлення коміту задовге Новий файл створено - Поточні гілки + Select or create a branch Поля імені файлу, вмісту та повідомлення коміту є обов\'язковими - Вибір поточної гілки вимкне нову гілку - наприклад: нова-гілка + Leave blank to push to the default branch Назва нової гілки не може бути пустою, якщо не обрано поточну гілку Фільтр Branches @@ -400,6 +397,7 @@ Файлів не знайдено Вибачте, цей файл неможливо переглянути, оскільки API повернув помилку + Files of this type cannot be edited Not supported ОК @@ -448,7 +446,7 @@ Оберіть бажаний метод входу для доступу до облікового запису. Токен є більш безпечним! Екземпляр повернув помилку - не авторизовано. Перевірте облікові дані та спробуйте знову Token is required - Deleted Fork + Deleted Fork Запитів на злиття не знайдено Автор :\u0020 Редагувати запит на злиття @@ -477,7 +475,7 @@ Завантажити цей файл Зачекайте, поки файл завантажиться Файл успішно збережений - Цей тип файлу не підтримується у переглядачі файлів. Завантажити його з меню? + Цей тип файлу не підтримується у переглядачі файлів. Завантажити його з меню? Delete This File Edit This File Delete %1$s @@ -493,22 +491,22 @@ Коміт від %1$s Перегляд змін - Перевірка сертифіката - Прийняти незнайомий сертифікат? - The server certificate is not signed by a known Certificate Authority - Термін дії сертифіката сервера закінчився. - Ім\'я сервера не збігається, прийняти? - Сервер не може автентифікуватись як \"%s\". Сертифікат дійсний тільки для: - Усе одно бажаєте підключитися? - Деталі сертифіката: - Довіряти - Перервати + Перевірка сертифіката + Прийняти незнайомий сертифікат? + Сертифікат сервера не підписано відомим центром сертифікації + Термін дії сертифіката сервера закінчився. + Ім\'я сервера не збігається, прийняти? + Сервер не може автентифікуватись як \"%s\". Сертифікат дійсний тільки для: + Усе одно бажаєте підключитися? + Деталі сертифіката: + Довіряти + Перервати Підписано успішно Ви вже підписалися Не вдалося підписатися Підписку успішно відмінено Ви вже відписалися - Не вдалося відписатися + Не вдалося відписатися Закрити етап Відкрити етап Статус етапу успішно оновлено diff --git a/app/src/main/res/values-v23/themes.xml b/app/src/main/res/values-v23/themes.xml index bd16df27..7f393a90 100644 --- a/app/src/main/res/values-v23/themes.xml +++ b/app/src/main/res/values-v23/themes.xml @@ -38,6 +38,7 @@ @style/customOverflowMenuStyle @color/lightThemeInputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition @@ -79,6 +80,7 @@ @style/customOverflowMenuStyle @color/retroThemeInputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 3892ef20..a9cb8a53 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -6,7 +6,7 @@ 仓库列表 个人信息 设置 - 组织 + 组织 关于 五星好评! 退出 @@ -41,7 +41,7 @@ 新拉取请求 演示仓库 - 有组织的存储库 + 有组织的存储库 演示描述 没有任何仓库 演示组织 @@ -61,8 +61,8 @@ 密码 登录 Gitea访问地址 - 打开导航栏 - 关闭导航栏 + 打开导航栏 + 关闭导航栏 登录到 Gitea 协议 1- 选择协议 (https 或 http). \n2- 输入Gitea访问地址(可带端口) 例如: try.gitea.io:3000. \n3- 如已启用双重验证,请在OTP输入有效代码。 \n4- 在 URL 字段中使用 USERNAME@DOMAIN.COM 进行 HTTP 基本身份验证。 @@ -101,14 +101,14 @@ Pri 移除 实例返回了一个错误。代码\u0020 - 仓库详细信息 - 详情 - 文件 - 里程碑 - 版本发布 - 分支 - 标签 - 协作者 + 仓库详细信息 + 详情 + 文件 + 里程碑 + 版本发布 + 分支 + 标签 + 协作者 拉取请求 没有工单 尺寸 @@ -195,8 +195,8 @@ PDF 夜间模式 文件查看器 计数徽章 - 源代码主题 - 选择源代码主题 + 源代码主题 + 选择源代码主题 数据缓存大小 数据缓存大小 图像缓存大小 @@ -242,7 +242,7 @@ 确定 取消 - OrgDetail活动 + OrgDetail活动 仓库列表 团队 成员 @@ -321,19 +321,17 @@ 订阅 取消订阅 - - 选择条目 - 请至少选择 - 您只能最多选择 - 选项 - 选项 - 全选 - 仓库元数据 添加新用户 系统用户 管理员 + Cron 任务 + 排程 + 下一次运行 + 上一次运行 + 执行 + 任务 %1$s 初始化成功 全名 @@ -385,10 +383,9 @@ 分支名称无效,只能包含 –,–z, 0–9 提交消息过长 新文件已创建 - 当前分支 + 选择或创建一个分支 需要文件名、内容和提交消息等字段 - 选择当前分支将禁用新分支 - 例如:新分支 + 留空以推送到默认分支 如果未选择当前分支,新分支名称不能为空 筛选器 分支 @@ -400,6 +397,7 @@ 找不到文件 抱歉,此文件无法查看,因为API返回了错误 + 不能编辑此类型的文件 不受支持 确定 @@ -448,7 +446,7 @@ 建议您使用更安全的令牌方式进行登录。 令牌可能已失效,请检查后重试 令牌是必需的。 - 已删除分叉 + 已删除分叉 未找到拉取请求 创建者:\u0020 编辑拉取请求 @@ -477,7 +475,7 @@ 下载此文件 请等待文件加载到内存 文件保存成功 - 这个文件类型在文件查看器中不支持。从三个虚线菜单下载吗? + 这个文件类型在文件查看器中不支持。从三个虚线菜单下载吗? 删除此文件 编辑此文件 删除 %1$s @@ -493,22 +491,22 @@ 由 %1$s提交 查看提交 - 证书验证 - 接受未知证书? - 服务器证书非经已知的证书颁发机构签署 - 服务器证书已过期。 - 接受不匹配的服务器名称? - 服务器无法认证为\"%s\"。证书仅有效于: - 您仍然想要连接吗? - 证书详情: - 信任 - 中止 + 证书验证 + 接受未知证书? + 服务器证书非经已知的证书颁发机构签署 + 服务器证书已过期。 + 接受不匹配服务器名称? + 服务器无法认证为\"%s\"。证书仅有效于: + 您仍然想要连接吗? + 证书详情: + 信任 + 中止 订阅成功 您已经订阅 订阅失败 取消订阅成功 您已取消订阅 - 取消订阅失败 + 取消订阅失败 关闭里程碑 打开里程碑 里程碑状态更新成功 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b37ec8a1..c3b502c5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - GitNex + GitNex gitnex@swatian.com Source code https://codeberg.org/gitnex/GitNex @@ -25,7 +25,7 @@ Repositories Profile Settings - Organizations + Organizations About Rate GitNex Logout @@ -62,7 +62,7 @@ Demo repo - Repo with ORG + Repo with ORG Demo description No repositories found @@ -87,8 +87,8 @@ Password LOGIN Instance URL - Open Navigation Drawer - Close Navigation Drawer + Open Navigation Drawer + Close Navigation Drawer Login to Gitea Protocol 1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. @@ -136,14 +136,14 @@ Remove Instance has returned an error. Code\u0020 - RepoDetailActivity - Details - Files - Milestones - Releases - Branches - Labels - Collaborators + RepoDetailActivity + Details + Files + Milestones + Releases + Branches + Labels + Collaborators Pull Requests No issues found @@ -252,9 +252,9 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Sublime - Select Source Code Theme + Source Code Theme + Sublime + Select Source Code Theme Data Cache Size Data Cache Size 50 MB @@ -275,6 +275,7 @@ Choose what screen should be loaded if the app cannot handle external links. It will redirect you automatically. N/A Select Default Link Handler Screen + Biometric Support No more data available @@ -309,7 +310,7 @@ Cancel - OrgDetailActivity + OrgDetailActivity Repositories Teams Members @@ -397,15 +398,6 @@ Unsubscribe - - Select Entries - Please select at least - You can only select up to - option - options - Select all - - Repository Meta @@ -496,7 +488,7 @@ No files found Sorry this file cannot be viewed as API returned an error \u0020:\u0020 - + Files of this type cannot be edited Not supported @@ -556,7 +548,7 @@ Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -586,7 +578,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -605,23 +597,23 @@ Changelog - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone @@ -743,4 +735,13 @@ Grey on Black White on Grey Dark on White + + Biometric Authentication + Unlock using your biometric credentials + No biometric features available on this device + Biometric features are currently unavailable + Enroll biometric from phone settings + + Login ID \'%s\' copied to clipboard + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index a2af303a..58880a3f 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -38,6 +38,7 @@ @style/customOverflowMenuStyle @color/inputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition @@ -78,6 +79,7 @@ @style/customOverflowMenuStyle @color/lightThemeInputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition @@ -118,6 +120,7 @@ @style/customOverflowMenuStyle @color/retroThemeInputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition @@ -158,6 +161,7 @@ @style/customOverflowMenuStyle @color/inputBackground @style/inputsMaterialComponentCorner + @style/WindowAnimationTransition @@ -271,6 +275,11 @@ ?attr/iconsColor + +