From 0e69d13ff7ade6d072ebc8f2a49a6f4e84a9d7c1 Mon Sep 17 00:00:00 2001 From: Kosh Sergani Date: Thu, 10 Aug 2017 17:35:19 +0800 Subject: [PATCH] preparing for gist editing. --- app/build.gradle | 2 +- .../fastaccess/data/dao/CreateGistModel.java | 10 +-- .../fastaccess/data/dao/FilesListModel.java | 14 ++-- .../data/dao/FragmentPagerAdapterModel.java | 4 +- .../fastaccess/data/service/GistService.java | 2 +- .../ui/adapter/GistFilesAdapter.java | 7 +- .../fastaccess/ui/adapter/TrendingAdapter.kt | 1 + .../viewholder/GistFilesViewHolder.java | 20 ++++-- .../ui/adapter/viewholder/LoginViewHolder.kt | 8 +-- .../adapter/viewholder/TrendingViewHolder.kt | 15 ++-- .../ui/modules/gists/gist/GistActivity.java | 16 ++++- .../ui/modules/gists/gist/GistMvp.java | 8 ++- .../ui/modules/gists/gist/GistPresenter.java | 31 ++++++++ .../gist/files/GistFilesListFragment.java | 70 +++++++++++++++---- .../gists/gist/files/GistFilesListMvp.java | 12 +++- .../gist/files/GistFilesListPresenter.java | 11 ++- .../login/chooser/LoginChooserActivity.kt | 13 ++-- .../modules/main/premium/PremiumActivity.kt | 8 +-- .../repos/extras/branches/BranchesFragment.kt | 11 +-- .../branches/pager/BranchesPagerFragment.kt | 9 ++- .../extras/license/RepoLicenseBottomSheet.kt | 10 +-- .../ui/modules/repos/wiki/WikiActivity.kt | 13 ++-- .../reviews/AddReviewDialogFragment.kt | 10 +-- .../reviews/changes/ReviewChangesActivity.kt | 8 +-- .../sound/NotificationSoundBottomSheet.kt | 8 ++- .../ui/modules/theme/ThemeActivity.kt | 6 +- .../modules/theme/code/ThemeCodeActivity.kt | 14 ++-- .../modules/theme/fragment/ThemeFragment.kt | 6 +- .../ui/modules/trending/TrendingActivity.kt | 32 ++++----- .../trending/fragment/TrendingFragment.kt | 18 +++-- .../layout/gist_files_row_item.xml | 33 ++++++--- 31 files changed, 292 insertions(+), 138 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5bc0c224..34c10b7e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -166,12 +166,12 @@ dependencies { implementation 'com.apollographql.apollo:apollo-rx2-support:0.4.0' implementation 'com.jaredrummler:android-device-names:1.1.4' compileOnly "org.projectlombok:lombok:${lombokVersion}" - kapt "io.requery:requery-processor:${requery}" kapt "org.projectlombok:lombok:${lombokVersion}" kapt "com.evernote:android-state-processor:${state_version}" kapt "com.jakewharton:butterknife-compiler:${butterKnifeVersion}" kapt 'com.github.matthiasrobbers:shortbread-compiler:1.0.1' kapt "org.projectlombok:lombok:${lombokVersion}" + kapt "io.requery:requery-processor:${requery}" // testImplementation "net.grandcentrix.thirtyinch:thirtyinch-test:$thirtyinchVersion" testImplementation "junit:junit:${junitVersion}" testImplementation "org.mockito:mockito-core:${mockitoVersion}" diff --git a/app/src/main/java/com/fastaccess/data/dao/CreateGistModel.java b/app/src/main/java/com/fastaccess/data/dao/CreateGistModel.java index 0e930d79..8beb2811 100644 --- a/app/src/main/java/com/fastaccess/data/dao/CreateGistModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/CreateGistModel.java @@ -19,23 +19,23 @@ import lombok.Setter; public class CreateGistModel implements Parcelable { private HashMap files; private String description; - @SerializedName("public") private boolean publicGist; + @SerializedName("public") private Boolean publicGist; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeSerializable(this.files); dest.writeString(this.description); - dest.writeByte(this.publicGist ? (byte) 1 : (byte) 0); + dest.writeValue(this.publicGist); } - @SuppressWarnings({"WeakerAccess", "unchecked"}) protected CreateGistModel(Parcel in) { + @SuppressWarnings("unchecked") private CreateGistModel(Parcel in) { this.files = (HashMap) in.readSerializable(); this.description = in.readString(); - this.publicGist = in.readByte() != 0; + this.publicGist = (Boolean) in.readValue(Boolean.class.getClassLoader()); } - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public static final Creator CREATOR = new Creator() { @Override public CreateGistModel createFromParcel(Parcel source) {return new CreateGistModel(source);} @Override public CreateGistModel[] newArray(int size) {return new CreateGistModel[size];} diff --git a/app/src/main/java/com/fastaccess/data/dao/FilesListModel.java b/app/src/main/java/com/fastaccess/data/dao/FilesListModel.java index 2883f6f3..c3440ac2 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FilesListModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FilesListModel.java @@ -18,9 +18,9 @@ public class FilesListModel implements Parcelable, Serializable { private String filename; private String type; private String rawUrl; - private long size; + private Long size; private String content; - private boolean needFetching; + private Boolean needFetching; private String language; @Override public int describeContents() { return 0; } @@ -29,19 +29,19 @@ public class FilesListModel implements Parcelable, Serializable { dest.writeString(this.filename); dest.writeString(this.type); dest.writeString(this.rawUrl); - dest.writeLong(this.size); + dest.writeValue(this.size); dest.writeString(this.content); - dest.writeByte(this.needFetching ? (byte) 1 : (byte) 0); + dest.writeValue(this.needFetching); dest.writeString(this.language); } - private FilesListModel(Parcel in) { + protected FilesListModel(Parcel in) { this.filename = in.readString(); this.type = in.readString(); this.rawUrl = in.readString(); - this.size = in.readLong(); + this.size = (Long) in.readValue(Long.class.getClassLoader()); this.content = in.readString(); - this.needFetching = in.readByte() != 0; + this.needFetching = (Boolean) in.readValue(Boolean.class.getClassLoader()); this.language = in.readString(); } diff --git a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java index 335ac726..5dc90ddd 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java @@ -151,9 +151,9 @@ import lombok.Setter; .collect(Collectors.toList()); } - @NonNull public static List buildForGist(@NonNull Context context, @NonNull Gist gistsModel) { + @NonNull public static List buildForGist(@NonNull Context context, @NonNull Gist gistsModel, boolean isOwner) { - return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.files), GistFilesListFragment.newInstance(gistsModel.getFiles())), + return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.files), GistFilesListFragment.newInstance(gistsModel.getFiles(), isOwner)), new FragmentPagerAdapterModel(context.getString(R.string.comments), GistCommentsFragment.newInstance(gistsModel.getGistId()))) .collect(Collectors.toList()); } diff --git a/app/src/main/java/com/fastaccess/data/service/GistService.java b/app/src/main/java/com/fastaccess/data/service/GistService.java index bc088be4..4a703ce1 100644 --- a/app/src/main/java/com/fastaccess/data/service/GistService.java +++ b/app/src/main/java/com/fastaccess/data/service/GistService.java @@ -32,7 +32,7 @@ public interface GistService { @POST("gists") Observable createGist(@Body CreateGistModel gistBody); - @POST("gists/{id}") Observable editGist(@Body CreateGistModel gistBody, @NonNull @Path("id") String id); + @PATCH("gists/{id}") Observable editGist(@Body CreateGistModel gistBody, @NonNull @Path("id") String id); @DELETE("gists/{id}") Observable> deleteGist(@Path("id") String id); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/GistFilesAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/GistFilesAdapter.java index c6871899..52d8438c 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/GistFilesAdapter.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/GistFilesAdapter.java @@ -17,13 +17,16 @@ import java.util.List; public class GistFilesAdapter extends BaseRecyclerAdapter> { + private boolean isOwner; - public GistFilesAdapter(@NonNull List data, @Nullable BaseViewHolder.OnItemClickListener listener) { + public GistFilesAdapter(@NonNull List data, @Nullable BaseViewHolder.OnItemClickListener listener, + boolean isOwner) { super(data, listener); + this.isOwner = isOwner; } @Override protected GistFilesViewHolder viewHolder(ViewGroup parent, int viewType) { - return GistFilesViewHolder.newInstance(parent, this); + return GistFilesViewHolder.newInstance(parent, this, isOwner); } @Override protected void onBindView(GistFilesViewHolder holder, int position) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/TrendingAdapter.kt b/app/src/main/java/com/fastaccess/ui/adapter/TrendingAdapter.kt index fe60ffb8..252ab5c9 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/TrendingAdapter.kt +++ b/app/src/main/java/com/fastaccess/ui/adapter/TrendingAdapter.kt @@ -13,6 +13,7 @@ import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder class TrendingAdapter(data: MutableList) : BaseRecyclerAdapter>(data) { + override fun viewHolder(parent: ViewGroup?, viewType: Int): TrendingViewHolder { return TrendingViewHolder(BaseViewHolder.getView(parent!!, R.layout.trending_row_item), this) } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistFilesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistFilesViewHolder.java index a81dfc58..34494296 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistFilesViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GistFilesViewHolder.java @@ -9,6 +9,7 @@ import com.fastaccess.R; import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.ui.adapter.GistFilesAdapter; import com.fastaccess.ui.widgets.FontTextView; +import com.fastaccess.ui.widgets.ForegroundImageView; import com.fastaccess.ui.widgets.SpannableBuilder; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; @@ -20,23 +21,32 @@ import butterknife.BindView; public class GistFilesViewHolder extends BaseViewHolder { - @BindView(R.id.fileName) FontTextView fileName; @BindView(R.id.language) FontTextView language; @BindView(R.id.size) FontTextView size; + @BindView(R.id.delete) ForegroundImageView delete; + @BindView(R.id.edit) ForegroundImageView edit; + private boolean isOwner; - private GistFilesViewHolder(@NonNull View itemView, GistFilesAdapter adapter) { + private GistFilesViewHolder(@NonNull View itemView, GistFilesAdapter adapter, boolean isOwner) { super(itemView, adapter); - + this.isOwner = isOwner; + if (isOwner) { + delete.setOnClickListener(this); + edit.setOnClickListener(this); + } } - public static GistFilesViewHolder newInstance(@NonNull ViewGroup parent, GistFilesAdapter adapter) { - return new GistFilesViewHolder(getView(parent, R.layout.gist_files_row_item), adapter); + public static GistFilesViewHolder newInstance(@NonNull ViewGroup parent, GistFilesAdapter adapter, boolean isOwner) { + return new GistFilesViewHolder(getView(parent, R.layout.gist_files_row_item), adapter, isOwner); } @Override public void bind(@NonNull FilesListModel filesListModel) { fileName.setText(filesListModel.getFilename()); language.setText(SpannableBuilder.builder().bold(filesListModel.getType())); size.setText(Formatter.formatFileSize(size.getContext(), filesListModel.getSize())); + delete.setVisibility(isOwner ? View.VISIBLE : View.GONE); + edit.setVisibility(isOwner ? View.VISIBLE : View.GONE); } + } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/LoginViewHolder.kt b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/LoginViewHolder.kt index 3afcb1c4..006a351f 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/LoginViewHolder.kt +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/LoginViewHolder.kt @@ -4,12 +4,11 @@ import android.annotation.SuppressLint import android.net.Uri import android.view.View import android.view.ViewGroup +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.model.Login import com.fastaccess.ui.widgets.AvatarLayout import com.fastaccess.ui.widgets.FontTextView -import com.fastaccess.ui.widgets.bindOptionalView -import com.fastaccess.ui.widgets.bindView import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder @@ -19,8 +18,9 @@ import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder class LoginViewHolder private constructor(itemView: View, adapter: BaseRecyclerAdapter<*, *, *>?) : BaseViewHolder(itemView, adapter) { - private val avatarLayout: AvatarLayout? by bindOptionalView(R.id.avatarLayout) - private val title: FontTextView by bindView(R.id.title) + + val avatarLayout: AvatarLayout? by lazy { itemView.findViewById(R.id.avatarLayout) as AvatarLayout } + @BindView(R.id.title) lateinit var title: FontTextView @SuppressLint("SetTextI18n") override fun bind(login: Login) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TrendingViewHolder.kt b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TrendingViewHolder.kt index 67533a89..c55acee1 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TrendingViewHolder.kt +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TrendingViewHolder.kt @@ -1,13 +1,13 @@ package com.fastaccess.ui.adapter.viewholder import android.view.View +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.TrendingModel import com.fastaccess.helper.Logger import com.fastaccess.provider.colors.ColorsProvider import com.fastaccess.provider.emoji.EmojiParser import com.fastaccess.ui.widgets.FontTextView -import com.fastaccess.ui.widgets.bindView import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder @@ -18,12 +18,13 @@ import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder open class TrendingViewHolder(itemView: View, adapter: BaseRecyclerAdapter>) : BaseViewHolder(itemView, adapter) { - private val title: FontTextView by bindView(R.id.title) - private val description: FontTextView by bindView(R.id.description) - private val todayStars: FontTextView by bindView(R.id.todayStars) - private val stars: FontTextView by bindView(R.id.stars) - private val fork: FontTextView by bindView(R.id.forks) - private val lang: FontTextView by bindView(R.id.language) + @BindView(R.id.title) lateinit var title: FontTextView + @BindView(R.id.description) lateinit var description: FontTextView + @BindView(R.id.todayStars) lateinit var todayStars: FontTextView + @BindView(R.id.stars) lateinit var stars: FontTextView + @BindView(R.id.forks) lateinit var fork: FontTextView + @BindView(R.id.language) lateinit var lang: FontTextView + override fun bind(t: TrendingModel) { title.text = t.title diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java index 139ada5d..25a281d0 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java @@ -15,8 +15,10 @@ import android.view.MenuItem; import android.view.View; import com.fastaccess.R; +import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.model.Gist; +import com.fastaccess.data.dao.model.Login; import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; @@ -35,6 +37,8 @@ import com.fastaccess.ui.widgets.ForegroundImageView; import com.fastaccess.ui.widgets.ViewPagerView; import com.fastaccess.ui.widgets.dialog.MessageDialogView; +import java.util.List; + import butterknife.BindView; import butterknife.OnClick; @@ -220,7 +224,8 @@ public class GistActivity extends BaseActivity date.setText(ParseDateFormat.getTimeAgo(gistsModel.getCreatedAt())); } size.setText(Formatter.formatFileSize(this, gistsModel.getSize())); - pager.setAdapter(new FragmentsPagerAdapter(getSupportFragmentManager(), FragmentPagerAdapterModel.buildForGist(this, gistsModel))); + pager.setAdapter(new FragmentsPagerAdapter(getSupportFragmentManager(), FragmentPagerAdapterModel.buildForGist(this, gistsModel + , Login.getUser().getLogin().equalsIgnoreCase(login)))); tabs.setupWithViewPager(pager); pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { @@ -248,11 +253,16 @@ public class GistActivity extends BaseActivity } } + @Override public void onUpdateGist(@NonNull List files, @NonNull String filename) { + getPresenter().onUpdateGist(files, filename); + } + private void hideShowFab() { if (pager.getCurrentItem() == 1) { - fab.show(); + fab.setImageResource(R.drawable.ic_comment); } else { - fab.hide(); + fab.setImageResource(R.drawable.ic_add); } + fab.show(); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistMvp.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistMvp.java index 302ec981..c90e5191 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistMvp.java @@ -4,8 +4,12 @@ import android.content.Intent; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.data.dao.model.Gist; import com.fastaccess.ui.base.mvp.BaseMvp; +import com.fastaccess.ui.modules.gists.gist.files.GistFilesListMvp; + +import java.util.List; /** * Created by Kosh on 12 Nov 2016, 12:17 PM @@ -13,7 +17,7 @@ import com.fastaccess.ui.base.mvp.BaseMvp; interface GistMvp { - interface View extends BaseMvp.FAView { + interface View extends BaseMvp.FAView, GistFilesListMvp.UpdateGistCallback { void onSuccessDeleted(); void onErrorDeleting(); @@ -48,5 +52,7 @@ interface GistMvp { void checkStarring(@NonNull String gistId); void onWorkOffline(@NonNull String gistId); + + void onUpdateGist(@NonNull List files, String filename); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java index fb96e228..2279c2f6 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java @@ -5,13 +5,21 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.annimon.stream.Collectors; +import com.annimon.stream.Stream; +import com.fastaccess.data.dao.CreateGistModel; +import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.data.dao.model.Gist; import com.fastaccess.data.dao.model.Login; import com.fastaccess.helper.BundleConstant; +import com.fastaccess.helper.Logger; import com.fastaccess.helper.RxHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; +import java.util.HashMap; +import java.util.List; + /** * Created by Kosh on 12 Nov 2016, 12:17 PM */ @@ -106,4 +114,27 @@ class GistPresenter extends BasePresenter implements GistMvp.Prese })); } } + + @Override public void onUpdateGist(@NonNull List files, @NonNull String filename) { + CreateGistModel createGistModel = new CreateGistModel(); + createGistModel.setDescription(gist.getDescription()); + Logger.e(filename); + if (!files.isEmpty()) { + HashMap map = Stream.of(files) + .collect(Collectors.toMap(FilesListModel::getFilename, filesListModel -> filesListModel, HashMap::new)); + map.put(filename, new FilesListModel()); + createGistModel.setFiles(map); + } else { + HashMap map = new HashMap<>(); + map.put(filename, new FilesListModel()); + createGistModel.setFiles(map); + } + makeRestCall(RestProvider.getGistService(isEnterprise()).editGist(createGistModel, gistId), + gist1 -> { + if (gist1 != null) { + gist = gist1; + sendToView(GistMvp.View::onSetupDetails); + } + }); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListFragment.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListFragment.java index 4c9df3b7..f1065665 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListFragment.java @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.gists.gist.files; +import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -19,6 +20,7 @@ import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.adapter.GistFilesAdapter; import com.fastaccess.ui.base.BaseFragment; import com.fastaccess.ui.modules.code.CodeViewerActivity; +import com.fastaccess.ui.modules.gists.gist.files.GistFilesListMvp.UpdateGistCallback; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.dialog.MessageDialogView; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; @@ -39,15 +41,32 @@ public class GistFilesListFragment extends BaseFragment(gistsModel.values())) + .put(BundleConstant.EXTRA_TYPE, isOwner) .end()); return view; } + @Override public void onAttach(Context context) { + super.onAttach(context); + if (getParentFragment() instanceof UpdateGistCallback) { + updateGistCallback = (UpdateGistCallback) getParentFragment(); + } else if (context instanceof UpdateGistCallback) { + updateGistCallback = (UpdateGistCallback) context; + } + } + + @Override public void onDetach() { + updateGistCallback = null; + super.onDetach(); + } + @Override protected int fragmentLayout() { return R.layout.small_grid_refresh_list; } @@ -58,6 +77,7 @@ public class GistFilesListFragment extends BaseFragment filesListModel = getArguments().getParcelableArrayList(BundleConstant.ITEM); + boolean isOwner = getArguments().getBoolean(BundleConstant.EXTRA_TYPE); stateLayout.hideReload(); stateLayout.setEmptyText(R.string.no_files); recycler.setEmptyView(stateLayout); @@ -66,25 +86,31 @@ public class GistFilesListFragment extends BaseFragment FileHelper.ONE_MB && !MarkDownProvider.isImage(item.getRawUrl())) { - MessageDialogView.newInstance(getString(R.string.big_file), getString(R.string.big_file_description), false, true, - Bundler.start().put(BundleConstant.YES_NO_EXTRA, true).put(BundleConstant.EXTRA, item.getRawUrl()).end()) - .show(getChildFragmentManager(), "MessageDialogView"); - } else { - CodeViewerActivity.startActivity(getContext(), item.getRawUrl(), item.getRawUrl()); - } - } else { - showErrorMessage(getString(R.string.no_url)); + if (canOpen(item)) { + CodeViewerActivity.startActivity(getContext(), item.getRawUrl(), item.getRawUrl()); } } + @Override public void onDeleteFile(@NonNull FilesListModel item, int position) { + MessageDialogView.newInstance(getString(R.string.delete), getString(R.string.confirm_message), false, + Bundler.start() + .put(BundleConstant.ID, position) + .put(BundleConstant.YES_NO_EXTRA, true) + .end()) + .show(getChildFragmentManager(), MessageDialogView.TAG); + } + + @Override public void onEditFile(@NonNull FilesListModel item, int position) { + + } + @Override public void onMessageDialogActionClicked(boolean isOk, @Nullable Bundle bundle) { super.onMessageDialogActionClicked(isOk, bundle); if (isOk && bundle != null) { @@ -93,6 +119,15 @@ public class GistFilesListFragment extends BaseFragment FileHelper.ONE_MB && !MarkDownProvider.isImage(item.getRawUrl())) { + MessageDialogView.newInstance(getString(R.string.big_file), getString(R.string.big_file_description), false, true, + Bundler.start().put(BundleConstant.YES_NO_EXTRA, true).put(BundleConstant.EXTRA, item.getRawUrl()).end()) + .show(getChildFragmentManager(), "MessageDialogView"); + return false; + } + return true; + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListMvp.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListMvp.java index 91cde58e..88dc5cad 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListMvp.java @@ -6,15 +6,25 @@ import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.ui.base.mvp.BaseMvp; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; +import java.util.List; + /** * Created by Kosh on 13 Nov 2016, 1:35 PM */ -interface GistFilesListMvp { +public interface GistFilesListMvp { interface View extends BaseMvp.FAView { void onOpenFile(@NonNull FilesListModel item); + + void onDeleteFile(@NonNull FilesListModel item, int position); + + void onEditFile(@NonNull FilesListModel item, int position); } interface Presenter extends BaseMvp.FAPresenter, BaseViewHolder.OnItemClickListener {} + + interface UpdateGistCallback { + void onUpdateGist(@NonNull List files, @NonNull String filename); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListPresenter.java index 6df48a7f..5e7cdf44 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/files/GistFilesListPresenter.java @@ -2,6 +2,7 @@ package com.fastaccess.ui.modules.gists.gist.files; import android.view.View; +import com.fastaccess.R; import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; @@ -12,7 +13,15 @@ import com.fastaccess.ui.base.mvp.presenter.BasePresenter; class GistFilesListPresenter extends BasePresenter implements GistFilesListMvp.Presenter { @Override public void onItemClick(int position, View v, FilesListModel item) { - if (getView() != null) getView().onOpenFile(item); + if (getView() != null) { + if (v.getId() == R.id.delete) { + getView().onDeleteFile(item, position); + } else if (v.getId() == R.id.edit) { + getView().onEditFile(item, position); + } else { + getView().onOpenFile(item); + } + } } @Override public void onItemLongClick(int position, View v, FilesListModel item) {} diff --git a/app/src/main/java/com/fastaccess/ui/modules/login/chooser/LoginChooserActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/login/chooser/LoginChooserActivity.kt index 3636e54d..6bd8318e 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/login/chooser/LoginChooserActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/login/chooser/LoginChooserActivity.kt @@ -7,6 +7,7 @@ import android.support.design.widget.CoordinatorLayout import android.support.transition.TransitionManager import android.view.View import android.widget.RelativeLayout +import butterknife.BindView import butterknife.OnClick import com.fastaccess.BuildConfig import com.fastaccess.R @@ -18,7 +19,6 @@ import com.fastaccess.ui.base.BaseActivity import com.fastaccess.ui.modules.login.LoginActivity import com.fastaccess.ui.modules.main.premium.PremiumActivity import com.fastaccess.ui.modules.settings.LanguageBottomSheetDialog -import com.fastaccess.ui.widgets.bindView import com.fastaccess.ui.widgets.dialog.MessageDialogView import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView import io.reactivex.functions.Action @@ -30,11 +30,12 @@ import java.util.* class LoginChooserActivity : BaseActivity(), LoginChooserMvp.View { - private val language_selector: RelativeLayout by bindView(R.id.language_selector) - private val recycler: DynamicRecyclerView by bindView(R.id.recycler) - private val multiAccLayout: View by bindView(R.id.multiAccLayout) - private val viewGroup: CoordinatorLayout by bindView(R.id.viewGroup) - private val toggleImage: View by bindView(R.id.toggleImage) + @BindView(R.id.language_selector) lateinit var language_selector: RelativeLayout + @BindView(R.id.recycler) lateinit var recycler: DynamicRecyclerView + @BindView(R.id.multiAccLayout) lateinit var multiAccLayout: View + @BindView(R.id.viewGroup) lateinit var viewGroup: CoordinatorLayout + @BindView(R.id.toggleImage) lateinit var toggleImage: View + private val adapter = LoginAdapter() override fun layout(): Int = R.layout.login_chooser_layout diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/premium/PremiumActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/main/premium/PremiumActivity.kt index b2628a0b..dfcf0a86 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/premium/PremiumActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/main/premium/PremiumActivity.kt @@ -7,6 +7,7 @@ import android.support.transition.TransitionManager import android.view.View import android.widget.EditText import android.widget.FrameLayout +import butterknife.BindView import butterknife.OnClick import butterknife.OnEditorAction import com.crashlytics.android.answers.Answers @@ -19,16 +20,15 @@ import com.fastaccess.helper.PrefGetter import com.fastaccess.helper.ViewHelper import com.fastaccess.ui.base.BaseActivity import com.fastaccess.ui.modules.main.donation.DonateActivity -import com.fastaccess.ui.widgets.bindView /** * Created by kosh on 13/07/2017. */ class PremiumActivity : BaseActivity(), PremiumMvp.View { - private val editText: EditText by bindView(R.id.editText) - private val progressLayout: View by bindView(R.id.progressLayout) - private val viewGroup: FrameLayout by bindView(R.id.viewGroup) + @BindView(R.id.editText) lateinit var editText: EditText + @BindView(R.id.viewGroup) lateinit var viewGroup: FrameLayout + @BindView(R.id.progressLayout) lateinit var progressLayout: FrameLayout override fun layout(): Int = R.layout.pro_features_layout diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/BranchesFragment.kt b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/BranchesFragment.kt index 36390821..1ffed6ab 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/BranchesFragment.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/BranchesFragment.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.support.v4.widget.SwipeRefreshLayout import android.view.View +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.BranchesModel import com.fastaccess.helper.BundleConstant @@ -20,10 +21,12 @@ import com.fastaccess.ui.widgets.recyclerview.scroll.RecyclerViewFastScroller * Created by Kosh on 06 Jul 2017, 9:48 PM */ class BranchesFragment : BaseFragment(), BranchesMvp.View { - private val recycler: DynamicRecyclerView by lazy { view!!.findViewById(R.id.recycler) } - private val refresh: SwipeRefreshLayout by lazy { view!!.findViewById(R.id.refresh) } - private val stateLayout: StateLayout by lazy { view!!.findViewById(R.id.stateLayout) } - private val fastScroller: RecyclerViewFastScroller by lazy { view!!.findViewById(R.id.fastScroller) } + + @BindView(R.id.recycler) lateinit var recycler: DynamicRecyclerView + @BindView(R.id.refresh) lateinit var refresh: SwipeRefreshLayout + @BindView(R.id.stateLayout) lateinit var stateLayout: StateLayout + @BindView(R.id.fastScroller) lateinit var fastScroller: RecyclerViewFastScroller + private var onLoadMore: OnLoadMore? = null private var branchCallback: BranchesPagerListener? = null diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/pager/BranchesPagerFragment.kt b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/pager/BranchesPagerFragment.kt index 23cbd3e5..ecf94306 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/pager/BranchesPagerFragment.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/branches/pager/BranchesPagerFragment.kt @@ -6,6 +6,7 @@ import android.support.design.widget.TabLayout import android.support.v4.view.ViewPager import android.support.v7.widget.Toolbar import android.view.View +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.BranchesModel import com.fastaccess.data.dao.FragmentPagerAdapterModel @@ -21,9 +22,11 @@ import com.fastaccess.ui.modules.repos.extras.branches.BranchesMvp * Created by kosh on 15/07/2017. */ class BranchesPagerFragment : BaseDialogFragment>(), BranchesPagerListener { - private val pager: ViewPager by lazy { view!!.findViewById(R.id.pager) } - private val tabs: TabLayout by lazy { view!!.findViewById(R.id.tabs) } - private val toolbar: Toolbar by lazy { view!!.findViewById(R.id.toolbar) } + + @BindView(R.id.pager) lateinit var pager: ViewPager + @BindView(R.id.tabs) lateinit var tabs: TabLayout + @BindView(R.id.toolbar) lateinit var toolbar: Toolbar + private var branchCallback: BranchesMvp.BranchSelectionListener? = null override fun onAttach(context: Context) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/license/RepoLicenseBottomSheet.kt b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/license/RepoLicenseBottomSheet.kt index 07f4104b..cf926da4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/license/RepoLicenseBottomSheet.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/license/RepoLicenseBottomSheet.kt @@ -5,6 +5,7 @@ import android.support.annotation.StringRes import android.view.View import android.widget.ProgressBar import android.widget.TextView +import butterknife.BindView import com.evernote.android.state.State import com.fastaccess.R import com.fastaccess.helper.BundleConstant @@ -22,11 +23,10 @@ class RepoLicenseBottomSheet : BaseMvpBottomSheetDialogFragment(R.id.stateLayout) } - - private val loader: ProgressBar by lazy { view!!.findViewById(R.id.readmeLoader) } - private val webView: PrettifyWebView by lazy { view!!.findViewById(R.id.webView) } - private val licenseName: TextView by lazy { view!!.findViewById(R.id.licenseName) } + @BindView(R.id.stateLayout) lateinit var stateLayout: StateLayout + @BindView(R.id.readmeLoader) lateinit var loader: ProgressBar + @BindView(R.id.webView) lateinit var webView: PrettifyWebView + @BindView(R.id.licenseName) lateinit var licenseName: TextView override fun providePresenter(): RepoLicensePresenter = RepoLicensePresenter() diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiActivity.kt index 9f12547b..2c6a34c8 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiActivity.kt @@ -11,6 +11,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.ProgressBar +import butterknife.BindView import com.evernote.android.state.State import com.fastaccess.R import com.fastaccess.data.dao.NameParser @@ -22,7 +23,6 @@ import com.fastaccess.provider.scheme.LinkParserHelper import com.fastaccess.ui.base.BaseActivity import com.fastaccess.ui.modules.repos.RepoPagerActivity import com.fastaccess.ui.widgets.StateLayout -import com.fastaccess.ui.widgets.bindView import com.prettifier.pretty.PrettifyWebView /** @@ -30,12 +30,11 @@ import com.prettifier.pretty.PrettifyWebView */ class WikiActivity : BaseActivity(), WikiMvp.View { - private val navMenu: NavigationView by bindView(R.id.wikiSidebar) - private val drawerLayout: DrawerLayout by bindView(R.id.drawer) - private val progressbar: ProgressBar by bindView(R.id.progress) - private val stateLayout: StateLayout by bindView(R.id.stateLayout) - private val webView: PrettifyWebView by bindView(R.id.webView) - + @BindView(R.id.wikiSidebar) lateinit var navMenu: NavigationView + @BindView(R.id.drawer) lateinit var drawerLayout: DrawerLayout + @BindView(R.id.progress) lateinit var progressbar: ProgressBar + @BindView(R.id.stateLayout) lateinit var stateLayout: StateLayout + @BindView(R.id.webView) lateinit var webView: PrettifyWebView @State var wiki = WikiContentModel(null, null, arrayListOf()) @State var selectedTitle: String = "Home" diff --git a/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewDialogFragment.kt b/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewDialogFragment.kt index 7378f377..26b716a2 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewDialogFragment.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewDialogFragment.kt @@ -8,6 +8,7 @@ import android.support.v4.content.ContextCompat import android.support.v7.widget.Toolbar import android.view.View import android.widget.TextView +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.CommitLinesModel import com.fastaccess.helper.BundleConstant @@ -25,10 +26,11 @@ import com.fastaccess.ui.widgets.SpannableBuilder */ class AddReviewDialogFragment : BaseDialogFragment>() { - private val toolbar: Toolbar by lazy { view!!.findViewById(R.id.toolbar) } - private val textView: TextView by lazy { view!!.findViewById(R.id.text) } - private val lineNo: TextView by lazy { view!!.findViewById(R.id.lineNo) } - private val editText: TextInputLayout by lazy { view!!.findViewById(R.id.editText) } + @BindView(R.id.toolbar) lateinit var toolbar: Toolbar + @BindView(R.id.text) lateinit var textView: TextView + @BindView(R.id.lineNo) lateinit var lineNo: TextView + @BindView(R.id.editText) lateinit var editText: TextInputLayout + private val spacePattern = "\\s+".toRegex() private var commentCallback: ReviewCommentListener? = null diff --git a/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt index d672a799..9c0ab2f5 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt @@ -10,13 +10,13 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.Spinner +import butterknife.BindView import com.evernote.android.state.State import com.fastaccess.R import com.fastaccess.data.dao.ReviewRequestModel import com.fastaccess.helper.* import com.fastaccess.provider.theme.ThemeEngine import com.fastaccess.ui.base.BaseActivity -import com.fastaccess.ui.widgets.bindView import com.fastaccess.ui.widgets.dialog.ProgressDialogFragment /** @@ -25,9 +25,9 @@ import com.fastaccess.ui.widgets.dialog.ProgressDialogFragment class ReviewChangesActivity : BaseActivity(), ReviewChangesMvp.View { - val toolbar: Toolbar by bindView(R.id.toolbar) - private val spinner: Spinner by bindView(R.id.reviewMethod) - private val editText: TextInputLayout by bindView(R.id.editText) + @BindView(R.id.toolbar) lateinit var toolbar: Toolbar + @BindView(R.id.reviewMethod) lateinit var spinner: Spinner + @BindView(R.id.editText) lateinit var editText: TextInputLayout @State var reviewRequest: ReviewRequestModel? = null @State var repoId: String? = null diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/sound/NotificationSoundBottomSheet.kt b/app/src/main/java/com/fastaccess/ui/modules/settings/sound/NotificationSoundBottomSheet.kt index 8437e7a4..7b8babf0 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/settings/sound/NotificationSoundBottomSheet.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/settings/sound/NotificationSoundBottomSheet.kt @@ -9,6 +9,7 @@ import android.view.ViewGroup import android.widget.Button import android.widget.RadioButton import android.widget.RadioGroup +import butterknife.BindView import com.fastaccess.R import com.fastaccess.data.dao.NotificationSoundModel import com.fastaccess.helper.BundleConstant @@ -22,9 +23,10 @@ import com.fastaccess.ui.widgets.FontTextView class NotificationSoundBottomSheet : BaseMvpBottomSheetDialogFragment(), NotificationSoundMvp.View { - private val title: FontTextView by lazy { view!!.findViewById(R.id.title) } - private val radioGroup: RadioGroup by lazy { view!!.findViewById(R.id.picker) } - private val okButton: Button by lazy { view!!.findViewById