Ammar Githam
4 years ago
18 changed files with 209 additions and 1007 deletions
-
10app/src/main/java/awais/instagrabber/managers/ThreadManager.java
-
33app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemClip.kt
-
33app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemFelixShare.kt
-
102app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemReelShare.kt
-
40app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemReelShareReactionInfo.kt
-
93app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemStoryShare.kt
-
106app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItemVisualMedia.kt
-
419app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectThread.kt
-
23app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectThreadDetailsChangeResponse.kt
-
41app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectThreadDirectStory.kt
-
84app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectThreadParticipantRequestsResponse.kt
-
53app/src/main/java/awais/instagrabber/repositories/responses/directmessages/RankedRecipient.kt
-
60app/src/main/java/awais/instagrabber/repositories/responses/directmessages/RankedRecipientsResponse.kt
-
62app/src/main/java/awais/instagrabber/repositories/responses/directmessages/RavenExpiringMediaActionSummary.kt
-
2app/src/main/java/awais/instagrabber/services/DMSyncService.java
-
3app/src/main/java/awais/instagrabber/utils/DMUtils.java
-
2app/src/main/java/awais/instagrabber/viewmodels/DirectSettingsViewModel.java
-
4app/src/main/java/awais/instagrabber/webservices/DiscoverService.java
@ -1,31 +1,6 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
import awais.instagrabber.repositories.responses.Media |
|||
import java.io.Serializable |
|||
|
|||
import awais.instagrabber.repositories.responses.Media; |
|||
|
|||
public class DirectItemClip implements Serializable { |
|||
private final Media clip; |
|||
|
|||
public DirectItemClip(final Media clip) { |
|||
this.clip = clip; |
|||
} |
|||
|
|||
public Media getClip() { |
|||
return clip; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemClip that = (DirectItemClip) o; |
|||
return Objects.equals(clip, that.clip); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(clip); |
|||
} |
|||
} |
|||
data class DirectItemClip(val clip: Media? = null) : Serializable |
@ -1,31 +1,6 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
import awais.instagrabber.repositories.responses.Media |
|||
import java.io.Serializable |
|||
|
|||
import awais.instagrabber.repositories.responses.Media; |
|||
|
|||
public class DirectItemFelixShare implements Serializable { |
|||
private final Media video; |
|||
|
|||
public DirectItemFelixShare(final Media video) { |
|||
this.video = video; |
|||
} |
|||
|
|||
public Media getVideo() { |
|||
return video; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemFelixShare that = (DirectItemFelixShare) o; |
|||
return Objects.equals(video, that.video); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(video); |
|||
} |
|||
} |
|||
data class DirectItemFelixShare(val video: Media? = null) : Serializable |
@ -1,87 +1,15 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
|
|||
import awais.instagrabber.repositories.responses.Media; |
|||
|
|||
public class DirectItemReelShare implements Serializable { |
|||
private final String text; |
|||
private final String type; |
|||
private final long reelOwnerId; |
|||
private final long mentionedUserId; |
|||
private final boolean isReelPersisted; |
|||
private final String reelType; |
|||
private final Media media; |
|||
private final DirectItemReelShareReactionInfo reactionInfo; |
|||
|
|||
public DirectItemReelShare(final String text, |
|||
final String type, |
|||
final long reelOwnerId, |
|||
final long mentionedUserId, |
|||
final boolean isReelPersisted, |
|||
final String reelType, |
|||
final Media media, |
|||
final DirectItemReelShareReactionInfo reactionInfo) { |
|||
this.text = text; |
|||
this.type = type; |
|||
this.reelOwnerId = reelOwnerId; |
|||
this.mentionedUserId = mentionedUserId; |
|||
this.isReelPersisted = isReelPersisted; |
|||
this.reelType = reelType; |
|||
this.media = media; |
|||
this.reactionInfo = reactionInfo; |
|||
} |
|||
|
|||
public String getText() { |
|||
return text; |
|||
} |
|||
|
|||
public String getType() { |
|||
return type; |
|||
} |
|||
|
|||
public long getReelOwnerId() { |
|||
return reelOwnerId; |
|||
} |
|||
|
|||
public boolean isReelPersisted() { |
|||
return isReelPersisted; |
|||
} |
|||
|
|||
public String getReelType() { |
|||
return reelType; |
|||
} |
|||
|
|||
public Media getMedia() { |
|||
return media; |
|||
} |
|||
|
|||
public DirectItemReelShareReactionInfo getReactionInfo() { |
|||
return reactionInfo; |
|||
} |
|||
|
|||
public long getMentionedUserId() { |
|||
return mentionedUserId; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemReelShare that = (DirectItemReelShare) o; |
|||
return reelOwnerId == that.reelOwnerId && |
|||
mentionedUserId == that.mentionedUserId && |
|||
isReelPersisted == that.isReelPersisted && |
|||
Objects.equals(text, that.text) && |
|||
Objects.equals(type, that.type) && |
|||
Objects.equals(reelType, that.reelType) && |
|||
Objects.equals(media, that.media) && |
|||
Objects.equals(reactionInfo, that.reactionInfo); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(text, type, reelOwnerId, mentionedUserId, isReelPersisted, reelType, media, reactionInfo); |
|||
} |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import awais.instagrabber.repositories.responses.Media |
|||
import java.io.Serializable |
|||
|
|||
data class DirectItemReelShare( |
|||
val text: String? = null, |
|||
val type: String? = null, |
|||
val reelOwnerId: Long = 0, |
|||
val mentionedUserId: Long = 0, |
|||
val isReelPersisted: Boolean = false, |
|||
val reelType: String? = null, |
|||
val media: Media? = null, |
|||
val reactionInfo: DirectItemReelShareReactionInfo? = null, |
|||
) : Serializable |
@ -1,36 +1,8 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
import java.io.Serializable |
|||
|
|||
public class DirectItemReelShareReactionInfo implements Serializable { |
|||
private final String emoji; |
|||
private final String intensity; |
|||
|
|||
public DirectItemReelShareReactionInfo(final String emoji, final String intensity) { |
|||
this.emoji = emoji; |
|||
this.intensity = intensity; |
|||
} |
|||
|
|||
public String getEmoji() { |
|||
return emoji; |
|||
} |
|||
|
|||
public String getIntensity() { |
|||
return intensity; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemReelShareReactionInfo that = (DirectItemReelShareReactionInfo) o; |
|||
return Objects.equals(emoji, that.emoji) && |
|||
Objects.equals(intensity, that.intensity); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(emoji, intensity); |
|||
} |
|||
} |
|||
data class DirectItemReelShareReactionInfo( |
|||
val emoji: String? = null, |
|||
val intensity: String? = null, |
|||
) : Serializable |
@ -1,79 +1,14 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
|
|||
import awais.instagrabber.repositories.responses.Media; |
|||
|
|||
public class DirectItemStoryShare implements Serializable { |
|||
private final String reelId; |
|||
private final String reelType; |
|||
private final String text; |
|||
private final boolean isReelPersisted; |
|||
private final Media media; |
|||
private final String title; |
|||
private final String message; |
|||
|
|||
public DirectItemStoryShare(final String reelId, |
|||
final String reelType, |
|||
final String text, |
|||
final boolean isReelPersisted, |
|||
final Media media, |
|||
final String title, |
|||
final String message) { |
|||
this.reelId = reelId; |
|||
this.reelType = reelType; |
|||
this.text = text; |
|||
this.isReelPersisted = isReelPersisted; |
|||
this.media = media; |
|||
this.title = title; |
|||
this.message = message; |
|||
} |
|||
|
|||
public String getReelId() { |
|||
return reelId; |
|||
} |
|||
|
|||
public String getReelType() { |
|||
return reelType; |
|||
} |
|||
|
|||
public String getText() { |
|||
return text; |
|||
} |
|||
|
|||
public boolean isReelPersisted() { |
|||
return isReelPersisted; |
|||
} |
|||
|
|||
public Media getMedia() { |
|||
return media; |
|||
} |
|||
|
|||
public String getTitle() { |
|||
return title; |
|||
} |
|||
|
|||
public String getMessage() { |
|||
return message; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemStoryShare that = (DirectItemStoryShare) o; |
|||
return isReelPersisted == that.isReelPersisted && |
|||
Objects.equals(reelId, that.reelId) && |
|||
Objects.equals(reelType, that.reelType) && |
|||
Objects.equals(text, that.text) && |
|||
Objects.equals(media, that.media) && |
|||
Objects.equals(title, that.title) && |
|||
Objects.equals(message, that.message); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(reelId, reelType, text, isReelPersisted, media, title, message); |
|||
} |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import awais.instagrabber.repositories.responses.Media |
|||
import java.io.Serializable |
|||
|
|||
data class DirectItemStoryShare( |
|||
val reelId: String? = null, |
|||
val reelType: String? = null, |
|||
val text: String? = null, |
|||
val isReelPersisted: Boolean = false, |
|||
val media: Media? = null, |
|||
val title: String? = null, |
|||
val message: String? = null, |
|||
) : Serializable |
@ -1,90 +1,16 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
import java.util.Objects; |
|||
|
|||
import awais.instagrabber.models.enums.RavenMediaViewMode; |
|||
import awais.instagrabber.repositories.responses.Media; |
|||
|
|||
public class DirectItemVisualMedia implements Serializable { |
|||
private final long urlExpireAtSecs; |
|||
private final int playbackDurationSecs; |
|||
private final List<Long> seenUserIds; |
|||
private final RavenMediaViewMode viewMode; |
|||
private final int seenCount; |
|||
private final long replayExpiringAtUs; |
|||
private final RavenExpiringMediaActionSummary expiringMediaActionSummary; |
|||
private final Media media; |
|||
|
|||
public DirectItemVisualMedia(final long urlExpireAtSecs, |
|||
final int playbackDurationSecs, |
|||
final List<Long> seenUserIds, |
|||
final RavenMediaViewMode viewMode, |
|||
final int seenCount, |
|||
final long replayExpiringAtUs, |
|||
final RavenExpiringMediaActionSummary expiringMediaActionSummary, |
|||
final Media media) { |
|||
this.urlExpireAtSecs = urlExpireAtSecs; |
|||
this.playbackDurationSecs = playbackDurationSecs; |
|||
this.seenUserIds = seenUserIds; |
|||
this.viewMode = viewMode; |
|||
this.seenCount = seenCount; |
|||
this.replayExpiringAtUs = replayExpiringAtUs; |
|||
this.expiringMediaActionSummary = expiringMediaActionSummary; |
|||
this.media = media; |
|||
} |
|||
|
|||
public long getUrlExpireAtSecs() { |
|||
return urlExpireAtSecs; |
|||
} |
|||
|
|||
public int getPlaybackDurationSecs() { |
|||
return playbackDurationSecs; |
|||
} |
|||
|
|||
public List<Long> getSeenUserIds() { |
|||
return seenUserIds; |
|||
} |
|||
|
|||
public RavenMediaViewMode getViewMode() { |
|||
return viewMode; |
|||
} |
|||
|
|||
public int getSeenCount() { |
|||
return seenCount; |
|||
} |
|||
|
|||
public long getReplayExpiringAtUs() { |
|||
return replayExpiringAtUs; |
|||
} |
|||
|
|||
public RavenExpiringMediaActionSummary getExpiringMediaActionSummary() { |
|||
return expiringMediaActionSummary; |
|||
} |
|||
|
|||
public Media getMedia() { |
|||
return media; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectItemVisualMedia media1 = (DirectItemVisualMedia) o; |
|||
return urlExpireAtSecs == media1.urlExpireAtSecs && |
|||
playbackDurationSecs == media1.playbackDurationSecs && |
|||
seenCount == media1.seenCount && |
|||
replayExpiringAtUs == media1.replayExpiringAtUs && |
|||
Objects.equals(seenUserIds, media1.seenUserIds) && |
|||
viewMode == media1.viewMode && |
|||
Objects.equals(expiringMediaActionSummary, media1.expiringMediaActionSummary) && |
|||
Objects.equals(media, media1.media); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects |
|||
.hash(urlExpireAtSecs, playbackDurationSecs, seenUserIds, viewMode, seenCount, replayExpiringAtUs, expiringMediaActionSummary, media); |
|||
} |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import awais.instagrabber.models.enums.RavenMediaViewMode |
|||
import awais.instagrabber.repositories.responses.Media |
|||
import java.io.Serializable |
|||
|
|||
data class DirectItemVisualMedia( |
|||
val urlExpireAtSecs: Long = 0, |
|||
val playbackDurationSecs: Int = 0, |
|||
val seenUserIds: List<Long>? = null, |
|||
val viewMode: RavenMediaViewMode? = null, |
|||
val seenCount: Int = 0, |
|||
val replayExpiringAtUs: Long = 0, |
|||
val expiringMediaActionSummary: RavenExpiringMediaActionSummary? = null, |
|||
val media: Media? = null, |
|||
) : Serializable |
@ -1,372 +1,49 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.annotation.Nullable; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Objects; |
|||
|
|||
import awais.instagrabber.repositories.responses.User; |
|||
|
|||
public class DirectThread implements Serializable, Cloneable { |
|||
private final String threadId; |
|||
private final String threadV2Id; |
|||
private List<User> users; |
|||
private List<User> leftUsers; |
|||
private List<Long> adminUserIds; |
|||
private List<DirectItem> items; |
|||
private final long lastActivityAt; |
|||
private boolean muted; |
|||
private final boolean isPin; |
|||
private final boolean named; |
|||
private final boolean canonical; |
|||
private boolean pending; |
|||
private final boolean archived; |
|||
private final boolean valuedRequest; |
|||
private final String threadType; |
|||
private final long viewerId; |
|||
private final String threadTitle; |
|||
private final String pendingScore; |
|||
private final long folder; |
|||
private final boolean vcMuted; |
|||
private final boolean isGroup; |
|||
private boolean mentionsMuted; |
|||
private final User inviter; |
|||
private final boolean hasOlder; |
|||
private final boolean hasNewer; |
|||
private Map<Long, DirectThreadLastSeenAt> lastSeenAt; |
|||
private final String newestCursor; |
|||
private final String oldestCursor; |
|||
private final boolean isSpam; |
|||
private final DirectItem lastPermanentItem; |
|||
private final DirectThreadDirectStory directStory; |
|||
private boolean approvalRequiredForNewMembers; |
|||
private int inputMode; |
|||
private final List<ThreadContext> threadContextItems; |
|||
private boolean isTemp; |
|||
|
|||
public DirectThread(final String threadId, |
|||
final String threadV2Id, |
|||
final List<User> users, |
|||
final List<User> leftUsers, |
|||
final List<Long> adminUserIds, |
|||
final List<DirectItem> items, |
|||
final long lastActivityAt, |
|||
final boolean muted, |
|||
final boolean isPin, |
|||
final boolean named, |
|||
final boolean canonical, |
|||
final boolean pending, |
|||
final boolean archived, |
|||
final boolean valuedRequest, |
|||
final String threadType, |
|||
final long viewerId, |
|||
final String threadTitle, |
|||
final String pendingScore, |
|||
final long folder, |
|||
final boolean vcMuted, |
|||
final boolean isGroup, |
|||
final boolean mentionsMuted, |
|||
final User inviter, |
|||
final boolean hasOlder, |
|||
final boolean hasNewer, |
|||
final Map<Long, DirectThreadLastSeenAt> lastSeenAt, |
|||
final String newestCursor, |
|||
final String oldestCursor, |
|||
final boolean isSpam, |
|||
final DirectItem lastPermanentItem, |
|||
final DirectThreadDirectStory directStory, |
|||
final boolean approvalRequiredForNewMembers, |
|||
final int inputMode, |
|||
final List<ThreadContext> threadContextItems) { |
|||
this.threadId = threadId; |
|||
this.threadV2Id = threadV2Id; |
|||
this.users = users; |
|||
this.leftUsers = leftUsers; |
|||
this.adminUserIds = adminUserIds; |
|||
this.items = items; |
|||
this.lastActivityAt = lastActivityAt; |
|||
this.muted = muted; |
|||
this.isPin = isPin; |
|||
this.named = named; |
|||
this.canonical = canonical; |
|||
this.pending = pending; |
|||
this.archived = archived; |
|||
this.valuedRequest = valuedRequest; |
|||
this.threadType = threadType; |
|||
this.viewerId = viewerId; |
|||
this.threadTitle = threadTitle; |
|||
this.pendingScore = pendingScore; |
|||
this.folder = folder; |
|||
this.vcMuted = vcMuted; |
|||
this.isGroup = isGroup; |
|||
this.mentionsMuted = mentionsMuted; |
|||
this.inviter = inviter; |
|||
this.hasOlder = hasOlder; |
|||
this.hasNewer = hasNewer; |
|||
this.lastSeenAt = lastSeenAt; |
|||
this.newestCursor = newestCursor; |
|||
this.oldestCursor = oldestCursor; |
|||
this.isSpam = isSpam; |
|||
this.lastPermanentItem = lastPermanentItem; |
|||
this.directStory = directStory; |
|||
this.approvalRequiredForNewMembers = approvalRequiredForNewMembers; |
|||
this.inputMode = inputMode; |
|||
this.threadContextItems = threadContextItems; |
|||
} |
|||
|
|||
public String getThreadId() { |
|||
return threadId; |
|||
} |
|||
|
|||
public String getThreadV2Id() { |
|||
return threadV2Id; |
|||
} |
|||
|
|||
public List<User> getUsers() { |
|||
return users; |
|||
} |
|||
|
|||
public void setUsers(final List<User> users) { |
|||
this.users = users; |
|||
} |
|||
|
|||
public List<User> getLeftUsers() { |
|||
return leftUsers; |
|||
} |
|||
|
|||
public void setLeftUsers(final List<User> leftUsers) { |
|||
this.leftUsers = leftUsers; |
|||
} |
|||
|
|||
public List<Long> getAdminUserIds() { |
|||
return adminUserIds; |
|||
} |
|||
|
|||
public void setAdminUserIds(final List<Long> adminUserIds) { |
|||
this.adminUserIds = adminUserIds; |
|||
} |
|||
|
|||
public List<DirectItem> getItems() { |
|||
return items; |
|||
} |
|||
|
|||
public void setItems(final List<DirectItem> items) { |
|||
this.items = items; |
|||
} |
|||
|
|||
public long getLastActivityAt() { |
|||
return lastActivityAt; |
|||
} |
|||
|
|||
public boolean isMuted() { |
|||
return muted; |
|||
} |
|||
|
|||
public void setMuted(final boolean muted) { |
|||
this.muted = muted; |
|||
} |
|||
|
|||
public boolean isPin() { |
|||
return isPin; |
|||
} |
|||
|
|||
public boolean isNamed() { |
|||
return named; |
|||
} |
|||
|
|||
public boolean isCanonical() { |
|||
return canonical; |
|||
} |
|||
|
|||
public boolean isPending() { |
|||
return pending; |
|||
} |
|||
|
|||
public void setPending(final boolean pending) { |
|||
this.pending = pending; |
|||
} |
|||
|
|||
public boolean isArchived() { |
|||
return archived; |
|||
} |
|||
|
|||
public boolean isValuedRequest() { |
|||
return valuedRequest; |
|||
} |
|||
|
|||
public String getThreadType() { |
|||
return threadType; |
|||
} |
|||
|
|||
public long getViewerId() { |
|||
return viewerId; |
|||
} |
|||
|
|||
public String getThreadTitle() { |
|||
return threadTitle; |
|||
} |
|||
|
|||
public String getPendingScore() { |
|||
return pendingScore; |
|||
} |
|||
|
|||
public long getFolder() { |
|||
return folder; |
|||
} |
|||
|
|||
public boolean isVcMuted() { |
|||
return vcMuted; |
|||
} |
|||
|
|||
public boolean isGroup() { |
|||
return isGroup; |
|||
} |
|||
|
|||
public boolean isMentionsMuted() { |
|||
return mentionsMuted; |
|||
} |
|||
|
|||
public void setMentionsMuted(final boolean mentionsMuted) { |
|||
this.mentionsMuted = mentionsMuted; |
|||
} |
|||
|
|||
public User getInviter() { |
|||
return inviter; |
|||
} |
|||
|
|||
public boolean hasOlder() { |
|||
return hasOlder; |
|||
} |
|||
|
|||
public boolean hasNewer() { |
|||
return hasNewer; |
|||
} |
|||
|
|||
public Map<Long, DirectThreadLastSeenAt> getLastSeenAt() { |
|||
return lastSeenAt; |
|||
} |
|||
|
|||
public void setLastSeenAt(final Map<Long, DirectThreadLastSeenAt> lastSeenAt) { |
|||
this.lastSeenAt = lastSeenAt; |
|||
} |
|||
|
|||
public String getNewestCursor() { |
|||
return newestCursor; |
|||
} |
|||
|
|||
public String getOldestCursor() { |
|||
return oldestCursor; |
|||
} |
|||
|
|||
public boolean isSpam() { |
|||
return isSpam; |
|||
} |
|||
|
|||
public DirectItem getLastPermanentItem() { |
|||
return lastPermanentItem; |
|||
} |
|||
|
|||
public DirectThreadDirectStory getDirectStory() { |
|||
return directStory; |
|||
} |
|||
|
|||
public boolean isApprovalRequiredForNewMembers() { |
|||
return approvalRequiredForNewMembers; |
|||
} |
|||
|
|||
public void setApprovalRequiredForNewMembers(final boolean approvalRequiredForNewMembers) { |
|||
this.approvalRequiredForNewMembers = approvalRequiredForNewMembers; |
|||
} |
|||
|
|||
public int getInputMode() { |
|||
return inputMode; |
|||
} |
|||
|
|||
public void setInputMode(final int inputMode) { |
|||
this.inputMode = inputMode; |
|||
} |
|||
|
|||
public List<ThreadContext> getThreadContextItems() { |
|||
return threadContextItems; |
|||
} |
|||
|
|||
public boolean isTemp() { |
|||
return isTemp; |
|||
} |
|||
|
|||
public void setTemp(final boolean isTemp) { |
|||
this.isTemp = isTemp; |
|||
} |
|||
|
|||
@Nullable |
|||
public DirectItem getFirstDirectItem() { |
|||
DirectItem firstItem = null; |
|||
if (!items.isEmpty()) { |
|||
int position = 0; |
|||
while (firstItem == null && position < items.size()) { |
|||
firstItem = items.get(position); |
|||
position++; |
|||
} |
|||
} |
|||
return firstItem; |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public Object clone() throws CloneNotSupportedException { |
|||
return super.clone(); |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectThread that = (DirectThread) o; |
|||
return lastActivityAt == that.lastActivityAt && |
|||
muted == that.muted && |
|||
isPin == that.isPin && |
|||
named == that.named && |
|||
canonical == that.canonical && |
|||
pending == that.pending && |
|||
archived == that.archived && |
|||
valuedRequest == that.valuedRequest && |
|||
viewerId == that.viewerId && |
|||
folder == that.folder && |
|||
vcMuted == that.vcMuted && |
|||
isGroup == that.isGroup && |
|||
mentionsMuted == that.mentionsMuted && |
|||
hasOlder == that.hasOlder && |
|||
hasNewer == that.hasNewer && |
|||
isSpam == that.isSpam && |
|||
approvalRequiredForNewMembers == that.approvalRequiredForNewMembers && |
|||
inputMode == that.inputMode && |
|||
Objects.equals(threadId, that.threadId) && |
|||
Objects.equals(threadV2Id, that.threadV2Id) && |
|||
Objects.equals(users, that.users) && |
|||
Objects.equals(leftUsers, that.leftUsers) && |
|||
Objects.equals(adminUserIds, that.adminUserIds) && |
|||
Objects.equals(items, that.items) && |
|||
Objects.equals(threadType, that.threadType) && |
|||
Objects.equals(threadTitle, that.threadTitle) && |
|||
Objects.equals(pendingScore, that.pendingScore) && |
|||
Objects.equals(inviter, that.inviter) && |
|||
Objects.equals(lastSeenAt, that.lastSeenAt) && |
|||
Objects.equals(newestCursor, that.newestCursor) && |
|||
Objects.equals(oldestCursor, that.oldestCursor) && |
|||
Objects.equals(lastPermanentItem, that.lastPermanentItem) && |
|||
Objects.equals(directStory, that.directStory) && |
|||
Objects.equals(threadContextItems, that.threadContextItems); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects |
|||
.hash(threadId, threadV2Id, users, leftUsers, adminUserIds, items, lastActivityAt, muted, isPin, named, canonical, pending, archived, |
|||
valuedRequest, threadType, viewerId, threadTitle, pendingScore, folder, vcMuted, isGroup, mentionsMuted, inviter, hasOlder, |
|||
hasNewer, lastSeenAt, newestCursor, oldestCursor, isSpam, lastPermanentItem, directStory, approvalRequiredForNewMembers, |
|||
inputMode, threadContextItems); |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import awais.instagrabber.repositories.responses.User |
|||
import java.io.Serializable |
|||
|
|||
data class DirectThread( |
|||
val threadId: String? = null, |
|||
val threadV2Id: String? = null, |
|||
var users: List<User>? = null, |
|||
var leftUsers: List<User>? = null, |
|||
var adminUserIds: List<Long>? = null, |
|||
var items: List<DirectItem>? = null, |
|||
val lastActivityAt: Long = 0, |
|||
var muted: Boolean = false, |
|||
val isPin: Boolean = false, |
|||
val named: Boolean = false, |
|||
val canonical: Boolean = false, |
|||
var pending: Boolean = false, |
|||
val archived: Boolean = false, |
|||
val valuedRequest: Boolean = false, |
|||
val threadType: String? = null, |
|||
val viewerId: Long = 0, |
|||
val threadTitle: String? = null, |
|||
val pendingScore: String? = null, |
|||
val folder: Long = 0, |
|||
val vcMuted: Boolean = false, |
|||
val isGroup: Boolean = false, |
|||
var mentionsMuted: Boolean = false, |
|||
val inviter: User? = null, |
|||
val hasOlder: Boolean = false, |
|||
val hasNewer: Boolean = false, |
|||
var lastSeenAt: Map<Long, DirectThreadLastSeenAt>? = null, |
|||
val newestCursor: String? = null, |
|||
val oldestCursor: String? = null, |
|||
val isSpam: Boolean = false, |
|||
val lastPermanentItem: DirectItem? = null, |
|||
val directStory: DirectThreadDirectStory? = null, |
|||
var approvalRequiredForNewMembers: Boolean = false, |
|||
var inputMode: Int = 0, |
|||
val threadContextItems: List<ThreadContext>? = null |
|||
) : Serializable, Cloneable { |
|||
var isTemp = false |
|||
|
|||
val firstDirectItem: DirectItem? |
|||
get() = items?.firstNotNullOfOrNull { it } |
|||
|
|||
@Throws(CloneNotSupportedException::class) |
|||
public override fun clone(): Any = super.clone() |
|||
} |
@ -1,19 +1,6 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
public class DirectThreadDetailsChangeResponse { |
|||
private final DirectThread thread; |
|||
private final String status; |
|||
|
|||
public DirectThreadDetailsChangeResponse(final DirectThread thread, final String status) { |
|||
this.thread = thread; |
|||
this.status = status; |
|||
} |
|||
|
|||
public DirectThread getThread() { |
|||
return thread; |
|||
} |
|||
|
|||
public String getStatus() { |
|||
return status; |
|||
} |
|||
} |
|||
data class DirectThreadDetailsChangeResponse( |
|||
val thread: DirectThread? = null, |
|||
val status: String? = null |
|||
) |
@ -1,37 +1,8 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
import java.util.Objects; |
|||
import java.io.Serializable |
|||
|
|||
public class DirectThreadDirectStory implements Serializable { |
|||
private final List<DirectItem> items; |
|||
private final int unseenCount; |
|||
|
|||
public DirectThreadDirectStory(final List<DirectItem> items, final int unseenCount) { |
|||
this.items = items; |
|||
this.unseenCount = unseenCount; |
|||
} |
|||
|
|||
public List<DirectItem> getItems() { |
|||
return items; |
|||
} |
|||
|
|||
public int getUnseenCount() { |
|||
return unseenCount; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DirectThreadDirectStory that = (DirectThreadDirectStory) o; |
|||
return unseenCount == that.unseenCount && |
|||
Objects.equals(items, that.items); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(items, unseenCount); |
|||
} |
|||
} |
|||
data class DirectThreadDirectStory( |
|||
val items: List<DirectItem>? = null, |
|||
val unseenCount: Int = 0, |
|||
) : Serializable |
@ -1,70 +1,16 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
import awais.instagrabber.repositories.responses.User; |
|||
|
|||
public class DirectThreadParticipantRequestsResponse implements Serializable, Cloneable { |
|||
private List<User> users; |
|||
private final Map<Long, String> requesterUsernames; |
|||
private final String cursor; |
|||
private final int totalThreadParticipants; |
|||
private int totalParticipantRequests; |
|||
private final String status; |
|||
|
|||
public DirectThreadParticipantRequestsResponse(final List<User> users, |
|||
final Map<Long, String> requesterUsernames, |
|||
final String cursor, |
|||
final int totalThreadParticipants, |
|||
final int totalParticipantRequests, |
|||
final String status) { |
|||
this.users = users; |
|||
this.requesterUsernames = requesterUsernames; |
|||
this.cursor = cursor; |
|||
this.totalThreadParticipants = totalThreadParticipants; |
|||
this.totalParticipantRequests = totalParticipantRequests; |
|||
this.status = status; |
|||
} |
|||
|
|||
public List<User> getUsers() { |
|||
return users; |
|||
} |
|||
|
|||
public void setUsers(final List<User> users) { |
|||
this.users = users; |
|||
} |
|||
|
|||
public Map<Long, String> getRequesterUsernames() { |
|||
return requesterUsernames; |
|||
} |
|||
|
|||
public String getCursor() { |
|||
return cursor; |
|||
} |
|||
|
|||
public int getTotalThreadParticipants() { |
|||
return totalThreadParticipants; |
|||
} |
|||
|
|||
public int getTotalParticipantRequests() { |
|||
return totalParticipantRequests; |
|||
} |
|||
|
|||
public void setTotalParticipantRequests(final int totalParticipantRequests) { |
|||
this.totalParticipantRequests = totalParticipantRequests; |
|||
} |
|||
|
|||
public String getStatus() { |
|||
return status; |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public Object clone() throws CloneNotSupportedException { |
|||
return super.clone(); |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import awais.instagrabber.repositories.responses.User |
|||
import java.io.Serializable |
|||
|
|||
data class DirectThreadParticipantRequestsResponse( |
|||
var users: List<User>? = null, |
|||
val requesterUsernames: Map<Long, String>? = null, |
|||
val cursor: String? = null, |
|||
val totalThreadParticipants: Int = 0, |
|||
var totalParticipantRequests: Int = 0, |
|||
val status: String? = null, |
|||
) : Serializable, Cloneable { |
|||
@Throws(CloneNotSupportedException::class) |
|||
public override fun clone(): Any = super.clone() |
|||
} |
@ -1,46 +1,21 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
import awais.instagrabber.repositories.responses.User |
|||
import java.io.Serializable |
|||
|
|||
import awais.instagrabber.repositories.responses.User; |
|||
|
|||
public class RankedRecipient implements Serializable { |
|||
private final User user; |
|||
private final DirectThread thread; |
|||
|
|||
public RankedRecipient(final User user, final DirectThread thread) { |
|||
this.user = user; |
|||
this.thread = thread; |
|||
} |
|||
|
|||
public User getUser() { |
|||
return user; |
|||
} |
|||
|
|||
public DirectThread getThread() { |
|||
return thread; |
|||
data class RankedRecipient( |
|||
val user: User? = null, |
|||
val thread: DirectThread? = null, |
|||
) : Serializable { |
|||
companion object { |
|||
@JvmStatic |
|||
fun of(user: User): RankedRecipient { |
|||
return RankedRecipient(user = user) |
|||
} |
|||
|
|||
public static RankedRecipient of(final User user) { |
|||
return new RankedRecipient(user, null); |
|||
@JvmStatic |
|||
fun of(thread: DirectThread): RankedRecipient { |
|||
return RankedRecipient(thread = thread) |
|||
} |
|||
|
|||
public static RankedRecipient of(final DirectThread thread) { |
|||
return new RankedRecipient(null, thread); |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final RankedRecipient that = (RankedRecipient) o; |
|||
return Objects.equals(user, that.user) && |
|||
Objects.equals(thread, that.thread); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(user, thread); |
|||
} |
|||
} |
@ -1,50 +1,10 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
|
|||
import java.util.List; |
|||
|
|||
public class RankedRecipientsResponse { |
|||
private final List<RankedRecipient> rankedRecipients; |
|||
private final long expires; |
|||
private final boolean filtered; |
|||
private final String requestId; |
|||
private final String rankToken; |
|||
private final String status; |
|||
|
|||
public RankedRecipientsResponse(final List<RankedRecipient> rankedRecipients, |
|||
final long expires, |
|||
final boolean filtered, |
|||
final String requestId, |
|||
final String rankToken, |
|||
final String status) { |
|||
this.rankedRecipients = rankedRecipients; |
|||
this.expires = expires; |
|||
this.filtered = filtered; |
|||
this.requestId = requestId; |
|||
this.rankToken = rankToken; |
|||
this.status = status; |
|||
} |
|||
|
|||
public List<RankedRecipient> getRankedRecipients() { |
|||
return rankedRecipients; |
|||
} |
|||
|
|||
public long getExpires() { |
|||
return expires; |
|||
} |
|||
|
|||
public boolean isFiltered() { |
|||
return filtered; |
|||
} |
|||
|
|||
public String getRequestId() { |
|||
return requestId; |
|||
} |
|||
|
|||
public String getRankToken() { |
|||
return rankToken; |
|||
} |
|||
|
|||
public String getStatus() { |
|||
return status; |
|||
} |
|||
} |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
data class RankedRecipientsResponse( |
|||
val rankedRecipients: List<RankedRecipient>? = null, |
|||
val expires: Long = 0, |
|||
val filtered: Boolean = false, |
|||
val requestId: String? = null, |
|||
val rankToken: String? = null, |
|||
val status: String? = null, |
|||
) |
@ -1,69 +1,43 @@ |
|||
package awais.instagrabber.repositories.responses.directmessages; |
|||
package awais.instagrabber.repositories.responses.directmessages |
|||
|
|||
import com.google.gson.annotations.SerializedName; |
|||
import com.google.gson.annotations.SerializedName |
|||
import java.io.Serializable |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
|
|||
public final class RavenExpiringMediaActionSummary implements Serializable { |
|||
private final ActionType type; |
|||
private final long timestamp; |
|||
private final int count; |
|||
|
|||
public RavenExpiringMediaActionSummary(final long timestamp, final int count, final ActionType type) { |
|||
this.timestamp = timestamp; |
|||
this.count = count; |
|||
this.type = type; |
|||
} |
|||
|
|||
public long getTimestamp() { |
|||
return timestamp; |
|||
} |
|||
|
|||
public int getCount() { |
|||
return count; |
|||
} |
|||
|
|||
public ActionType getType() { |
|||
return type; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final RavenExpiringMediaActionSummary that = (RavenExpiringMediaActionSummary) o; |
|||
return timestamp == that.timestamp && |
|||
count == that.count && |
|||
type == that.type; |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(type, timestamp, count); |
|||
} |
|||
data class RavenExpiringMediaActionSummary( |
|||
val timestamp: Long = 0, |
|||
val count: Int = 0, |
|||
val type: ActionType? = null, |
|||
) : Serializable |
|||
|
|||
// thanks to http://github.com/warifp/InstagramAutoPostImageUrl/blob/master/vendor/mgp25/instagram-php/src/Response/Model/ActionBadge.php |
|||
public enum ActionType { |
|||
enum class ActionType { |
|||
@SerializedName("raven_delivered") |
|||
DELIVERED, |
|||
|
|||
@SerializedName("raven_sent") |
|||
SENT, |
|||
|
|||
@SerializedName("raven_opened") |
|||
OPENED, |
|||
|
|||
@SerializedName("raven_screenshot") |
|||
SCREENSHOT, |
|||
|
|||
@SerializedName("raven_replayed") |
|||
REPLAYED, |
|||
|
|||
@SerializedName("raven_cannot_deliver") |
|||
CANNOT_DELIVER, |
|||
|
|||
@SerializedName("raven_sending") |
|||
SENDING, |
|||
|
|||
@SerializedName("raven_blocked") |
|||
BLOCKED, |
|||
|
|||
@SerializedName("raven_unknown") |
|||
UNKNOWN, |
|||
|
|||
@SerializedName("raven_suggested") |
|||
SUGGESTED, |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue