From 19d3434dbf2745210c7273a2176095f5ca716f82 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 29 Jun 2021 22:43:17 -0400 Subject: [PATCH] convert stuff to kotlin --- .../instagrabber/adapters/FeedAdapterV2.java | 2 +- .../adapters/SliderItemsAdapter.java | 2 +- .../viewholder/FeedGridItemViewHolder.java | 4 +- .../viewholder/SearchItemViewHolder.java | 2 +- .../DirectItemMediaShareViewHolder.java | 2 +- .../DirectItemMediaViewHolder.java | 2 +- .../DirectItemRavenMediaViewHolder.java | 4 +- .../DirectItemReelShareViewHolder.java | 4 +- .../DirectItemStoryShareViewHolder.java | 2 +- .../directmessages/DirectItemViewHolder.java | 2 +- .../viewholder/feed/FeedItemViewHolder.java | 2 +- .../asyncs/DiscoverPostFetchService.java | 2 +- .../customviews/PostsRecyclerView.java | 2 +- .../fragments/HashTagFragment.java | 2 +- .../fragments/PostViewV2Fragment.java | 20 ++--- .../DirectMessageThreadFragment.java | 2 +- .../models/enums/FollowingType.kt | 41 ++++------- .../models/enums/MediaItemType.kt | 46 ++++-------- .../responses/ChildCommentsFetchResponse.kt | 57 ++------------- .../responses/CommentsFetchResponse.kt | 57 ++------------- .../repositories/responses/Hashtag.kt | 71 +++--------------- .../responses/LocationFeedResponse.kt | 66 +++-------------- .../responses/LoginRequiredResponse.java | 25 ------- .../repositories/responses/Media.kt | 6 +- .../responses/UserSearchResponse.kt | 38 ++-------- .../responses/discover/TopicCluster.kt | 73 +++---------------- .../discover/TopicalExploreFeedResponse.kt | 67 +++-------------- .../awais/instagrabber/utils/DMUtils.java | 4 +- .../instagrabber/utils/DirectItemFactory.kt | 4 +- .../awais/instagrabber/utils/DownloadUtils.kt | 10 +-- .../instagrabber/utils/ResponseBodyUtils.java | 2 +- .../viewmodels/PostViewV2ViewModel.kt | 6 +- .../instagrabber/webservices/FeedService.java | 4 +- .../webservices/LocationService.java | 2 +- 34 files changed, 144 insertions(+), 491 deletions(-) delete mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/LoginRequiredResponse.java diff --git a/app/src/main/java/awais/instagrabber/adapters/FeedAdapterV2.java b/app/src/main/java/awais/instagrabber/adapters/FeedAdapterV2.java index 891d6a00..ac94b02c 100644 --- a/app/src/main/java/awais/instagrabber/adapters/FeedAdapterV2.java +++ b/app/src/main/java/awais/instagrabber/adapters/FeedAdapterV2.java @@ -171,7 +171,7 @@ public final class FeedAdapterV2 extends ListAdapter { - switch (media.getMediaType()) { + switch (media.getType()) { case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_VIDEO: binding.downloaded.setVisibility(checkList.get(0) ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/SearchItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/SearchItemViewHolder.java index a72e17c3..fbfdc6de 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/SearchItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/SearchItemViewHolder.java @@ -45,7 +45,7 @@ public class SearchItemViewHolder extends RecyclerView.ViewHolder { case HASHTAG: final Hashtag hashtag = searchItem.getHashtag(); title = "#" + hashtag.getName(); - subtitle = hashtag.getSubtitle(); + subtitle = hashtag.getSearchResultSubtitle(); picUrl = "res:/" + R.drawable.ic_hashtag; break; case LOCATION: diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaShareViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaShareViewHolder.java index 78f0c8e2..1eb41c10 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaShareViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaShareViewHolder.java @@ -69,7 +69,7 @@ public class DirectItemMediaShareViewHolder extends DirectItemViewHolder { }); final int index; final Media toDisplay; - final MediaItemType mediaType = media.getMediaType(); + final MediaItemType mediaType = media.getType(); switch (mediaType) { case MEDIA_TYPE_SLIDER: toDisplay = media.getCarouselMedia().stream() diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaViewHolder.java index d2a7a5ee..b4e01c79 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemMediaViewHolder.java @@ -48,7 +48,7 @@ public class DirectItemMediaViewHolder extends DirectItemViewHolder { .build()); final Media media = directItemModel.getMedia(); itemView.setOnClickListener(v -> openMedia(media, -1)); - final MediaItemType modelMediaType = media.getMediaType(); + final MediaItemType modelMediaType = media.getType(); binding.typeIcon.setVisibility(modelMediaType == MediaItemType.MEDIA_TYPE_VIDEO || modelMediaType == MediaItemType.MEDIA_TYPE_SLIDER ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java index 3f8f0ed7..02051dd9 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java @@ -117,7 +117,7 @@ public class DirectItemRavenMediaViewHolder extends DirectItemViewHolder { final Media media = visualMedia.getMedia(); final RavenMediaViewMode viewMode = visualMedia.getViewMode(); if (viewMode != RavenMediaViewMode.PERMANENT) { - final MediaItemType mediaType = media.getMediaType(); + final MediaItemType mediaType = media.getType(); final boolean expired = TextUtils.isEmpty(media.getId()); final int info; switch (mediaType) { @@ -166,7 +166,7 @@ public class DirectItemRavenMediaViewHolder extends DirectItemViewHolder { .setRoundingParams(roundingParams) .setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP) .build()); - final MediaItemType modelMediaType = media.getMediaType(); + final MediaItemType modelMediaType = media.getType(); binding.typeIcon.setVisibility(modelMediaType == MediaItemType.MEDIA_TYPE_VIDEO || modelMediaType == MediaItemType.MEDIA_TYPE_SLIDER ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java index 1c755881..5f78e2cc 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java @@ -52,7 +52,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder { if (media == null) return; final User user = media.getUser(); if (user == null) return; - final boolean expired = media.getMediaType() == null; + final boolean expired = media.getType() == null; if (expired) { binding.preview.setVisibility(View.GONE); binding.typeIcon.setVisibility(View.GONE); @@ -159,7 +159,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder { } private void setPreview(final Media media) { - final MediaItemType mediaType = media.getMediaType(); + final MediaItemType mediaType = media.getType(); if (mediaType == null) return; binding.typeIcon.setVisibility(mediaType == MediaItemType.MEDIA_TYPE_VIDEO || mediaType == MediaItemType.MEDIA_TYPE_SLIDER ? View.VISIBLE : View.GONE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java index 45a6a8d4..5efd3472 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java @@ -66,7 +66,7 @@ public class DirectItemStoryShareViewHolder extends DirectItemViewHolder { } private void setupPreview(final MessageDirection messageDirection, final Media storyShareMedia) { - final MediaItemType mediaType = storyShareMedia.getMediaType(); + final MediaItemType mediaType = storyShareMedia.getType(); binding.typeIcon.setVisibility(mediaType == MediaItemType.MEDIA_TYPE_VIDEO ? View.VISIBLE : View.GONE); final RoundingParams roundingParams = messageDirection == MessageDirection.INCOMING ? RoundingParams.fromCornersRadii(dmRadiusSmall, dmRadius, dmRadius, dmRadius) diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java index e969e183..de5b0c37 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java @@ -266,7 +266,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple break; case MEDIA_SHARE: Media mediaShare = replied.getMediaShare(); - if (mediaShare.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER) { + if (mediaShare.getType() == MediaItemType.MEDIA_TYPE_SLIDER) { mediaShare = mediaShare.getCarouselMedia().get(0); } url = ResponseBodyUtils.getThumbUrl(mediaShare); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java index 042264c9..44a3fcae 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java @@ -46,7 +46,7 @@ public abstract class FeedItemViewHolder extends RecyclerView.ViewHolder { bottomBinding.tvPostDate.setText(media.getDate()); setupComments(media); setupCaption(media); - if (media.getMediaType() != MediaItemType.MEDIA_TYPE_SLIDER) { + if (media.getType() != MediaItemType.MEDIA_TYPE_SLIDER) { bottomBinding.btnDownload.setOnClickListener(v -> feedItemCallback.onDownloadClick(media, -1)); } bindItem(media); diff --git a/app/src/main/java/awais/instagrabber/asyncs/DiscoverPostFetchService.java b/app/src/main/java/awais/instagrabber/asyncs/DiscoverPostFetchService.java index 9416e787..0cf9c228 100644 --- a/app/src/main/java/awais/instagrabber/asyncs/DiscoverPostFetchService.java +++ b/app/src/main/java/awais/instagrabber/asyncs/DiscoverPostFetchService.java @@ -33,7 +33,7 @@ public class DiscoverPostFetchService implements PostFetcher.PostFetchService { onFailure(new RuntimeException("result is null")); return; } - moreAvailable = result.isMoreAvailable(); + moreAvailable = result.getMoreAvailable(); topicalExploreRequest.setMaxId(result.getNextMaxId()); final List items = result.getItems(); final List posts; diff --git a/app/src/main/java/awais/instagrabber/customviews/PostsRecyclerView.java b/app/src/main/java/awais/instagrabber/customviews/PostsRecyclerView.java index ace25beb..6b05d2fe 100644 --- a/app/src/main/java/awais/instagrabber/customviews/PostsRecyclerView.java +++ b/app/src/main/java/awais/instagrabber/customviews/PostsRecyclerView.java @@ -268,7 +268,7 @@ public class PostsRecyclerView extends RecyclerView { private List getDisplayUrl(final Media feedModel) { List urls = Collections.emptyList(); - switch (feedModel.getMediaType()) { + switch (feedModel.getType()) { case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_VIDEO: urls = Collections.singletonList(ResponseBodyUtils.getImageUrl(feedModel)); diff --git a/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java b/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java index acd96288..d04c9389 100644 --- a/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java @@ -522,7 +522,7 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe final SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_count_inline, hashtagModel.getMediaCount() > 2000000000L ? 2000000000 - : hashtagModel.getMediaCount().intValue(), + : Long.valueOf(hashtagModel.getMediaCount()).intValue(), postCount)); span.setSpan(new RelativeSizeSpan(1.2f), 0, postCount.length(), 0); span.setSpan(new StyleSpan(Typeface.BOLD), 0, postCount.length(), 0); diff --git a/app/src/main/java/awais/instagrabber/fragments/PostViewV2Fragment.java b/app/src/main/java/awais/instagrabber/fragments/PostViewV2Fragment.java index cd91bf96..fd6d1ee5 100644 --- a/app/src/main/java/awais/instagrabber/fragments/PostViewV2Fragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/PostViewV2Fragment.java @@ -219,8 +219,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme // wasPaused = true; if (settingsHelper.getBoolean(PreferenceKeys.PLAY_IN_BACKGROUND)) return; final Media media = viewModel.getMedia(); - if (media.getMediaType() == null) return; - switch (media.getMediaType()) { + if (media.getType() == null) return; + switch (media.getType()) { case MEDIA_TYPE_VIDEO: if (videoPlayerViewHelper != null) { videoPlayerViewHelper.pause(); @@ -252,8 +252,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme super.onDestroyView(); showSystemUI(); final Media media = viewModel.getMedia(); - if (media.getMediaType() == null) return; - switch (media.getMediaType()) { + if (media.getType() == null) return; + switch (media.getType()) { case MEDIA_TYPE_VIDEO: if (videoPlayerViewHelper != null) { videoPlayerViewHelper.releasePlayer(); @@ -271,7 +271,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme public void onSaveInstanceState(@NonNull final Bundle outState) { super.onSaveInstanceState(outState); final Media media = viewModel.getMedia(); - if (media.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER) { + if (media.getType() == MediaItemType.MEDIA_TYPE_SLIDER) { outState.putInt(ARG_SLIDER_POSITION, sliderPosition); } } @@ -293,7 +293,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme return; } final Media media = (Media) feedModelSerializable; - if (media.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER && sliderPosition == -1) { + if (media.getType() == MediaItemType.MEDIA_TYPE_SLIDER && sliderPosition == -1) { sliderPosition = arguments.getInt(ARG_SLIDER_POSITION, 0); } viewModel.setMedia(media); @@ -902,7 +902,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme final boolean hasVideo = media.getCarouselMedia() .stream() - .anyMatch(postChild -> postChild.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO); + .anyMatch(postChild -> postChild.getType() == MediaItemType.MEDIA_TYPE_VIDEO); if (hasVideo) { final View child = sliderParent.getChildAt(0); if (child instanceof RecyclerView) { @@ -918,7 +918,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme @Override public void onItemClicked(final int position, final Media media, final View view) { if (media == null - || media.getMediaType() != MediaItemType.MEDIA_TYPE_IMAGE + || media.getType() != MediaItemType.MEDIA_TYPE_IMAGE || !(view instanceof ZoomableDraweeView)) { return; } @@ -1012,7 +1012,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme // } // } video = false; - if (childMedia.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO) { + if (childMedia.getType() == MediaItemType.MEDIA_TYPE_VIDEO) { // if (view instanceof RecyclerView) { // final RecyclerView.ViewHolder viewHolder = ((RecyclerView) view).findViewHolderForAdapterPosition(position); // if (viewHolder instanceof SliderVideoViewHolder) { @@ -1409,7 +1409,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme // if (wasControlsVisible) { // showPlayerControls(); // } - if (media.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER) { + if (media.getType() == MediaItemType.MEDIA_TYPE_SLIDER) { binding.mediaCounter.setVisibility(View.VISIBLE); } detailsVisible = true; diff --git a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java index b9aa03ef..1169a989 100644 --- a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java @@ -921,7 +921,7 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact @NonNull private String getMediaPreviewTextString(final Media media) { - final MediaItemType mediaType = media.getMediaType(); + final MediaItemType mediaType = media.getType(); switch (mediaType) { case MEDIA_TYPE_IMAGE: return getString(R.string.photo); diff --git a/app/src/main/java/awais/instagrabber/models/enums/FollowingType.kt b/app/src/main/java/awais/instagrabber/models/enums/FollowingType.kt index ae10ec7f..5a908476 100755 --- a/app/src/main/java/awais/instagrabber/models/enums/FollowingType.kt +++ b/app/src/main/java/awais/instagrabber/models/enums/FollowingType.kt @@ -1,35 +1,24 @@ -package awais.instagrabber.models.enums; +package awais.instagrabber.models.enums -import com.google.gson.annotations.SerializedName; +import java.io.Serializable +import java.util.* -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -public enum FollowingType implements Serializable { - @SerializedName("1") +enum class FollowingType(val id: Int) : Serializable { FOLLOWING(1), - @SerializedName("0") NOT_FOLLOWING(0); - private final int id; - private static final Map map = new HashMap<>(); + companion object { + private val map: MutableMap = mutableMapOf() - static { - for (FollowingType type : FollowingType.values()) { - map.put(type.id, type); + @JvmStatic + fun valueOf(id: Int): FollowingType? { + return map[id] + } + + init { + for (type in values()) { + map[type.id] = type + } } } - - FollowingType(final int id) { - this.id = id; - } - - public int getId() { - return id; - } - - public static FollowingType valueOf(final int id) { - return map.get(id); - } } \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/models/enums/MediaItemType.kt b/app/src/main/java/awais/instagrabber/models/enums/MediaItemType.kt index 616ae58f..f4d023ea 100755 --- a/app/src/main/java/awais/instagrabber/models/enums/MediaItemType.kt +++ b/app/src/main/java/awais/instagrabber/models/enums/MediaItemType.kt @@ -1,42 +1,26 @@ -package awais.instagrabber.models.enums; +package awais.instagrabber.models.enums -import com.google.gson.annotations.SerializedName; +import java.io.Serializable -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -public enum MediaItemType implements Serializable { - @SerializedName("1") +enum class MediaItemType(val id: Int) : Serializable { MEDIA_TYPE_IMAGE(1), - @SerializedName("2") MEDIA_TYPE_VIDEO(2), - @SerializedName("8") MEDIA_TYPE_SLIDER(8), - @SerializedName("11") MEDIA_TYPE_VOICE(11), - // 5 is arbitrary - @SerializedName("5") - MEDIA_TYPE_LIVE(5); + MEDIA_TYPE_LIVE(5); // arbitrary - private final int id; - private static final Map map = new HashMap<>(); + companion object { + private val map: MutableMap = mutableMapOf() - static { - for (MediaItemType type : MediaItemType.values()) { - map.put(type.id, type); + @JvmStatic + fun valueOf(id: Int): MediaItemType? { + return map[id] + } + + init { + for (type in values()) { + map[type.id] = type + } } } - - MediaItemType(final int id) { - this.id = id; - } - - public int getId() { - return id; - } - - public static MediaItemType valueOf(final int id) { - return map.get(id); - } } \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/ChildCommentsFetchResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/ChildCommentsFetchResponse.kt index e3f0e8fc..19a9ce94 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/ChildCommentsFetchResponse.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/ChildCommentsFetchResponse.kt @@ -1,51 +1,10 @@ -package awais.instagrabber.repositories.responses; +package awais.instagrabber.repositories.responses -import androidx.annotation.NonNull; +import awais.instagrabber.models.Comment -import java.util.List; - -import awais.instagrabber.models.Comment; - -public class ChildCommentsFetchResponse { - private final int childCommentCount; - private final String nextMaxChildCursor; - private final List childComments; - private final boolean hasMoreTailChildComments; - - public ChildCommentsFetchResponse(final int childCommentCount, - final String nextMaxChildCursor, - final List childComments, - final boolean hasMoreTailChildComments) { - this.childCommentCount = childCommentCount; - this.nextMaxChildCursor = nextMaxChildCursor; - this.childComments = childComments; - this.hasMoreTailChildComments = hasMoreTailChildComments; - } - - public int getChildCommentCount() { - return childCommentCount; - } - - public String getNextMaxChildCursor() { - return nextMaxChildCursor; - } - - public boolean getHasMoreTailChildComments() { - return hasMoreTailChildComments; - } - - public List getChildComments() { - return childComments; - } - - @NonNull - @Override - public String toString() { - return "ChildCommentsFetchResponse{" + - "childCommentCount=" + childCommentCount + - ", nextMaxChildCursor='" + nextMaxChildCursor + '\'' + - ", childComments=" + childComments + - ", hasMoreTailChildComments=" + hasMoreTailChildComments + - '}'; - } -} +data class ChildCommentsFetchResponse( + val childCommentCount: Int, + val nextMaxChildCursor: String?, + val childComments: List?, + val hasMoreTailChildComments: Boolean? +) \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/CommentsFetchResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/CommentsFetchResponse.kt index 5e0a4cb7..acf21eef 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/CommentsFetchResponse.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/CommentsFetchResponse.kt @@ -1,51 +1,10 @@ -package awais.instagrabber.repositories.responses; +package awais.instagrabber.repositories.responses -import androidx.annotation.NonNull; +import awais.instagrabber.models.Comment -import java.util.List; - -import awais.instagrabber.models.Comment; - -public class CommentsFetchResponse { - private final int commentCount; - private final String nextMinId; - private final List comments; - private final boolean hasMoreComments; - - public CommentsFetchResponse(final int commentCount, - final String nextMinId, - final List comments, - final boolean hasMoreComments) { - this.commentCount = commentCount; - this.nextMinId = nextMinId; - this.comments = comments; - this.hasMoreComments = hasMoreComments; - } - - public int getCommentCount() { - return commentCount; - } - - public String getNextMinId() { - return nextMinId; - } - - public List getComments() { - return comments; - } - - public boolean getHasMoreComments() { - return hasMoreComments; - } - - @NonNull - @Override - public String toString() { - return "CommentsFetchResponse{" + - "commentCount=" + commentCount + - ", nextMinId='" + nextMinId + '\'' + - ", comments=" + comments + - ", hasMoreComments=" + hasMoreComments + - '}'; - } -} +data class CommentsFetchResponse( + val commentCount: Int, + val nextMinId: String?, + val comments: List?, + val hasMoreComments: Boolean +) \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/Hashtag.kt b/app/src/main/java/awais/instagrabber/repositories/responses/Hashtag.kt index f1ef47b3..9d8fef08 100755 --- a/app/src/main/java/awais/instagrabber/repositories/responses/Hashtag.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/Hashtag.kt @@ -1,63 +1,12 @@ -package awais.instagrabber.repositories.responses; +package awais.instagrabber.repositories.responses -import java.io.Serializable; -import java.util.Objects; +import awais.instagrabber.models.enums.FollowingType +import java.io.Serializable -import awais.instagrabber.models.enums.FollowingType; - -public final class Hashtag implements Serializable { - private final FollowingType following; // 0 false 1 true; not on search results - private final long mediaCount; - private final String id; - private final String name; - private final String searchResultSubtitle; // shows how many posts there are on search results - - public Hashtag(final String id, - final String name, - final long mediaCount, - final FollowingType following, - final String searchResultSubtitle) { - this.id = id; - this.name = name; - this.mediaCount = mediaCount; - this.following = following; - this.searchResultSubtitle = searchResultSubtitle; - } - - public String getId() { - return id; - } - - public String getName() { - return name; - } - - public Long getMediaCount() { - return mediaCount; - } - - public FollowingType getFollowing() { - return following; - } - - public String getSubtitle() { - return searchResultSubtitle; - } - - @Override - public boolean equals(final Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - final Hashtag hashtag = (Hashtag) o; - return mediaCount == hashtag.mediaCount && - following == hashtag.following && - Objects.equals(id, hashtag.id) && - Objects.equals(name, hashtag.name) && - Objects.equals(searchResultSubtitle, hashtag.searchResultSubtitle); - } - - @Override - public int hashCode() { - return Objects.hash(following, mediaCount, id, name, searchResultSubtitle); - } -} \ No newline at end of file +data class Hashtag( + val id: String, + val name: String, + val mediaCount: Long, + val following: FollowingType?, // 0 false 1 true; not on search results + val searchResultSubtitle: String? // shows how many posts there are on search results +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/LocationFeedResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/LocationFeedResponse.kt index 1138208d..e1e9ce1d 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/LocationFeedResponse.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/LocationFeedResponse.kt @@ -1,57 +1,11 @@ -package awais.instagrabber.repositories.responses; +package awais.instagrabber.repositories.responses -import java.util.List; - -public class LocationFeedResponse { - private final int numResults; - private final String nextMaxId; - private final boolean moreAvailable; - private final long mediaCount; - private final String status; - private final List items; - private final Location location; - - public LocationFeedResponse(final int numResults, - final String nextMaxId, - final boolean moreAvailable, - final long mediaCount, - final String status, - final List items, - final Location location) { - this.numResults = numResults; - this.nextMaxId = nextMaxId; - this.moreAvailable = moreAvailable; - this.mediaCount = mediaCount; - this.status = status; - this.items = items; - this.location = location; - } - - public int getNumResults() { - return numResults; - } - - public String getNextMaxId() { - return nextMaxId; - } - - public boolean isMoreAvailable() { - return moreAvailable; - } - - public String getStatus() { - return status; - } - - public List getItems() { - return items; - } - - public long getMediaCount() { - return mediaCount; - } - - public Location getLocation() { - return location; - } -} +data class LocationFeedResponse( + val numResults: Int, + val nextMaxId: String?, + val moreAvailable: Boolean?, + val mediaCount: Long?, + val status: String, + val items: List?, + val location: Location +) \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/LoginRequiredResponse.java b/app/src/main/java/awais/instagrabber/repositories/responses/LoginRequiredResponse.java deleted file mode 100644 index b34e0d65..00000000 --- a/app/src/main/java/awais/instagrabber/repositories/responses/LoginRequiredResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -package awais.instagrabber.repositories.responses; - -public class LoginRequiredResponse { - private String message = "login_required"; - private int logoutReason; - private String status = "fail"; - - public LoginRequiredResponse(final String message, final int logoutReason, final String status) { - this.message = message; - this.logoutReason = logoutReason; - this.status = status; - } - - public String getMessage() { - return message; - } - - public int getLogoutReason() { - return logoutReason; - } - - public String getStatus() { - return status; - } -} diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/Media.kt b/app/src/main/java/awais/instagrabber/repositories/responses/Media.kt index d06e368d..fa1220ef 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/Media.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/Media.kt @@ -1,6 +1,7 @@ package awais.instagrabber.repositories.responses import awais.instagrabber.models.enums.MediaItemType +import awais.instagrabber.models.enums.MediaItemType.Companion.valueOf import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator import awais.instagrabber.utils.TextUtils import java.io.Serializable @@ -15,7 +16,7 @@ data class Media( val imageVersions2: ImageVersions2? = null, val originalWidth: Int = 0, val originalHeight: Int = 0, - val mediaType: MediaItemType? = null, + val mediaType: Int = 0, val commentLikesEnabled: Boolean = false, val commentsDisabled: Boolean = false, val nextMaxId: Long = -1, @@ -58,6 +59,9 @@ data class Media( return dateString ?: "" } + val type: MediaItemType? + get() = valueOf(mediaType) + fun setPostCaption(caption: String?) { var caption1: Caption? = this.caption if (caption1 == null) { diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/UserSearchResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/UserSearchResponse.kt index a9490a33..32c6edb1 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/UserSearchResponse.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/UserSearchResponse.kt @@ -1,33 +1,7 @@ -package awais.instagrabber.repositories.responses; +package awais.instagrabber.repositories.responses -import java.util.List; - -public class UserSearchResponse { - private final int numResults; - private final List users; - private final boolean hasMore; - private final String status; - - public UserSearchResponse(final int numResults, final List users, final boolean hasMore, final String status) { - this.numResults = numResults; - this.users = users; - this.hasMore = hasMore; - this.status = status; - } - - public int getNumResults() { - return numResults; - } - - public List getUsers() { - return users; - } - - public boolean hasMore() { - return hasMore; - } - - public String getStatus() { - return status; - } -} +data class UserSearchResponse( + val numResults: Int, + val users: List?, + val status: String +) \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicCluster.kt b/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicCluster.kt index 436b8ecf..fa7963e8 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicCluster.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicCluster.kt @@ -1,63 +1,14 @@ -package awais.instagrabber.repositories.responses.discover; +package awais.instagrabber.repositories.responses.discover -import java.io.Serializable; +import awais.instagrabber.repositories.responses.Media +import java.io.Serializable -import awais.instagrabber.repositories.responses.Media; - -public class TopicCluster implements Serializable { - private final String id; - private final String title; - private final String type; - private final boolean canMute; - private final boolean isMuted; - private final int rankedPosition; - private Media coverMedia; - - public TopicCluster(final String id, - final String title, - final String type, - final boolean canMute, - final boolean isMuted, - final int rankedPosition, - final Media coverMedia) { - this.id = id; - this.title = title; - this.type = type; - this.canMute = canMute; - this.isMuted = isMuted; - this.rankedPosition = rankedPosition; - this.coverMedia = coverMedia; - } - - public String getId() { - return id; - } - - public String getTitle() { - return title; - } - - public String getType() { - return type; - } - - public boolean isCanMute() { - return canMute; - } - - public boolean isMuted() { - return isMuted; - } - - public int getRankedPosition() { - return rankedPosition; - } - - public Media getCoverMedia() { - return coverMedia; - } - - public void setCoverMedia(final Media coverMedia) { - this.coverMedia = coverMedia; - } -} +data class TopicCluster( + val id: String, + val title: String, + val type: String?, + val canMute: Boolean?, + val isMuted: Boolean?, + val rankedPosition: Int, + var coverMedia: Media? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicalExploreFeedResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicalExploreFeedResponse.kt index f3e7b60f..1c2e84f0 100644 --- a/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicalExploreFeedResponse.kt +++ b/app/src/main/java/awais/instagrabber/repositories/responses/discover/TopicalExploreFeedResponse.kt @@ -1,58 +1,13 @@ -package awais.instagrabber.repositories.responses.discover; +package awais.instagrabber.repositories.responses.discover -import java.util.List; -import awais.instagrabber.repositories.responses.WrappedMedia; +import awais.instagrabber.repositories.responses.WrappedMedia -public class TopicalExploreFeedResponse { - private final boolean moreAvailable; - private final String nextMaxId; - private final String maxId; - private final String status; - private final int numResults; - private final List clusters; - private final List items; - - public TopicalExploreFeedResponse(final boolean moreAvailable, - final String nextMaxId, - final String maxId, - final String status, - final int numResults, - final List clusters, - final List items) { - this.moreAvailable = moreAvailable; - this.nextMaxId = nextMaxId; - this.maxId = maxId; - this.status = status; - this.numResults = numResults; - this.clusters = clusters; - this.items = items; - } - - public boolean isMoreAvailable() { - return moreAvailable; - } - - public String getNextMaxId() { - return nextMaxId; - } - - public String getMaxId() { - return maxId; - } - - public String getStatus() { - return status; - } - - public int getNumResults() { - return numResults; - } - - public List getClusters() { - return clusters; - } - - public List getItems() { - return items; - } -} +data class TopicalExploreFeedResponse( + val moreAvailable: Boolean, + val nextMaxId: String?, + val maxId: String?, + val status: String, + val numResults: Int, + val clusters: List?, + val items: List? +) \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/utils/DMUtils.java b/app/src/main/java/awais/instagrabber/utils/DMUtils.java index f315c906..e5235e21 100644 --- a/app/src/main/java/awais/instagrabber/utils/DMUtils.java +++ b/app/src/main/java/awais/instagrabber/utils/DMUtils.java @@ -109,7 +109,7 @@ public final class DMUtils { .getString(R.string.dms_inbox_shared_location, username != null ? username : "", item.getLocation().getName()); break; case MEDIA: { - final MediaItemType mediaType = item.getMedia().getMediaType(); + final MediaItemType mediaType = item.getMedia().getType(); subtitle = getMediaSpecificSubtitle(username, resources, mediaType); break; } @@ -304,7 +304,7 @@ public final class DMUtils { } return subtitle; } - final MediaItemType mediaType = visualMedia.getMedia().getMediaType(); + final MediaItemType mediaType = visualMedia.getMedia().getType(); subtitle = getMediaSpecificSubtitle(username, resources, mediaType); return subtitle; } diff --git a/app/src/main/java/awais/instagrabber/utils/DirectItemFactory.kt b/app/src/main/java/awais/instagrabber/utils/DirectItemFactory.kt index a254a0cb..24a10964 100644 --- a/app/src/main/java/awais/instagrabber/utils/DirectItemFactory.kt +++ b/app/src/main/java/awais/instagrabber/utils/DirectItemFactory.kt @@ -52,7 +52,7 @@ fun createImageOrVideo( imageVersions2 = imageVersions2, originalWidth = width, originalHeight = height, - mediaType = if (isVideo) MediaItemType.MEDIA_TYPE_VIDEO else MediaItemType.MEDIA_TYPE_IMAGE, + mediaType = if (isVideo) MediaItemType.MEDIA_TYPE_VIDEO.id else MediaItemType.MEDIA_TYPE_IMAGE.id, videoVersions = videoVersions, ) return DirectItem( @@ -82,7 +82,7 @@ fun createVoice( ) val media = Media( id = UUID.randomUUID().toString(), - mediaType = MediaItemType.MEDIA_TYPE_VOICE, + mediaType = MediaItemType.MEDIA_TYPE_VOICE.id, audio = audio, ) val voiceMedia = DirectItemVoiceMedia( diff --git a/app/src/main/java/awais/instagrabber/utils/DownloadUtils.kt b/app/src/main/java/awais/instagrabber/utils/DownloadUtils.kt index 2d529391..d5f3eebb 100644 --- a/app/src/main/java/awais/instagrabber/utils/DownloadUtils.kt +++ b/app/src/main/java/awais/instagrabber/utils/DownloadUtils.kt @@ -285,10 +285,10 @@ object DownloadUtils { username = user.username } val userFolderPaths: List = getSubPathForUserFolder(username) - when (media.mediaType) { + when (media.type) { MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> { val url = - if (media.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( + if (media.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( media ) else ResponseBodyUtils.getImageUrl(media) val file = getDownloadSavePaths(ArrayList(userFolderPaths), media.code, url, "") @@ -308,7 +308,7 @@ object DownloadUtils { while (i < sliderItems!!.size) { val child = sliderItems[i] val url = - if (child.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( + if (child.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( child ) else ResponseBodyUtils.getImageUrl(child) val file = getDownloadChildSavePaths( @@ -446,7 +446,7 @@ object DownloadUtils { val mediaUser = media.user val username = mediaUser?.username ?: "" val userFolderPaths = getSubPathForUserFolder(username) - when (media.mediaType) { + when (media.type) { MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> { val url = getUrlOfType(media) var fileName = media.id @@ -525,7 +525,7 @@ object DownloadUtils { } private fun getUrlOfType(media: Media): String? { - when (media.mediaType) { + when (media.type) { MediaItemType.MEDIA_TYPE_IMAGE -> { return ResponseBodyUtils.getImageUrl(media) } diff --git a/app/src/main/java/awais/instagrabber/utils/ResponseBodyUtils.java b/app/src/main/java/awais/instagrabber/utils/ResponseBodyUtils.java index ef0067a2..fb5f14e3 100644 --- a/app/src/main/java/awais/instagrabber/utils/ResponseBodyUtils.java +++ b/app/src/main/java/awais/instagrabber/utils/ResponseBodyUtils.java @@ -243,7 +243,7 @@ public final class ResponseBodyUtils { imageVersions2, width, height, - mediaItemType, + mediaItemType.getId(), false, feedItem.optBoolean("comments_disabled"), -1, diff --git a/app/src/main/java/awais/instagrabber/viewmodels/PostViewV2ViewModel.kt b/app/src/main/java/awais/instagrabber/viewmodels/PostViewV2ViewModel.kt index 6cd3af04..3837a78a 100644 --- a/app/src/main/java/awais/instagrabber/viewmodels/PostViewV2ViewModel.kt +++ b/app/src/main/java/awais/instagrabber/viewmodels/PostViewV2ViewModel.kt @@ -60,8 +60,8 @@ class PostViewV2ViewModel : ViewModel() { date.postValue(media.date) likeCount.postValue(media.likeCount) commentCount.postValue(media.commentCount) - viewCount.postValue(if (media.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) media.viewCount else null) - type.postValue(media.mediaType) + viewCount.postValue(if (media.type == MediaItemType.MEDIA_TYPE_VIDEO) media.viewCount else null) + type.postValue(media.type) liked.postValue(media.hasLiked) saved.postValue(media.hasViewerSaved) initOptions() @@ -310,7 +310,7 @@ class PostViewV2ViewModel : ViewModel() { return data } val mediaId = media.id - val mediaType = media.mediaType + val mediaType = media.type if (mediaId == null || mediaType == null) { data.postValue(error("media id or type is null", null)) return data diff --git a/app/src/main/java/awais/instagrabber/webservices/FeedService.java b/app/src/main/java/awais/instagrabber/webservices/FeedService.java index 42fdf168..5e6dbf41 100644 --- a/app/src/main/java/awais/instagrabber/webservices/FeedService.java +++ b/app/src/main/java/awais/instagrabber/webservices/FeedService.java @@ -119,13 +119,13 @@ public class FeedService { nextMaxId = group.getNextMaxId(); final List feedItems = group.getFeedItems(); for (final Media feedItem : feedItems) { - if (feedItem == null || feedItem.isInjected() || feedItem.getMediaType() == null) continue; + if (feedItem == null || feedItem.isInjected() || feedItem.getType() == null) continue; allPosts.add(feedItem); } } continue; } - if (media == null || media.isInjected() || media.getMediaType() == null) continue; + if (media == null || media.isInjected() || media.getType() == null) continue; allPosts.add(media); } return new PostsFetchResponse(allPosts, moreAvailable, nextMaxId); diff --git a/app/src/main/java/awais/instagrabber/webservices/LocationService.java b/app/src/main/java/awais/instagrabber/webservices/LocationService.java index e848ae1c..3ed70b93 100644 --- a/app/src/main/java/awais/instagrabber/webservices/LocationService.java +++ b/app/src/main/java/awais/instagrabber/webservices/LocationService.java @@ -53,7 +53,7 @@ public class LocationService { } final PostsFetchResponse postsFetchResponse = new PostsFetchResponse( body.getItems(), - body.isMoreAvailable(), + body.getMoreAvailable(), body.getNextMaxId() ); callback.onSuccess(postsFetchResponse);