convert stuff to kotlin

This commit is contained in:
Austin Huang 2021-06-29 22:43:17 -04:00
parent 49e348765b
commit 19d3434dbf
No known key found for this signature in database
GPG Key ID: 84C23AA04587A91F
34 changed files with 144 additions and 491 deletions

View File

@ -171,7 +171,7 @@ public final class FeedAdapterV2 extends ListAdapter<Media, RecyclerView.ViewHol
@Override @Override
public int getItemViewType(final int position) { public int getItemViewType(final int position) {
return getItem(position).getMediaType().getId(); return getItem(position).getType().getId();
} }
public void setLayoutPreferences(@NonNull final PostsLayoutPreferences layoutPreferences) { public void setLayoutPreferences(@NonNull final PostsLayoutPreferences layoutPreferences) {

View File

@ -68,7 +68,7 @@ public final class SliderItemsAdapter extends ListAdapter<Media, SliderItemViewH
@Override @Override
public int getItemViewType(final int position) { public int getItemViewType(final int position) {
final Media media = getItem(position); final Media media = getItem(position);
return media.getMediaType().getId(); return media.getType().getId();
} }
// @NonNull // @NonNull

View File

@ -71,7 +71,7 @@ public class FeedGridItemViewHolder extends RecyclerView.ViewHolder {
setUserDetails(media, layoutPreferences); setUserDetails(media, layoutPreferences);
String thumbnailUrl = null; String thumbnailUrl = null;
final int typeIconRes; final int typeIconRes;
final MediaItemType mediaType = media.getMediaType(); final MediaItemType mediaType = media.getType();
if (mediaType == null) return; if (mediaType == null) return;
switch (mediaType) { switch (mediaType) {
case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_IMAGE:
@ -118,7 +118,7 @@ public class FeedGridItemViewHolder extends RecyclerView.ViewHolder {
return; return;
} }
AppExecutors.INSTANCE.getMainThread().execute(() -> { AppExecutors.INSTANCE.getMainThread().execute(() -> {
switch (media.getMediaType()) { switch (media.getType()) {
case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_IMAGE:
case MEDIA_TYPE_VIDEO: case MEDIA_TYPE_VIDEO:
binding.downloaded.setVisibility(checkList.get(0) ? View.VISIBLE : View.GONE); binding.downloaded.setVisibility(checkList.get(0) ? View.VISIBLE : View.GONE);

View File

@ -45,7 +45,7 @@ public class SearchItemViewHolder extends RecyclerView.ViewHolder {
case HASHTAG: case HASHTAG:
final Hashtag hashtag = searchItem.getHashtag(); final Hashtag hashtag = searchItem.getHashtag();
title = "#" + hashtag.getName(); title = "#" + hashtag.getName();
subtitle = hashtag.getSubtitle(); subtitle = hashtag.getSearchResultSubtitle();
picUrl = "res:/" + R.drawable.ic_hashtag; picUrl = "res:/" + R.drawable.ic_hashtag;
break; break;
case LOCATION: case LOCATION:

View File

@ -69,7 +69,7 @@ public class DirectItemMediaShareViewHolder extends DirectItemViewHolder {
}); });
final int index; final int index;
final Media toDisplay; final Media toDisplay;
final MediaItemType mediaType = media.getMediaType(); final MediaItemType mediaType = media.getType();
switch (mediaType) { switch (mediaType) {
case MEDIA_TYPE_SLIDER: case MEDIA_TYPE_SLIDER:
toDisplay = media.getCarouselMedia().stream() toDisplay = media.getCarouselMedia().stream()

View File

@ -48,7 +48,7 @@ public class DirectItemMediaViewHolder extends DirectItemViewHolder {
.build()); .build());
final Media media = directItemModel.getMedia(); final Media media = directItemModel.getMedia();
itemView.setOnClickListener(v -> openMedia(media, -1)); 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 binding.typeIcon.setVisibility(modelMediaType == MediaItemType.MEDIA_TYPE_VIDEO || modelMediaType == MediaItemType.MEDIA_TYPE_SLIDER
? View.VISIBLE ? View.VISIBLE
: View.GONE); : View.GONE);

View File

@ -117,7 +117,7 @@ public class DirectItemRavenMediaViewHolder extends DirectItemViewHolder {
final Media media = visualMedia.getMedia(); final Media media = visualMedia.getMedia();
final RavenMediaViewMode viewMode = visualMedia.getViewMode(); final RavenMediaViewMode viewMode = visualMedia.getViewMode();
if (viewMode != RavenMediaViewMode.PERMANENT) { if (viewMode != RavenMediaViewMode.PERMANENT) {
final MediaItemType mediaType = media.getMediaType(); final MediaItemType mediaType = media.getType();
final boolean expired = TextUtils.isEmpty(media.getId()); final boolean expired = TextUtils.isEmpty(media.getId());
final int info; final int info;
switch (mediaType) { switch (mediaType) {
@ -166,7 +166,7 @@ public class DirectItemRavenMediaViewHolder extends DirectItemViewHolder {
.setRoundingParams(roundingParams) .setRoundingParams(roundingParams)
.setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP) .setActualImageScaleType(ScalingUtils.ScaleType.CENTER_CROP)
.build()); .build());
final MediaItemType modelMediaType = media.getMediaType(); final MediaItemType modelMediaType = media.getType();
binding.typeIcon.setVisibility(modelMediaType == MediaItemType.MEDIA_TYPE_VIDEO || modelMediaType == MediaItemType.MEDIA_TYPE_SLIDER binding.typeIcon.setVisibility(modelMediaType == MediaItemType.MEDIA_TYPE_VIDEO || modelMediaType == MediaItemType.MEDIA_TYPE_SLIDER
? View.VISIBLE ? View.VISIBLE
: View.GONE); : View.GONE);

View File

@ -52,7 +52,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder {
if (media == null) return; if (media == null) return;
final User user = media.getUser(); final User user = media.getUser();
if (user == null) return; if (user == null) return;
final boolean expired = media.getMediaType() == null; final boolean expired = media.getType() == null;
if (expired) { if (expired) {
binding.preview.setVisibility(View.GONE); binding.preview.setVisibility(View.GONE);
binding.typeIcon.setVisibility(View.GONE); binding.typeIcon.setVisibility(View.GONE);
@ -159,7 +159,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder {
} }
private void setPreview(final Media media) { private void setPreview(final Media media) {
final MediaItemType mediaType = media.getMediaType(); final MediaItemType mediaType = media.getType();
if (mediaType == null) return; if (mediaType == null) return;
binding.typeIcon.setVisibility(mediaType == MediaItemType.MEDIA_TYPE_VIDEO || mediaType == MediaItemType.MEDIA_TYPE_SLIDER binding.typeIcon.setVisibility(mediaType == MediaItemType.MEDIA_TYPE_VIDEO || mediaType == MediaItemType.MEDIA_TYPE_SLIDER
? View.VISIBLE : View.GONE); ? View.VISIBLE : View.GONE);

View File

@ -66,7 +66,7 @@ public class DirectItemStoryShareViewHolder extends DirectItemViewHolder {
} }
private void setupPreview(final MessageDirection messageDirection, final Media storyShareMedia) { 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); binding.typeIcon.setVisibility(mediaType == MediaItemType.MEDIA_TYPE_VIDEO ? View.VISIBLE : View.GONE);
final RoundingParams roundingParams = messageDirection == MessageDirection.INCOMING final RoundingParams roundingParams = messageDirection == MessageDirection.INCOMING
? RoundingParams.fromCornersRadii(dmRadiusSmall, dmRadius, dmRadius, dmRadius) ? RoundingParams.fromCornersRadii(dmRadiusSmall, dmRadius, dmRadius, dmRadius)

View File

@ -266,7 +266,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple
break; break;
case MEDIA_SHARE: case MEDIA_SHARE:
Media mediaShare = replied.getMediaShare(); Media mediaShare = replied.getMediaShare();
if (mediaShare.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER) { if (mediaShare.getType() == MediaItemType.MEDIA_TYPE_SLIDER) {
mediaShare = mediaShare.getCarouselMedia().get(0); mediaShare = mediaShare.getCarouselMedia().get(0);
} }
url = ResponseBodyUtils.getThumbUrl(mediaShare); url = ResponseBodyUtils.getThumbUrl(mediaShare);

View File

@ -46,7 +46,7 @@ public abstract class FeedItemViewHolder extends RecyclerView.ViewHolder {
bottomBinding.tvPostDate.setText(media.getDate()); bottomBinding.tvPostDate.setText(media.getDate());
setupComments(media); setupComments(media);
setupCaption(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)); bottomBinding.btnDownload.setOnClickListener(v -> feedItemCallback.onDownloadClick(media, -1));
} }
bindItem(media); bindItem(media);

View File

@ -33,7 +33,7 @@ public class DiscoverPostFetchService implements PostFetcher.PostFetchService {
onFailure(new RuntimeException("result is null")); onFailure(new RuntimeException("result is null"));
return; return;
} }
moreAvailable = result.isMoreAvailable(); moreAvailable = result.getMoreAvailable();
topicalExploreRequest.setMaxId(result.getNextMaxId()); topicalExploreRequest.setMaxId(result.getNextMaxId());
final List<WrappedMedia> items = result.getItems(); final List<WrappedMedia> items = result.getItems();
final List<Media> posts; final List<Media> posts;

View File

@ -268,7 +268,7 @@ public class PostsRecyclerView extends RecyclerView {
private List<String> getDisplayUrl(final Media feedModel) { private List<String> getDisplayUrl(final Media feedModel) {
List<String> urls = Collections.emptyList(); List<String> urls = Collections.emptyList();
switch (feedModel.getMediaType()) { switch (feedModel.getType()) {
case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_IMAGE:
case MEDIA_TYPE_VIDEO: case MEDIA_TYPE_VIDEO:
urls = Collections.singletonList(ResponseBodyUtils.getImageUrl(feedModel)); urls = Collections.singletonList(ResponseBodyUtils.getImageUrl(feedModel));

View File

@ -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, final SpannableStringBuilder span = new SpannableStringBuilder(getResources().getQuantityString(R.plurals.main_posts_count_inline,
hashtagModel.getMediaCount() > 2000000000L hashtagModel.getMediaCount() > 2000000000L
? 2000000000 ? 2000000000
: hashtagModel.getMediaCount().intValue(), : Long.valueOf(hashtagModel.getMediaCount()).intValue(),
postCount)); postCount));
span.setSpan(new RelativeSizeSpan(1.2f), 0, postCount.length(), 0); span.setSpan(new RelativeSizeSpan(1.2f), 0, postCount.length(), 0);
span.setSpan(new StyleSpan(Typeface.BOLD), 0, postCount.length(), 0); span.setSpan(new StyleSpan(Typeface.BOLD), 0, postCount.length(), 0);

View File

@ -219,8 +219,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
// wasPaused = true; // wasPaused = true;
if (settingsHelper.getBoolean(PreferenceKeys.PLAY_IN_BACKGROUND)) return; if (settingsHelper.getBoolean(PreferenceKeys.PLAY_IN_BACKGROUND)) return;
final Media media = viewModel.getMedia(); final Media media = viewModel.getMedia();
if (media.getMediaType() == null) return; if (media.getType() == null) return;
switch (media.getMediaType()) { switch (media.getType()) {
case MEDIA_TYPE_VIDEO: case MEDIA_TYPE_VIDEO:
if (videoPlayerViewHelper != null) { if (videoPlayerViewHelper != null) {
videoPlayerViewHelper.pause(); videoPlayerViewHelper.pause();
@ -252,8 +252,8 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
super.onDestroyView(); super.onDestroyView();
showSystemUI(); showSystemUI();
final Media media = viewModel.getMedia(); final Media media = viewModel.getMedia();
if (media.getMediaType() == null) return; if (media.getType() == null) return;
switch (media.getMediaType()) { switch (media.getType()) {
case MEDIA_TYPE_VIDEO: case MEDIA_TYPE_VIDEO:
if (videoPlayerViewHelper != null) { if (videoPlayerViewHelper != null) {
videoPlayerViewHelper.releasePlayer(); videoPlayerViewHelper.releasePlayer();
@ -271,7 +271,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
public void onSaveInstanceState(@NonNull final Bundle outState) { public void onSaveInstanceState(@NonNull final Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
final Media media = viewModel.getMedia(); 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); outState.putInt(ARG_SLIDER_POSITION, sliderPosition);
} }
} }
@ -293,7 +293,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
return; return;
} }
final Media media = (Media) feedModelSerializable; 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); sliderPosition = arguments.getInt(ARG_SLIDER_POSITION, 0);
} }
viewModel.setMedia(media); viewModel.setMedia(media);
@ -902,7 +902,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
final boolean hasVideo = media.getCarouselMedia() final boolean hasVideo = media.getCarouselMedia()
.stream() .stream()
.anyMatch(postChild -> postChild.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO); .anyMatch(postChild -> postChild.getType() == MediaItemType.MEDIA_TYPE_VIDEO);
if (hasVideo) { if (hasVideo) {
final View child = sliderParent.getChildAt(0); final View child = sliderParent.getChildAt(0);
if (child instanceof RecyclerView) { if (child instanceof RecyclerView) {
@ -918,7 +918,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
@Override @Override
public void onItemClicked(final int position, final Media media, final View view) { public void onItemClicked(final int position, final Media media, final View view) {
if (media == null if (media == null
|| media.getMediaType() != MediaItemType.MEDIA_TYPE_IMAGE || media.getType() != MediaItemType.MEDIA_TYPE_IMAGE
|| !(view instanceof ZoomableDraweeView)) { || !(view instanceof ZoomableDraweeView)) {
return; return;
} }
@ -1012,7 +1012,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
// } // }
// } // }
video = false; video = false;
if (childMedia.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO) { if (childMedia.getType() == MediaItemType.MEDIA_TYPE_VIDEO) {
// if (view instanceof RecyclerView) { // if (view instanceof RecyclerView) {
// final RecyclerView.ViewHolder viewHolder = ((RecyclerView) view).findViewHolderForAdapterPosition(position); // final RecyclerView.ViewHolder viewHolder = ((RecyclerView) view).findViewHolderForAdapterPosition(position);
// if (viewHolder instanceof SliderVideoViewHolder) { // if (viewHolder instanceof SliderVideoViewHolder) {
@ -1409,7 +1409,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
// if (wasControlsVisible) { // if (wasControlsVisible) {
// showPlayerControls(); // showPlayerControls();
// } // }
if (media.getMediaType() == MediaItemType.MEDIA_TYPE_SLIDER) { if (media.getType() == MediaItemType.MEDIA_TYPE_SLIDER) {
binding.mediaCounter.setVisibility(View.VISIBLE); binding.mediaCounter.setVisibility(View.VISIBLE);
} }
detailsVisible = true; detailsVisible = true;

View File

@ -921,7 +921,7 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact
@NonNull @NonNull
private String getMediaPreviewTextString(final Media media) { private String getMediaPreviewTextString(final Media media) {
final MediaItemType mediaType = media.getMediaType(); final MediaItemType mediaType = media.getType();
switch (mediaType) { switch (mediaType) {
case MEDIA_TYPE_IMAGE: case MEDIA_TYPE_IMAGE:
return getString(R.string.photo); return getString(R.string.photo);

View File

@ -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; enum class FollowingType(val id: Int) : Serializable {
import java.util.HashMap;
import java.util.Map;
public enum FollowingType implements Serializable {
@SerializedName("1")
FOLLOWING(1), FOLLOWING(1),
@SerializedName("0")
NOT_FOLLOWING(0); NOT_FOLLOWING(0);
private final int id; companion object {
private static final Map<Integer, FollowingType> map = new HashMap<>(); private val map: MutableMap<Int, FollowingType> = mutableMapOf()
static { @JvmStatic
for (FollowingType type : FollowingType.values()) { fun valueOf(id: Int): FollowingType? {
map.put(type.id, type); return map[id]
}
} }
FollowingType(final int id) { init {
this.id = id; for (type in values()) {
} map[type.id] = type
}
public int getId() { }
return id;
}
public static FollowingType valueOf(final int id) {
return map.get(id);
} }
} }

View File

@ -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; enum class MediaItemType(val id: Int) : Serializable {
import java.util.HashMap;
import java.util.Map;
public enum MediaItemType implements Serializable {
@SerializedName("1")
MEDIA_TYPE_IMAGE(1), MEDIA_TYPE_IMAGE(1),
@SerializedName("2")
MEDIA_TYPE_VIDEO(2), MEDIA_TYPE_VIDEO(2),
@SerializedName("8")
MEDIA_TYPE_SLIDER(8), MEDIA_TYPE_SLIDER(8),
@SerializedName("11")
MEDIA_TYPE_VOICE(11), MEDIA_TYPE_VOICE(11),
// 5 is arbitrary MEDIA_TYPE_LIVE(5); // arbitrary
@SerializedName("5")
MEDIA_TYPE_LIVE(5);
private final int id; companion object {
private static final Map<Integer, MediaItemType> map = new HashMap<>(); private val map: MutableMap<Int, MediaItemType> = mutableMapOf()
static { @JvmStatic
for (MediaItemType type : MediaItemType.values()) { fun valueOf(id: Int): MediaItemType? {
map.put(type.id, type); return map[id]
}
} }
MediaItemType(final int id) { init {
this.id = id; for (type in values()) {
} map[type.id] = type
}
public int getId() { }
return id;
}
public static MediaItemType valueOf(final int id) {
return map.get(id);
} }
} }

View File

@ -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; data class ChildCommentsFetchResponse(
val childCommentCount: Int,
import awais.instagrabber.models.Comment; val nextMaxChildCursor: String?,
val childComments: List<Comment>?,
public class ChildCommentsFetchResponse { val hasMoreTailChildComments: Boolean?
private final int childCommentCount; )
private final String nextMaxChildCursor;
private final List<Comment> childComments;
private final boolean hasMoreTailChildComments;
public ChildCommentsFetchResponse(final int childCommentCount,
final String nextMaxChildCursor,
final List<Comment> 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<Comment> getChildComments() {
return childComments;
}
@NonNull
@Override
public String toString() {
return "ChildCommentsFetchResponse{" +
"childCommentCount=" + childCommentCount +
", nextMaxChildCursor='" + nextMaxChildCursor + '\'' +
", childComments=" + childComments +
", hasMoreTailChildComments=" + hasMoreTailChildComments +
'}';
}
}

View File

@ -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; data class CommentsFetchResponse(
val commentCount: Int,
import awais.instagrabber.models.Comment; val nextMinId: String?,
val comments: List<Comment>?,
public class CommentsFetchResponse { val hasMoreComments: Boolean
private final int commentCount; )
private final String nextMinId;
private final List<Comment> comments;
private final boolean hasMoreComments;
public CommentsFetchResponse(final int commentCount,
final String nextMinId,
final List<Comment> 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<Comment> getComments() {
return comments;
}
public boolean getHasMoreComments() {
return hasMoreComments;
}
@NonNull
@Override
public String toString() {
return "CommentsFetchResponse{" +
"commentCount=" + commentCount +
", nextMinId='" + nextMinId + '\'' +
", comments=" + comments +
", hasMoreComments=" + hasMoreComments +
'}';
}
}

View File

@ -1,63 +1,12 @@
package awais.instagrabber.repositories.responses; package awais.instagrabber.repositories.responses
import java.io.Serializable; import awais.instagrabber.models.enums.FollowingType
import java.util.Objects; import java.io.Serializable
import awais.instagrabber.models.enums.FollowingType; data class Hashtag(
val id: String,
public final class Hashtag implements Serializable { val name: String,
private final FollowingType following; // 0 false 1 true; not on search results val mediaCount: Long,
private final long mediaCount; val following: FollowingType?, // 0 false 1 true; not on search results
private final String id; val searchResultSubtitle: String? // shows how many posts there are on search results
private final String name; ) : Serializable
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);
}
}

View File

@ -1,57 +1,11 @@
package awais.instagrabber.repositories.responses; package awais.instagrabber.repositories.responses
import java.util.List; data class LocationFeedResponse(
val numResults: Int,
public class LocationFeedResponse { val nextMaxId: String?,
private final int numResults; val moreAvailable: Boolean?,
private final String nextMaxId; val mediaCount: Long?,
private final boolean moreAvailable; val status: String,
private final long mediaCount; val items: List<Media>?,
private final String status; val location: Location
private final List<Media> items; )
private final Location location;
public LocationFeedResponse(final int numResults,
final String nextMaxId,
final boolean moreAvailable,
final long mediaCount,
final String status,
final List<Media> 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<Media> getItems() {
return items;
}
public long getMediaCount() {
return mediaCount;
}
public Location getLocation() {
return location;
}
}

View File

@ -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;
}
}

View File

@ -1,6 +1,7 @@
package awais.instagrabber.repositories.responses package awais.instagrabber.repositories.responses
import awais.instagrabber.models.enums.MediaItemType import awais.instagrabber.models.enums.MediaItemType
import awais.instagrabber.models.enums.MediaItemType.Companion.valueOf
import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator
import awais.instagrabber.utils.TextUtils import awais.instagrabber.utils.TextUtils
import java.io.Serializable import java.io.Serializable
@ -15,7 +16,7 @@ data class Media(
val imageVersions2: ImageVersions2? = null, val imageVersions2: ImageVersions2? = null,
val originalWidth: Int = 0, val originalWidth: Int = 0,
val originalHeight: Int = 0, val originalHeight: Int = 0,
val mediaType: MediaItemType? = null, val mediaType: Int = 0,
val commentLikesEnabled: Boolean = false, val commentLikesEnabled: Boolean = false,
val commentsDisabled: Boolean = false, val commentsDisabled: Boolean = false,
val nextMaxId: Long = -1, val nextMaxId: Long = -1,
@ -58,6 +59,9 @@ data class Media(
return dateString ?: "" return dateString ?: ""
} }
val type: MediaItemType?
get() = valueOf(mediaType)
fun setPostCaption(caption: String?) { fun setPostCaption(caption: String?) {
var caption1: Caption? = this.caption var caption1: Caption? = this.caption
if (caption1 == null) { if (caption1 == null) {

View File

@ -1,33 +1,7 @@
package awais.instagrabber.repositories.responses; package awais.instagrabber.repositories.responses
import java.util.List; data class UserSearchResponse(
val numResults: Int,
public class UserSearchResponse { val users: List<User>?,
private final int numResults; val status: String
private final List<User> users; )
private final boolean hasMore;
private final String status;
public UserSearchResponse(final int numResults, final List<User> 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<User> getUsers() {
return users;
}
public boolean hasMore() {
return hasMore;
}
public String getStatus() {
return status;
}
}

View File

@ -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; data class TopicCluster(
val id: String,
public class TopicCluster implements Serializable { val title: String,
private final String id; val type: String?,
private final String title; val canMute: Boolean?,
private final String type; val isMuted: Boolean?,
private final boolean canMute; val rankedPosition: Int,
private final boolean isMuted; var coverMedia: Media?
private final int rankedPosition; ) : Serializable
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;
}
}

View File

@ -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 { data class TopicalExploreFeedResponse(
private final boolean moreAvailable; val moreAvailable: Boolean,
private final String nextMaxId; val nextMaxId: String?,
private final String maxId; val maxId: String?,
private final String status; val status: String,
private final int numResults; val numResults: Int,
private final List<TopicCluster> clusters; val clusters: List<TopicCluster>?,
private final List<WrappedMedia> items; val items: List<WrappedMedia>?
)
public TopicalExploreFeedResponse(final boolean moreAvailable,
final String nextMaxId,
final String maxId,
final String status,
final int numResults,
final List<TopicCluster> clusters,
final List<WrappedMedia> 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<TopicCluster> getClusters() {
return clusters;
}
public List<WrappedMedia> getItems() {
return items;
}
}

View File

@ -109,7 +109,7 @@ public final class DMUtils {
.getString(R.string.dms_inbox_shared_location, username != null ? username : "", item.getLocation().getName()); .getString(R.string.dms_inbox_shared_location, username != null ? username : "", item.getLocation().getName());
break; break;
case MEDIA: { case MEDIA: {
final MediaItemType mediaType = item.getMedia().getMediaType(); final MediaItemType mediaType = item.getMedia().getType();
subtitle = getMediaSpecificSubtitle(username, resources, mediaType); subtitle = getMediaSpecificSubtitle(username, resources, mediaType);
break; break;
} }
@ -304,7 +304,7 @@ public final class DMUtils {
} }
return subtitle; return subtitle;
} }
final MediaItemType mediaType = visualMedia.getMedia().getMediaType(); final MediaItemType mediaType = visualMedia.getMedia().getType();
subtitle = getMediaSpecificSubtitle(username, resources, mediaType); subtitle = getMediaSpecificSubtitle(username, resources, mediaType);
return subtitle; return subtitle;
} }

View File

@ -52,7 +52,7 @@ fun createImageOrVideo(
imageVersions2 = imageVersions2, imageVersions2 = imageVersions2,
originalWidth = width, originalWidth = width,
originalHeight = height, 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, videoVersions = videoVersions,
) )
return DirectItem( return DirectItem(
@ -82,7 +82,7 @@ fun createVoice(
) )
val media = Media( val media = Media(
id = UUID.randomUUID().toString(), id = UUID.randomUUID().toString(),
mediaType = MediaItemType.MEDIA_TYPE_VOICE, mediaType = MediaItemType.MEDIA_TYPE_VOICE.id,
audio = audio, audio = audio,
) )
val voiceMedia = DirectItemVoiceMedia( val voiceMedia = DirectItemVoiceMedia(

View File

@ -285,10 +285,10 @@ object DownloadUtils {
username = user.username username = user.username
} }
val userFolderPaths: List<String> = getSubPathForUserFolder(username) val userFolderPaths: List<String> = getSubPathForUserFolder(username)
when (media.mediaType) { when (media.type) {
MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> { MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> {
val url = val url =
if (media.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( if (media.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(
media media
) else ResponseBodyUtils.getImageUrl(media) ) else ResponseBodyUtils.getImageUrl(media)
val file = getDownloadSavePaths(ArrayList(userFolderPaths), media.code, url, "") val file = getDownloadSavePaths(ArrayList(userFolderPaths), media.code, url, "")
@ -308,7 +308,7 @@ object DownloadUtils {
while (i < sliderItems!!.size) { while (i < sliderItems!!.size) {
val child = sliderItems[i] val child = sliderItems[i]
val url = val url =
if (child.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl( if (child.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(
child child
) else ResponseBodyUtils.getImageUrl(child) ) else ResponseBodyUtils.getImageUrl(child)
val file = getDownloadChildSavePaths( val file = getDownloadChildSavePaths(
@ -446,7 +446,7 @@ object DownloadUtils {
val mediaUser = media.user val mediaUser = media.user
val username = mediaUser?.username ?: "" val username = mediaUser?.username ?: ""
val userFolderPaths = getSubPathForUserFolder(username) val userFolderPaths = getSubPathForUserFolder(username)
when (media.mediaType) { when (media.type) {
MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> { MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> {
val url = getUrlOfType(media) val url = getUrlOfType(media)
var fileName = media.id var fileName = media.id
@ -525,7 +525,7 @@ object DownloadUtils {
} }
private fun getUrlOfType(media: Media): String? { private fun getUrlOfType(media: Media): String? {
when (media.mediaType) { when (media.type) {
MediaItemType.MEDIA_TYPE_IMAGE -> { MediaItemType.MEDIA_TYPE_IMAGE -> {
return ResponseBodyUtils.getImageUrl(media) return ResponseBodyUtils.getImageUrl(media)
} }

View File

@ -243,7 +243,7 @@ public final class ResponseBodyUtils {
imageVersions2, imageVersions2,
width, width,
height, height,
mediaItemType, mediaItemType.getId(),
false, false,
feedItem.optBoolean("comments_disabled"), feedItem.optBoolean("comments_disabled"),
-1, -1,

View File

@ -60,8 +60,8 @@ class PostViewV2ViewModel : ViewModel() {
date.postValue(media.date) date.postValue(media.date)
likeCount.postValue(media.likeCount) likeCount.postValue(media.likeCount)
commentCount.postValue(media.commentCount) commentCount.postValue(media.commentCount)
viewCount.postValue(if (media.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) media.viewCount else null) viewCount.postValue(if (media.type == MediaItemType.MEDIA_TYPE_VIDEO) media.viewCount else null)
type.postValue(media.mediaType) type.postValue(media.type)
liked.postValue(media.hasLiked) liked.postValue(media.hasLiked)
saved.postValue(media.hasViewerSaved) saved.postValue(media.hasViewerSaved)
initOptions() initOptions()
@ -310,7 +310,7 @@ class PostViewV2ViewModel : ViewModel() {
return data return data
} }
val mediaId = media.id val mediaId = media.id
val mediaType = media.mediaType val mediaType = media.type
if (mediaId == null || mediaType == null) { if (mediaId == null || mediaType == null) {
data.postValue(error("media id or type is null", null)) data.postValue(error("media id or type is null", null))
return data return data

View File

@ -119,13 +119,13 @@ public class FeedService {
nextMaxId = group.getNextMaxId(); nextMaxId = group.getNextMaxId();
final List<Media> feedItems = group.getFeedItems(); final List<Media> feedItems = group.getFeedItems();
for (final Media feedItem : feedItems) { 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); allPosts.add(feedItem);
} }
} }
continue; continue;
} }
if (media == null || media.isInjected() || media.getMediaType() == null) continue; if (media == null || media.isInjected() || media.getType() == null) continue;
allPosts.add(media); allPosts.add(media);
} }
return new PostsFetchResponse(allPosts, moreAvailable, nextMaxId); return new PostsFetchResponse(allPosts, moreAvailable, nextMaxId);

View File

@ -53,7 +53,7 @@ public class LocationService {
} }
final PostsFetchResponse postsFetchResponse = new PostsFetchResponse( final PostsFetchResponse postsFetchResponse = new PostsFetchResponse(
body.getItems(), body.getItems(),
body.isMoreAvailable(), body.getMoreAvailable(),
body.getNextMaxId() body.getNextMaxId()
); );
callback.onSuccess(postsFetchResponse); callback.onSuccess(postsFetchResponse);