Browse Source
Convert some retrofit response classes to kotlin
renovate/org.robolectric-robolectric-4.x
Convert some retrofit response classes to kotlin
renovate/org.robolectric-robolectric-4.x
32 changed files with 443 additions and 1509 deletions
-
4app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java
-
14app/src/main/java/awais/instagrabber/fragments/PostViewV2Fragment.java
-
57app/src/main/java/awais/instagrabber/repositories/responses/AnimatedMediaFixedHeight.java
-
5app/src/main/java/awais/instagrabber/repositories/responses/AnimatedMediaFixedHeight.kt
-
29app/src/main/java/awais/instagrabber/repositories/responses/AnimatedMediaImages.java
-
5app/src/main/java/awais/instagrabber/repositories/responses/AnimatedMediaImages.kt
-
62app/src/main/java/awais/instagrabber/repositories/responses/Audio.java
-
11app/src/main/java/awais/instagrabber/repositories/responses/Audio.kt
-
22app/src/main/java/awais/instagrabber/repositories/responses/AymlResponse.java
-
14app/src/main/java/awais/instagrabber/repositories/responses/AymlResponse.kt
-
34app/src/main/java/awais/instagrabber/repositories/responses/AymlUser.java
-
15app/src/main/java/awais/instagrabber/repositories/responses/AymlUserList.java
-
88app/src/main/java/awais/instagrabber/repositories/responses/Caption.java
-
5app/src/main/java/awais/instagrabber/repositories/responses/Caption.kt
-
31app/src/main/java/awais/instagrabber/repositories/responses/FriendshipChangeResponse.java
-
3app/src/main/java/awais/instagrabber/repositories/responses/FriendshipChangeResponse.kt
-
79app/src/main/java/awais/instagrabber/repositories/responses/FriendshipListFetchResponse.java
-
27app/src/main/java/awais/instagrabber/repositories/responses/FriendshipListFetchResponse.kt
-
32app/src/main/java/awais/instagrabber/repositories/responses/FriendshipRestrictResponse.java
-
3app/src/main/java/awais/instagrabber/repositories/responses/FriendshipRestrictResponse.kt
-
121app/src/main/java/awais/instagrabber/repositories/responses/FriendshipStatus.java
-
16app/src/main/java/awais/instagrabber/repositories/responses/FriendshipStatus.kt
-
332app/src/main/java/awais/instagrabber/repositories/responses/Media.java
-
71app/src/main/java/awais/instagrabber/repositories/responses/Media.kt
-
306app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItem.java
-
74app/src/main/java/awais/instagrabber/repositories/responses/directmessages/DirectItem.kt
-
41app/src/main/java/awais/instagrabber/repositories/serializers/CaptionDeserializer.java
-
264app/src/main/java/awais/instagrabber/utils/DirectItemFactory.java
-
126app/src/main/java/awais/instagrabber/utils/DirectItemFactory.kt
-
22app/src/main/java/awais/instagrabber/utils/ResponseBodyUtils.java
-
16app/src/main/java/awais/instagrabber/viewmodels/PostViewV2ViewModel.java
-
3app/src/main/java/awais/instagrabber/webservices/RetrofitFactory.java
@ -1,57 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
public class AnimatedMediaFixedHeight implements Serializable { |
|
||||
private final int height; |
|
||||
private final int width; |
|
||||
private final String mp4; |
|
||||
private final String url; |
|
||||
private final String webp; |
|
||||
|
|
||||
public AnimatedMediaFixedHeight(final int height, final int width, final String mp4, final String url, final String webp) { |
|
||||
this.height = height; |
|
||||
this.width = width; |
|
||||
this.mp4 = mp4; |
|
||||
this.url = url; |
|
||||
this.webp = webp; |
|
||||
} |
|
||||
|
|
||||
public int getHeight() { |
|
||||
return height; |
|
||||
} |
|
||||
|
|
||||
public int getWidth() { |
|
||||
return width; |
|
||||
} |
|
||||
|
|
||||
public String getMp4() { |
|
||||
return mp4; |
|
||||
} |
|
||||
|
|
||||
public String getUrl() { |
|
||||
return url; |
|
||||
} |
|
||||
|
|
||||
public String getWebp() { |
|
||||
return webp; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final AnimatedMediaFixedHeight that = (AnimatedMediaFixedHeight) o; |
|
||||
return height == that.height && |
|
||||
width == that.width && |
|
||||
Objects.equals(mp4, that.mp4) && |
|
||||
Objects.equals(url, that.url) && |
|
||||
Objects.equals(webp, that.webp); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(height, width, mp4, url, webp); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,5 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class AnimatedMediaFixedHeight(val height: Int, val width: Int, val mp4: String?, val url: String?, val webp: String?) : Serializable |
@ -1,29 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
public class AnimatedMediaImages implements Serializable { |
|
||||
private final AnimatedMediaFixedHeight fixedHeight; |
|
||||
|
|
||||
public AnimatedMediaImages(final AnimatedMediaFixedHeight fixedHeight) { |
|
||||
this.fixedHeight = fixedHeight; |
|
||||
} |
|
||||
|
|
||||
public AnimatedMediaFixedHeight getFixedHeight() { |
|
||||
return fixedHeight; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final AnimatedMediaImages that = (AnimatedMediaImages) o; |
|
||||
return Objects.equals(fixedHeight, that.fixedHeight); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(fixedHeight); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,5 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class AnimatedMediaImages(val fixedHeight: AnimatedMediaFixedHeight?) : Serializable |
@ -1,62 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.util.List; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
public class Audio implements Serializable { |
|
||||
private final String audioSrc; |
|
||||
private final long duration; |
|
||||
private final List<Float> waveformData; |
|
||||
private final int waveformSamplingFrequencyHz; |
|
||||
private final long audioSrcExpirationTimestampUs; |
|
||||
|
|
||||
public Audio(final String audioSrc, |
|
||||
final long duration, |
|
||||
final List<Float> waveformData, |
|
||||
final int waveformSamplingFrequencyHz, |
|
||||
final long audioSrcExpirationTimestampUs) { |
|
||||
this.audioSrc = audioSrc; |
|
||||
this.duration = duration; |
|
||||
this.waveformData = waveformData; |
|
||||
this.waveformSamplingFrequencyHz = waveformSamplingFrequencyHz; |
|
||||
this.audioSrcExpirationTimestampUs = audioSrcExpirationTimestampUs; |
|
||||
} |
|
||||
|
|
||||
public String getAudioSrc() { |
|
||||
return audioSrc; |
|
||||
} |
|
||||
|
|
||||
public long getDuration() { |
|
||||
return duration; |
|
||||
} |
|
||||
|
|
||||
public List<Float> getWaveformData() { |
|
||||
return waveformData; |
|
||||
} |
|
||||
|
|
||||
public int getWaveformSamplingFrequencyHz() { |
|
||||
return waveformSamplingFrequencyHz; |
|
||||
} |
|
||||
|
|
||||
public long getAudioSrcExpirationTimestampUs() { |
|
||||
return audioSrcExpirationTimestampUs; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final Audio audio = (Audio) o; |
|
||||
return duration == audio.duration && |
|
||||
waveformSamplingFrequencyHz == audio.waveformSamplingFrequencyHz && |
|
||||
audioSrcExpirationTimestampUs == audio.audioSrcExpirationTimestampUs && |
|
||||
Objects.equals(audioSrc, audio.audioSrc) && |
|
||||
Objects.equals(waveformData, audio.waveformData); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(audioSrc, duration, waveformData, waveformSamplingFrequencyHz, audioSrcExpirationTimestampUs); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,11 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class Audio( |
||||
|
val audioSrc: String?, |
||||
|
val duration: Long, |
||||
|
val waveformData: List<Float>?, |
||||
|
val waveformSamplingFrequencyHz: Int, |
||||
|
val audioSrcExpirationTimestampUs: Long |
||||
|
) : Serializable |
@ -1,22 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
public class AymlResponse { |
|
||||
private final AymlUserList newSuggestedUsers; |
|
||||
private final AymlUserList suggestedUsers; |
|
||||
|
|
||||
public AymlResponse(final AymlUserList newSuggestedUsers, |
|
||||
final AymlUserList suggestedUsers) { |
|
||||
this.newSuggestedUsers = newSuggestedUsers; |
|
||||
this.suggestedUsers = suggestedUsers; |
|
||||
} |
|
||||
|
|
||||
public AymlUserList getNewSuggestedUsers() { |
|
||||
return newSuggestedUsers; |
|
||||
} |
|
||||
|
|
||||
public AymlUserList getSuggestedUsers() { |
|
||||
return suggestedUsers; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,14 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class AymlResponse(val newSuggestedUsers: AymlUserList?, val suggestedUsers: AymlUserList?) : Serializable |
||||
|
|
||||
|
data class AymlUser( |
||||
|
val user: User?, |
||||
|
val algorithm: String?, |
||||
|
val socialContext: String?, |
||||
|
val uuid: String? |
||||
|
) : Serializable |
||||
|
|
||||
|
data class AymlUserList(val suggestions: List<AymlUser>?) : Serializable |
@ -1,34 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
public class AymlUser { |
|
||||
private final User user; |
|
||||
private final String algorithm; |
|
||||
private final String socialContext; |
|
||||
private final String uuid; |
|
||||
|
|
||||
public AymlUser(final User user, |
|
||||
final String algorithm, |
|
||||
final String socialContext, |
|
||||
final String uuid) { |
|
||||
this.user = user; |
|
||||
this.algorithm = algorithm; |
|
||||
this.socialContext = socialContext; |
|
||||
this.uuid = uuid; |
|
||||
} |
|
||||
|
|
||||
public User getUser() { |
|
||||
return user; |
|
||||
} |
|
||||
|
|
||||
public String getAlgorithm() { |
|
||||
return algorithm; |
|
||||
} |
|
||||
|
|
||||
public String getSocialContext() { |
|
||||
return socialContext; |
|
||||
} |
|
||||
|
|
||||
public String getUuid() { |
|
||||
return uuid; |
|
||||
} |
|
||||
} |
|
@ -1,15 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
public class AymlUserList { |
|
||||
private final List<AymlUser> suggestions; |
|
||||
|
|
||||
public AymlUserList(final List<AymlUser> suggestions) { |
|
||||
this.suggestions = suggestions; |
|
||||
} |
|
||||
|
|
||||
public List<AymlUser> getSuggestions() { |
|
||||
return suggestions; |
|
||||
} |
|
||||
} |
|
@ -1,88 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import android.util.Log; |
|
||||
|
|
||||
import com.google.gson.Gson; |
|
||||
import com.google.gson.JsonDeserializationContext; |
|
||||
import com.google.gson.JsonDeserializer; |
|
||||
import com.google.gson.JsonElement; |
|
||||
import com.google.gson.JsonObject; |
|
||||
import com.google.gson.JsonParseException; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.lang.reflect.Type; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
public class Caption implements Serializable { |
|
||||
private long mPk; |
|
||||
private final long userId; |
|
||||
private String text; |
|
||||
|
|
||||
public Caption(final long userId, final String text) { |
|
||||
this.userId = userId; |
|
||||
this.text = text; |
|
||||
} |
|
||||
|
|
||||
public long getPk() { |
|
||||
return mPk; |
|
||||
} |
|
||||
|
|
||||
public void setPk(final long pk) { |
|
||||
this.mPk = pk; |
|
||||
} |
|
||||
|
|
||||
public long getUserId() { |
|
||||
return userId; |
|
||||
} |
|
||||
|
|
||||
public String getText() { |
|
||||
return text; |
|
||||
} |
|
||||
|
|
||||
public void setText(String text) { |
|
||||
this.text = text; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final Caption caption = (Caption) o; |
|
||||
return mPk == caption.mPk && |
|
||||
userId == caption.userId && |
|
||||
Objects.equals(text, caption.text); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(mPk, userId, text); |
|
||||
} |
|
||||
|
|
||||
public static class CaptionDeserializer implements JsonDeserializer<Caption> { |
|
||||
|
|
||||
private static final String TAG = CaptionDeserializer.class.getSimpleName(); |
|
||||
|
|
||||
@Override |
|
||||
public Caption deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { |
|
||||
final Caption caption = new Gson().fromJson(json, Caption.class); |
|
||||
final JsonObject jsonObject = json.getAsJsonObject(); |
|
||||
if (jsonObject.has("pk")) { |
|
||||
JsonElement elem = jsonObject.get("pk"); |
|
||||
if (elem != null && !elem.isJsonNull()) { |
|
||||
if (!elem.isJsonPrimitive()) return caption; |
|
||||
String pkString = elem.getAsString(); |
|
||||
if (pkString.contains("_")) { |
|
||||
pkString = pkString.substring(0, pkString.indexOf("_")); |
|
||||
} |
|
||||
try { |
|
||||
caption.setPk(Long.parseLong(pkString)); |
|
||||
} catch (NumberFormatException e) { |
|
||||
Log.e(TAG, "deserialize: ", e); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
return caption; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -0,0 +1,5 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class Caption(var pk: Long = 0, val userId: Long, var text: String) : Serializable |
@ -1,31 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import androidx.annotation.NonNull; |
|
||||
|
|
||||
public class FriendshipChangeResponse { |
|
||||
private final FriendshipStatus friendshipStatus; |
|
||||
private final String status; |
|
||||
|
|
||||
public FriendshipChangeResponse(final FriendshipStatus friendshipStatus, |
|
||||
final String status) { |
|
||||
this.friendshipStatus = friendshipStatus; |
|
||||
this.status = status; |
|
||||
} |
|
||||
|
|
||||
public FriendshipStatus getFriendshipStatus() { |
|
||||
return friendshipStatus; |
|
||||
} |
|
||||
|
|
||||
public String getStatus() { |
|
||||
return status; |
|
||||
} |
|
||||
|
|
||||
@NonNull |
|
||||
@Override |
|
||||
public String toString() { |
|
||||
return "FriendshipChangeResponse{" + |
|
||||
"friendshipStatus=" + friendshipStatus + |
|
||||
", status='" + status + '\'' + |
|
||||
'}'; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,3 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
data class FriendshipChangeResponse(val friendshipStatus: FriendshipStatus?, val status: String?) |
@ -1,79 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import androidx.annotation.NonNull; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
import awais.instagrabber.models.FollowModel; |
|
||||
import awais.instagrabber.utils.TextUtils; |
|
||||
|
|
||||
public class FriendshipListFetchResponse { |
|
||||
private String nextMaxId; |
|
||||
private String status; |
|
||||
private List<FollowModel> items; |
|
||||
|
|
||||
public FriendshipListFetchResponse(final String nextMaxId, |
|
||||
final String status, |
|
||||
final List<FollowModel> items) { |
|
||||
this.nextMaxId = nextMaxId; |
|
||||
this.status = status; |
|
||||
this.items = items; |
|
||||
} |
|
||||
|
|
||||
public boolean isMoreAvailable() { |
|
||||
return !TextUtils.isEmpty(nextMaxId); |
|
||||
} |
|
||||
|
|
||||
public String getNextMaxId() { |
|
||||
return nextMaxId; |
|
||||
} |
|
||||
|
|
||||
public FriendshipListFetchResponse setNextMaxId(final String nextMaxId) { |
|
||||
this.nextMaxId = nextMaxId; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
public String getStatus() { |
|
||||
return status; |
|
||||
} |
|
||||
|
|
||||
public FriendshipListFetchResponse setStatus(final String status) { |
|
||||
this.status = status; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
public List<FollowModel> getItems() { |
|
||||
return items; |
|
||||
} |
|
||||
|
|
||||
public FriendshipListFetchResponse setItems(final List<FollowModel> items) { |
|
||||
this.items = items; |
|
||||
return this; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final FriendshipListFetchResponse that = (FriendshipListFetchResponse) o; |
|
||||
return Objects.equals(nextMaxId, that.nextMaxId) && |
|
||||
Objects.equals(status, that.status) && |
|
||||
Objects.equals(items, that.items); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(nextMaxId, status, items); |
|
||||
} |
|
||||
|
|
||||
@NonNull |
|
||||
@Override |
|
||||
public String toString() { |
|
||||
return "FriendshipRepoListFetchResponse{" + |
|
||||
"nextMaxId='" + nextMaxId + '\'' + |
|
||||
", status='" + status + '\'' + |
|
||||
", items=" + items + |
|
||||
'}'; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,27 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import awais.instagrabber.models.FollowModel |
||||
|
|
||||
|
data class FriendshipListFetchResponse( |
||||
|
var nextMaxId: String?, |
||||
|
var status: String?, |
||||
|
var items: List<FollowModel>? |
||||
|
) { |
||||
|
val isMoreAvailable: Boolean |
||||
|
get() = !nextMaxId.isNullOrBlank() |
||||
|
|
||||
|
fun setNextMaxId(nextMaxId: String): FriendshipListFetchResponse { |
||||
|
this.nextMaxId = nextMaxId |
||||
|
return this |
||||
|
} |
||||
|
|
||||
|
fun setStatus(status: String): FriendshipListFetchResponse { |
||||
|
this.status = status |
||||
|
return this |
||||
|
} |
||||
|
|
||||
|
fun setItems(items: List<FollowModel>): FriendshipListFetchResponse { |
||||
|
this.items = items |
||||
|
return this |
||||
|
} |
||||
|
} |
@ -1,32 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import androidx.annotation.NonNull; |
|
||||
|
|
||||
import java.util.List; |
|
||||
|
|
||||
public class FriendshipRestrictResponse { |
|
||||
private final List<User> users; |
|
||||
private final String status; |
|
||||
|
|
||||
public FriendshipRestrictResponse(final List<User> users, final String status) { |
|
||||
this.users = users; |
|
||||
this.status = status; |
|
||||
} |
|
||||
|
|
||||
public List<User> getUsers() { |
|
||||
return users; |
|
||||
} |
|
||||
|
|
||||
public String getStatus() { |
|
||||
return status; |
|
||||
} |
|
||||
|
|
||||
@NonNull |
|
||||
@Override |
|
||||
public String toString() { |
|
||||
return "FriendshipRestrictResponse{" + |
|
||||
"users=" + users + |
|
||||
", status='" + status + '\'' + |
|
||||
'}'; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,3 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
data class FriendshipRestrictResponse(val users: List<User>?, val status: String?) |
@ -1,121 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import androidx.annotation.NonNull; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
public class FriendshipStatus implements Serializable { |
|
||||
private final boolean following; |
|
||||
private final boolean followedBy; |
|
||||
private final boolean blocking; |
|
||||
private final boolean muting; |
|
||||
private final boolean isPrivate; |
|
||||
private final boolean incomingRequest; |
|
||||
private final boolean outgoingRequest; |
|
||||
private final boolean isBestie; |
|
||||
private final boolean isRestricted; |
|
||||
private final boolean isMutingReel; |
|
||||
|
|
||||
public FriendshipStatus(final boolean following, |
|
||||
final boolean followedBy, |
|
||||
final boolean blocking, |
|
||||
final boolean muting, |
|
||||
final boolean isPrivate, |
|
||||
final boolean incomingRequest, |
|
||||
final boolean outgoingRequest, |
|
||||
final boolean isBestie, |
|
||||
final boolean isRestricted, |
|
||||
final boolean isMutingReel) { |
|
||||
this.following = following; |
|
||||
this.followedBy = followedBy; |
|
||||
this.blocking = blocking; |
|
||||
this.muting = muting; |
|
||||
this.isPrivate = isPrivate; |
|
||||
this.incomingRequest = incomingRequest; |
|
||||
this.outgoingRequest = outgoingRequest; |
|
||||
this.isBestie = isBestie; |
|
||||
this.isRestricted = isRestricted; |
|
||||
this.isMutingReel = isMutingReel; |
|
||||
} |
|
||||
|
|
||||
public boolean isFollowing() { |
|
||||
return following; |
|
||||
} |
|
||||
|
|
||||
public boolean isFollowedBy() { |
|
||||
return followedBy; |
|
||||
} |
|
||||
|
|
||||
public boolean isBlocking() { |
|
||||
return blocking; |
|
||||
} |
|
||||
|
|
||||
public boolean isMuting() { |
|
||||
return muting; |
|
||||
} |
|
||||
|
|
||||
public boolean isPrivate() { |
|
||||
return isPrivate; |
|
||||
} |
|
||||
|
|
||||
public boolean isIncomingRequest() { |
|
||||
return incomingRequest; |
|
||||
} |
|
||||
|
|
||||
public boolean isOutgoingRequest() { |
|
||||
return outgoingRequest; |
|
||||
} |
|
||||
|
|
||||
public boolean isBestie() { |
|
||||
return isBestie; |
|
||||
} |
|
||||
|
|
||||
public boolean isRestricted() { |
|
||||
return isRestricted; |
|
||||
} |
|
||||
|
|
||||
public boolean isMutingReel() { |
|
||||
return isMutingReel; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final FriendshipStatus that = (FriendshipStatus) o; |
|
||||
return following == that.following && |
|
||||
followedBy == that.followedBy && |
|
||||
blocking == that.blocking && |
|
||||
muting == that.muting && |
|
||||
isPrivate == that.isPrivate && |
|
||||
incomingRequest == that.incomingRequest && |
|
||||
outgoingRequest == that.outgoingRequest && |
|
||||
isBestie == that.isBestie && |
|
||||
isRestricted == that.isRestricted && |
|
||||
isMutingReel == that.isMutingReel; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(following, followedBy, blocking, muting, isPrivate, incomingRequest, outgoingRequest, isBestie, isRestricted, |
|
||||
isMutingReel); |
|
||||
} |
|
||||
|
|
||||
@NonNull |
|
||||
@Override |
|
||||
public String toString() { |
|
||||
return "FriendshipStatus{" + |
|
||||
"following=" + following + |
|
||||
", followedBy=" + followedBy + |
|
||||
", blocking=" + blocking + |
|
||||
", muting=" + muting + |
|
||||
", isPrivate=" + isPrivate + |
|
||||
", incomingRequest=" + incomingRequest + |
|
||||
", outgoingRequest=" + outgoingRequest + |
|
||||
", isBestie=" + isBestie + |
|
||||
", isRestricted=" + isRestricted + |
|
||||
", isMutingReel=" + isMutingReel + |
|
||||
'}'; |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,16 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import java.io.Serializable |
||||
|
|
||||
|
data class FriendshipStatus( |
||||
|
val isFollowing: Boolean, |
||||
|
val isFollowedBy: Boolean, |
||||
|
val isBlocking: Boolean, |
||||
|
val isMuting: Boolean, |
||||
|
val isPrivate: Boolean, |
||||
|
val isIncomingRequest: Boolean, |
||||
|
val isOutgoingRequest: Boolean, |
||||
|
val isBestie: Boolean, |
||||
|
val isRestricted: Boolean, |
||||
|
val isMutingReel: Boolean |
||||
|
) : Serializable |
@ -1,332 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses; |
|
||||
|
|
||||
import androidx.annotation.Nullable; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.util.Date; |
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
import awais.instagrabber.models.enums.MediaItemType; |
|
||||
import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator; |
|
||||
import awais.instagrabber.utils.Utils; |
|
||||
|
|
||||
public class Media implements Serializable { |
|
||||
private final String pk; |
|
||||
private final String id; |
|
||||
private final String code; |
|
||||
private final long takenAt; |
|
||||
private final User user; |
|
||||
private final MediaItemType mediaType; |
|
||||
private final boolean canViewerReshare; |
|
||||
private final boolean commentLikesEnabled; |
|
||||
private final boolean commentsDisabled; |
|
||||
private final long nextMaxId; |
|
||||
private final long commentCount; |
|
||||
private final ImageVersions2 imageVersions2; |
|
||||
private final int originalWidth; |
|
||||
private final int originalHeight; |
|
||||
private long likeCount; |
|
||||
private boolean hasLiked; |
|
||||
private final boolean isReelMedia; |
|
||||
private final List<VideoVersion> videoVersions; |
|
||||
private final boolean hasAudio; |
|
||||
private final double videoDuration; |
|
||||
private final long viewCount; |
|
||||
private Caption caption; |
|
||||
private final boolean canViewerSave; |
|
||||
private final Audio audio; |
|
||||
private final String title; |
|
||||
private final Location location; |
|
||||
private final Usertags usertags; |
|
||||
private final List<Media> carouselMedia; |
|
||||
private boolean isSidecarChild; |
|
||||
private boolean hasViewerSaved; |
|
||||
private final Map<String, Object> injected; |
|
||||
private final EndOfFeedDemarcator endOfFeedDemarcator; |
|
||||
|
|
||||
private String dateString; |
|
||||
|
|
||||
public Media(final String pk, |
|
||||
final String id, |
|
||||
final String code, |
|
||||
final long takenAt, |
|
||||
final User user, |
|
||||
final boolean canViewerReshare, |
|
||||
final ImageVersions2 imageVersions2, |
|
||||
final int originalWidth, |
|
||||
final int originalHeight, |
|
||||
final MediaItemType mediaType, |
|
||||
final boolean commentLikesEnabled, |
|
||||
final boolean commentsDisabled, |
|
||||
final long nextMaxId, |
|
||||
final long commentCount, |
|
||||
final long likeCount, |
|
||||
final boolean hasLiked, |
|
||||
final boolean isReelMedia, |
|
||||
final List<VideoVersion> videoVersions, |
|
||||
final boolean hasAudio, |
|
||||
final double videoDuration, |
|
||||
final long viewCount, |
|
||||
final Caption caption, |
|
||||
final boolean canViewerSave, |
|
||||
final Audio audio, |
|
||||
final String title, |
|
||||
final List<Media> carouselMedia, |
|
||||
final Location location, |
|
||||
final Usertags usertags, |
|
||||
final boolean isSidecarChild, |
|
||||
final boolean hasViewerSaved, |
|
||||
final Map<String, Object> injected, |
|
||||
final EndOfFeedDemarcator endOfFeedDemarcator) { |
|
||||
this.pk = pk; |
|
||||
this.id = id; |
|
||||
this.code = code; |
|
||||
this.takenAt = takenAt; |
|
||||
this.user = user; |
|
||||
this.canViewerReshare = canViewerReshare; |
|
||||
this.imageVersions2 = imageVersions2; |
|
||||
this.originalWidth = originalWidth; |
|
||||
this.originalHeight = originalHeight; |
|
||||
this.mediaType = mediaType; |
|
||||
this.commentLikesEnabled = commentLikesEnabled; |
|
||||
this.commentsDisabled = commentsDisabled; |
|
||||
this.nextMaxId = nextMaxId; |
|
||||
this.commentCount = commentCount; |
|
||||
this.likeCount = likeCount; |
|
||||
this.hasLiked = hasLiked; |
|
||||
this.isReelMedia = isReelMedia; |
|
||||
this.videoVersions = videoVersions; |
|
||||
this.hasAudio = hasAudio; |
|
||||
this.videoDuration = videoDuration; |
|
||||
this.viewCount = viewCount; |
|
||||
this.caption = caption; |
|
||||
this.canViewerSave = canViewerSave; |
|
||||
this.audio = audio; |
|
||||
this.title = title; |
|
||||
this.carouselMedia = carouselMedia; |
|
||||
this.location = location; |
|
||||
this.usertags = usertags; |
|
||||
this.isSidecarChild = isSidecarChild; |
|
||||
this.hasViewerSaved = hasViewerSaved; |
|
||||
this.injected = injected; |
|
||||
this.endOfFeedDemarcator = endOfFeedDemarcator; |
|
||||
} |
|
||||
|
|
||||
public String getPk() { |
|
||||
return pk; |
|
||||
} |
|
||||
|
|
||||
public String getId() { |
|
||||
return id; |
|
||||
} |
|
||||
|
|
||||
public String getCode() { |
|
||||
return code; |
|
||||
} |
|
||||
|
|
||||
public long getTakenAt() { |
|
||||
return takenAt; |
|
||||
} |
|
||||
|
|
||||
@Nullable |
|
||||
public User getUser() { |
|
||||
return user; |
|
||||
} |
|
||||
|
|
||||
public boolean canViewerReshare() { |
|
||||
return canViewerReshare; |
|
||||
} |
|
||||
|
|
||||
public ImageVersions2 getImageVersions2() { |
|
||||
return imageVersions2; |
|
||||
} |
|
||||
|
|
||||
public int getOriginalWidth() { |
|
||||
return originalWidth; |
|
||||
} |
|
||||
|
|
||||
public int getOriginalHeight() { |
|
||||
return originalHeight; |
|
||||
} |
|
||||
|
|
||||
public MediaItemType getMediaType() { |
|
||||
return mediaType; |
|
||||
} |
|
||||
|
|
||||
public boolean isReelMedia() { |
|
||||
return isReelMedia; |
|
||||
} |
|
||||
|
|
||||
public List<VideoVersion> getVideoVersions() { |
|
||||
return videoVersions; |
|
||||
} |
|
||||
|
|
||||
public boolean isHasAudio() { |
|
||||
return hasAudio; |
|
||||
} |
|
||||
|
|
||||
public Caption getCaption() { |
|
||||
return caption; |
|
||||
} |
|
||||
|
|
||||
public Audio getAudio() { |
|
||||
return audio; |
|
||||
} |
|
||||
|
|
||||
public String getTitle() { |
|
||||
return title; |
|
||||
} |
|
||||
|
|
||||
public List<Media> getCarouselMedia() { |
|
||||
return carouselMedia; |
|
||||
} |
|
||||
|
|
||||
public boolean isCommentLikesEnabled() { |
|
||||
return commentLikesEnabled; |
|
||||
} |
|
||||
|
|
||||
public boolean isCommentsDisabled() { |
|
||||
return commentsDisabled; |
|
||||
} |
|
||||
|
|
||||
public long getNextMaxId() { |
|
||||
return nextMaxId; |
|
||||
} |
|
||||
|
|
||||
public long getCommentCount() { |
|
||||
return commentCount; |
|
||||
} |
|
||||
|
|
||||
public long getLikeCount() { |
|
||||
return likeCount; |
|
||||
} |
|
||||
|
|
||||
public boolean hasLiked() { |
|
||||
return hasLiked; |
|
||||
} |
|
||||
|
|
||||
public double getVideoDuration() { |
|
||||
return videoDuration; |
|
||||
} |
|
||||
|
|
||||
public long getViewCount() { |
|
||||
return viewCount; |
|
||||
} |
|
||||
|
|
||||
public boolean canViewerSave() { |
|
||||
return canViewerSave; |
|
||||
} |
|
||||
|
|
||||
public Location getLocation() { |
|
||||
return location; |
|
||||
} |
|
||||
|
|
||||
public Usertags getUsertags() { |
|
||||
return usertags; |
|
||||
} |
|
||||
|
|
||||
public void setIsSidecarChild(boolean isSidecarChild) { |
|
||||
this.isSidecarChild = isSidecarChild; |
|
||||
} |
|
||||
|
|
||||
public boolean isSidecarChild() { |
|
||||
return isSidecarChild; |
|
||||
} |
|
||||
|
|
||||
public boolean hasViewerSaved() { |
|
||||
return hasViewerSaved; |
|
||||
} |
|
||||
|
|
||||
public boolean isInjected() { |
|
||||
return injected != null; |
|
||||
} |
|
||||
|
|
||||
@Nullable |
|
||||
public String getDate() { |
|
||||
if (takenAt <= 0) { |
|
||||
return null; |
|
||||
} |
|
||||
if (dateString == null) { |
|
||||
dateString = Utils.datetimeParser.format(new Date(takenAt * 1000L)); |
|
||||
} |
|
||||
return dateString; |
|
||||
} |
|
||||
|
|
||||
public EndOfFeedDemarcator getEndOfFeedDemarcator() { |
|
||||
return endOfFeedDemarcator; |
|
||||
} |
|
||||
|
|
||||
public void setHasLiked(final boolean liked) { |
|
||||
this.hasLiked = liked; |
|
||||
} |
|
||||
|
|
||||
public void setLikeCount(final long likeCount) { |
|
||||
this.likeCount = likeCount; |
|
||||
} |
|
||||
|
|
||||
public void setHasViewerSaved(final boolean hasViewerSaved) { |
|
||||
this.hasViewerSaved = hasViewerSaved; |
|
||||
} |
|
||||
|
|
||||
public void setPostCaption(final String caption) { |
|
||||
Caption caption1 = getCaption(); |
|
||||
if (caption1 == null) { |
|
||||
final User user = getUser(); |
|
||||
if (user == null) return; |
|
||||
caption1 = new Caption(user.getPk(), caption); |
|
||||
this.caption = caption1; |
|
||||
return; |
|
||||
} |
|
||||
caption1.setText(caption); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public boolean equals(final Object o) { |
|
||||
if (this == o) return true; |
|
||||
if (o == null || getClass() != o.getClass()) return false; |
|
||||
final Media media = (Media) o; |
|
||||
return takenAt == media.takenAt && |
|
||||
canViewerReshare == media.canViewerReshare && |
|
||||
commentLikesEnabled == media.commentLikesEnabled && |
|
||||
commentsDisabled == media.commentsDisabled && |
|
||||
nextMaxId == media.nextMaxId && |
|
||||
commentCount == media.commentCount && |
|
||||
originalWidth == media.originalWidth && |
|
||||
originalHeight == media.originalHeight && |
|
||||
likeCount == media.likeCount && |
|
||||
hasLiked == media.hasLiked && |
|
||||
isReelMedia == media.isReelMedia && |
|
||||
hasAudio == media.hasAudio && |
|
||||
Double.compare(media.videoDuration, videoDuration) == 0 && |
|
||||
viewCount == media.viewCount && |
|
||||
canViewerSave == media.canViewerSave && |
|
||||
isSidecarChild == media.isSidecarChild && |
|
||||
hasViewerSaved == media.hasViewerSaved && |
|
||||
Objects.equals(pk, media.pk) && |
|
||||
Objects.equals(id, media.id) && |
|
||||
Objects.equals(code, media.code) && |
|
||||
Objects.equals(user, media.user) && |
|
||||
mediaType == media.mediaType && |
|
||||
Objects.equals(imageVersions2, media.imageVersions2) && |
|
||||
Objects.equals(videoVersions, media.videoVersions) && |
|
||||
Objects.equals(caption, media.caption) && |
|
||||
Objects.equals(audio, media.audio) && |
|
||||
Objects.equals(title, media.title) && |
|
||||
Objects.equals(location, media.location) && |
|
||||
Objects.equals(usertags, media.usertags) && |
|
||||
Objects.equals(carouselMedia, media.carouselMedia) && |
|
||||
Objects.equals(injected, media.injected) && |
|
||||
Objects.equals(endOfFeedDemarcator, media.endOfFeedDemarcator) && |
|
||||
Objects.equals(dateString, media.dateString); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects.hash(pk, id, code, takenAt, user, mediaType, canViewerReshare, commentLikesEnabled, commentsDisabled, nextMaxId, commentCount, |
|
||||
imageVersions2, originalWidth, originalHeight, likeCount, hasLiked, isReelMedia, videoVersions, hasAudio, videoDuration, |
|
||||
viewCount, caption, canViewerSave, audio, title, location, usertags, carouselMedia, isSidecarChild, hasViewerSaved, |
|
||||
injected, endOfFeedDemarcator, dateString); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,71 @@ |
|||||
|
package awais.instagrabber.repositories.responses |
||||
|
|
||||
|
import awais.instagrabber.models.enums.MediaItemType |
||||
|
import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator |
||||
|
import awais.instagrabber.utils.Utils |
||||
|
import java.io.Serializable |
||||
|
import java.util.* |
||||
|
|
||||
|
data class Media( |
||||
|
val pk: String? = null, |
||||
|
val id: String? = null, |
||||
|
val code: String? = null, |
||||
|
val takenAt: Long = -1, |
||||
|
val user: User? = null, |
||||
|
val canViewerReshare: Boolean = false, |
||||
|
val imageVersions2: ImageVersions2? = null, |
||||
|
val originalWidth: Int = 0, |
||||
|
val originalHeight: Int = 0, |
||||
|
val mediaType: MediaItemType? = null, |
||||
|
val commentLikesEnabled: Boolean = false, |
||||
|
val commentsDisabled: Boolean = false, |
||||
|
val nextMaxId: Long = -1, |
||||
|
val commentCount: Long = 0, |
||||
|
var likeCount: Long = 0, |
||||
|
var hasLiked: Boolean = false, |
||||
|
val isReelMedia: Boolean = false, |
||||
|
val videoVersions: List<VideoVersion>? = null, |
||||
|
val hasAudio: Boolean = false, |
||||
|
val videoDuration: Double = 0.0, |
||||
|
val viewCount: Long = 0, |
||||
|
var caption: Caption? = null, |
||||
|
val canViewerSave: Boolean = false, |
||||
|
val audio: Audio? = null, |
||||
|
val title: String? = null, |
||||
|
val carouselMedia: List<Media>? = null, |
||||
|
val location: Location? = null, |
||||
|
val usertags: Usertags? = null, |
||||
|
var isSidecarChild: Boolean = false, |
||||
|
var hasViewerSaved: Boolean = false, |
||||
|
private val injected: Map<String, Any>? = null, |
||||
|
val endOfFeedDemarcator: EndOfFeedDemarcator? = null |
||||
|
) : Serializable { |
||||
|
private var dateString: String? = null |
||||
|
|
||||
|
fun isInjected(): Boolean { |
||||
|
return injected != null |
||||
|
} |
||||
|
|
||||
|
// TODO use extension once all usages are converted to kotlin |
||||
|
// val date: String by lazy { |
||||
|
// if (takenAt <= 0) "" else Utils.datetimeParser.format(Date(takenAt * 1000L)) |
||||
|
// } |
||||
|
val date: String |
||||
|
get() { |
||||
|
if (takenAt <= 0) return "" |
||||
|
if (dateString != null) return dateString ?: "" |
||||
|
dateString = Utils.datetimeParser.format(Date(takenAt * 1000L)) |
||||
|
return dateString ?: "" |
||||
|
} |
||||
|
|
||||
|
fun setPostCaption(caption: String?) { |
||||
|
var caption1: Caption? = this.caption |
||||
|
if (caption1 == null) { |
||||
|
user ?: return |
||||
|
caption1 = Caption(userId = user.pk, text = caption ?: "") |
||||
|
this.caption = caption1 |
||||
|
return |
||||
|
} |
||||
|
caption1.text = caption ?: "" |
||||
|
} |
||||
|
} |
@ -1,306 +0,0 @@ |
|||||
package awais.instagrabber.repositories.responses.directmessages; |
|
||||
|
|
||||
import androidx.annotation.NonNull; |
|
||||
|
|
||||
import java.io.Serializable; |
|
||||
import java.time.Instant; |
|
||||
import java.time.LocalDateTime; |
|
||||
import java.time.ZoneId; |
|
||||
import java.util.Date; |
|
||||
import java.util.List; |
|
||||
import java.util.Objects; |
|
||||
|
|
||||
import awais.instagrabber.models.enums.DirectItemType; |
|
||||
import awais.instagrabber.repositories.responses.Location; |
|
||||
import awais.instagrabber.repositories.responses.Media; |
|
||||
import awais.instagrabber.repositories.responses.User; |
|
||||
|
|
||||
public class DirectItem implements Cloneable, Serializable { |
|
||||
private String itemId; |
|
||||
private final long userId; |
|
||||
private long timestamp; |
|
||||
private final DirectItemType itemType; |
|
||||
private final String text; |
|
||||
private final String like; |
|
||||
private final DirectItemLink link; |
|
||||
private final String clientContext; |
|
||||
private final DirectItemReelShare reelShare; |
|
||||
private final DirectItemStoryShare storyShare; |
|
||||
private final Media mediaShare; |
|
||||
private final User profile; |
|
||||
private final DirectItemPlaceholder placeholder; |
|
||||
private final Media media; |
|
||||
private final List<Media> previewMedias; |
|
||||
private final DirectItemActionLog actionLog; |
|
||||
private final DirectItemVideoCallEvent videoCallEvent; |
|
||||
private final DirectItemClip clip; |
|
||||
private final DirectItemFelixShare felixShare; |
|
||||
private final DirectItemVisualMedia visualMedia; |
|
||||
private final DirectItemAnimatedMedia animatedMedia; |
|
||||
private DirectItemReactions reactions; |
|
||||
private final DirectItem repliedToMessage; |
|
||||
private final DirectItemVoiceMedia voiceMedia; |
|
||||
private final Location location; |
|
||||
private final DirectItemXma xma; |
|
||||
private final int hideInThread; |
|
||||
private Date date; |
|
||||
private boolean isPending; |
|
||||
private final boolean showForwardAttribution; |
|
||||
private LocalDateTime localDateTime; |
|
||||
|
|
||||
public DirectItem(final String itemId, |
|
||||
final long userId, |
|
||||
final long timestamp, |
|
||||
final DirectItemType itemType, |
|
||||
final String text, |
|
||||
final String like, |
|
||||
final DirectItemLink link, |
|
||||
final String clientContext, |
|
||||
final DirectItemReelShare reelShare, |
|
||||
final DirectItemStoryShare storyShare, |
|
||||
final Media mediaShare, |
|
||||
final User profile, |
|
||||
final DirectItemPlaceholder placeholder, |
|
||||
final Media media, |
|
||||
final List<Media> previewMedias, |
|
||||
final DirectItemActionLog actionLog, |
|
||||
final DirectItemVideoCallEvent videoCallEvent, |
|
||||
final DirectItemClip clip, |
|
||||
final DirectItemFelixShare felixShare, |
|
||||
final DirectItemVisualMedia visualMedia, |
|
||||
final DirectItemAnimatedMedia animatedMedia, |
|
||||
final DirectItemReactions reactions, |
|
||||
final DirectItem repliedToMessage, |
|
||||
final DirectItemVoiceMedia voiceMedia, |
|
||||
final Location location, |
|
||||
final DirectItemXma xma, |
|
||||
final int hideInThread, |
|
||||
final boolean showForwardAttribution) { |
|
||||
this.itemId = itemId; |
|
||||
this.userId = userId; |
|
||||
this.timestamp = timestamp; |
|
||||
this.itemType = itemType; |
|
||||
this.text = text; |
|
||||
this.like = like; |
|
||||
this.link = link; |
|
||||
this.clientContext = clientContext; |
|
||||
this.reelShare = reelShare; |
|
||||
this.storyShare = storyShare; |
|
||||
this.mediaShare = mediaShare; |
|
||||
this.profile = profile; |
|
||||
this.placeholder = placeholder; |
|
||||
this.media = media; |
|
||||
this.previewMedias = previewMedias; |
|
||||
this.actionLog = actionLog; |
|
||||
this.videoCallEvent = videoCallEvent; |
|
||||
this.clip = clip; |
|
||||
this.felixShare = felixShare; |
|
||||
this.visualMedia = visualMedia; |
|
||||
this.animatedMedia = animatedMedia; |
|
||||
this.reactions = reactions; |
|
||||
this.repliedToMessage = repliedToMessage; |
|
||||
this.voiceMedia = voiceMedia; |
|
||||
this.location = location; |
|
||||
this.xma = xma; |
|
||||
this.hideInThread = hideInThread; |
|
||||
this.showForwardAttribution = showForwardAttribution; |
|
||||
} |
|
||||
|
|
||||
public String getItemId() { |
|
||||
return itemId; |
|
||||
} |
|
||||
|
|
||||
public long getUserId() { |
|
||||
return userId; |
|
||||
} |
|
||||
|
|
||||
public long getTimestamp() { |
|
||||
return timestamp; |
|
||||
} |
|
||||
|
|
||||
public void setTimestamp(final long timestamp) { |
|
||||
this.timestamp = timestamp; |
|
||||
this.date = null; |
|
||||
} |
|
||||
|
|
||||
public DirectItemType getItemType() { |
|
||||
return itemType; |
|
||||
} |
|
||||
|
|
||||
public String getText() { |
|
||||
return text; |
|
||||
} |
|
||||
|
|
||||
public DirectItemLink getLink() { |
|
||||
return link; |
|
||||
} |
|
||||
|
|
||||
public String getClientContext() { |
|
||||
return clientContext; |
|
||||
} |
|
||||
|
|
||||
public DirectItemReelShare getReelShare() { |
|
||||
return reelShare; |
|
||||
} |
|
||||
|
|
||||
public User getProfile() { |
|
||||
return profile; |
|
||||
} |
|
||||
|
|
||||
public DirectItemPlaceholder getPlaceholder() { |
|
||||
return placeholder; |
|
||||
} |
|
||||
|
|
||||
public Media getMediaShare() { |
|
||||
return mediaShare; |
|
||||
} |
|
||||
|
|
||||
public String getLike() { |
|
||||
return like; |
|
||||
} |
|
||||
|
|
||||
public Media getMedia() { |
|
||||
return media; |
|
||||
} |
|
||||
|
|
||||
public List<Media> getPreviewMedias() { |
|
||||
return previewMedias; |
|
||||
} |
|
||||
|
|
||||
public DirectItemStoryShare getStoryShare() { |
|
||||
return storyShare; |
|
||||
} |
|
||||
|
|
||||
public DirectItemActionLog getActionLog() { |
|
||||
return actionLog; |
|
||||
} |
|
||||
|
|
||||
public DirectItemVideoCallEvent getVideoCallEvent() { |
|
||||
return videoCallEvent; |
|
||||
} |
|
||||
|
|
||||
public DirectItemClip getClip() { |
|
||||
return clip; |
|
||||
} |
|
||||
|
|
||||
public DirectItemFelixShare getFelixShare() { |
|
||||
return felixShare; |
|
||||
} |
|
||||
|
|
||||
public DirectItemVisualMedia getVisualMedia() { |
|
||||
return visualMedia; |
|
||||
} |
|
||||
|
|
||||
public DirectItemAnimatedMedia getAnimatedMedia() { |
|
||||
return animatedMedia; |
|
||||
} |
|
||||
|
|
||||
public DirectItemReactions getReactions() { |
|
||||
return reactions; |
|
||||
} |
|
||||
|
|
||||
public DirectItem getRepliedToMessage() { |
|
||||
return repliedToMessage; |
|
||||
} |
|
||||
|
|
||||
public DirectItemVoiceMedia getVoiceMedia() { |
|
||||
return voiceMedia; |
|
||||
} |
|
||||
|
|
||||
public Location getLocation() { |
|
||||
return location; |
|
||||
} |
|
||||
|
|
||||
public DirectItemXma getXma() { |
|
||||
return xma; |
|
||||
} |
|
||||
|
|
||||
public int getHideInThread() { |
|
||||
return hideInThread; |
|
||||
} |
|
||||
|
|
||||
public Date getDate() { |
|
||||
if (date == null) { |
|
||||
date = new Date(timestamp / 1000); |
|
||||
} |
|
||||
return date; |
|
||||
} |
|
||||
|
|
||||
public LocalDateTime getLocalDateTime() { |
|
||||
if (localDateTime == null) { |
|
||||
localDateTime = Instant.ofEpochMilli(timestamp / 1000).atZone(ZoneId.systemDefault()).toLocalDateTime(); |
|
||||
} |
|
||||
return localDateTime; |
|
||||
} |
|
||||
|
|
||||
public void setItemId(final String itemId) { |
|
||||
this.itemId = itemId; |
|
||||
} |
|
||||
|
|
||||
public boolean isPending() { |
|
||||
return isPending; |
|
||||
} |
|
||||
|
|
||||
public void setPending(final boolean pending) { |
|
||||
isPending = pending; |
|
||||
} |
|
||||
|
|
||||
public void setReactions(final DirectItemReactions reactions) { |
|
||||
this.reactions = reactions; |
|
||||
} |
|
||||
|
|
||||
public boolean showForwardAttribution() { |
|
||||
return showForwardAttribution; |
|
||||
} |
|
||||
|
|
||||
@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 DirectItem that = (DirectItem) o; |
|
||||
return userId == that.userId && |
|
||||
timestamp == that.timestamp && |
|
||||
hideInThread == that.hideInThread && |
|
||||
isPending == that.isPending && |
|
||||
showForwardAttribution == that.showForwardAttribution && |
|
||||
Objects.equals(itemId, that.itemId) && |
|
||||
itemType == that.itemType && |
|
||||
Objects.equals(text, that.text) && |
|
||||
Objects.equals(like, that.like) && |
|
||||
Objects.equals(link, that.link) && |
|
||||
Objects.equals(clientContext, that.clientContext) && |
|
||||
Objects.equals(reelShare, that.reelShare) && |
|
||||
Objects.equals(storyShare, that.storyShare) && |
|
||||
Objects.equals(mediaShare, that.mediaShare) && |
|
||||
Objects.equals(profile, that.profile) && |
|
||||
Objects.equals(placeholder, that.placeholder) && |
|
||||
Objects.equals(media, that.media) && |
|
||||
Objects.equals(previewMedias, that.previewMedias) && |
|
||||
Objects.equals(actionLog, that.actionLog) && |
|
||||
Objects.equals(videoCallEvent, that.videoCallEvent) && |
|
||||
Objects.equals(clip, that.clip) && |
|
||||
Objects.equals(felixShare, that.felixShare) && |
|
||||
Objects.equals(visualMedia, that.visualMedia) && |
|
||||
Objects.equals(animatedMedia, that.animatedMedia) && |
|
||||
Objects.equals(reactions, that.reactions) && |
|
||||
Objects.equals(repliedToMessage, that.repliedToMessage) && |
|
||||
Objects.equals(voiceMedia, that.voiceMedia) && |
|
||||
Objects.equals(location, that.location) && |
|
||||
Objects.equals(xma, that.xma) && |
|
||||
Objects.equals(date, that.date); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public int hashCode() { |
|
||||
return Objects |
|
||||
.hash(itemId, userId, timestamp, itemType, text, like, link, clientContext, reelShare, storyShare, mediaShare, profile, placeholder, |
|
||||
media, previewMedias, actionLog, videoCallEvent, clip, felixShare, visualMedia, animatedMedia, reactions, repliedToMessage, |
|
||||
voiceMedia, location, xma, hideInThread, date, isPending, showForwardAttribution); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,74 @@ |
|||||
|
package awais.instagrabber.repositories.responses.directmessages |
||||
|
|
||||
|
import awais.instagrabber.models.enums.DirectItemType |
||||
|
import awais.instagrabber.repositories.responses.Location |
||||
|
import awais.instagrabber.repositories.responses.Media |
||||
|
import awais.instagrabber.repositories.responses.User |
||||
|
import java.io.Serializable |
||||
|
import java.time.Instant |
||||
|
import java.time.LocalDateTime |
||||
|
import java.time.ZoneId |
||||
|
import java.util.* |
||||
|
|
||||
|
data class DirectItem( |
||||
|
var itemId: String? = null, |
||||
|
val userId: Long = 0, |
||||
|
private var timestamp: Long = 0, |
||||
|
val itemType: DirectItemType? = null, |
||||
|
val text: String? = null, |
||||
|
val like: String? = null, |
||||
|
val link: DirectItemLink? = null, |
||||
|
val clientContext: String? = null, |
||||
|
val reelShare: DirectItemReelShare? = null, |
||||
|
val storyShare: DirectItemStoryShare? = null, |
||||
|
val mediaShare: Media? = null, |
||||
|
val profile: User? = null, |
||||
|
val placeholder: DirectItemPlaceholder? = null, |
||||
|
val media: Media? = null, |
||||
|
val previewMedias: List<Media>? = null, |
||||
|
val actionLog: DirectItemActionLog? = null, |
||||
|
val videoCallEvent: DirectItemVideoCallEvent? = null, |
||||
|
val clip: DirectItemClip? = null, |
||||
|
val felixShare: DirectItemFelixShare? = null, |
||||
|
val visualMedia: DirectItemVisualMedia? = null, |
||||
|
val animatedMedia: DirectItemAnimatedMedia? = null, |
||||
|
var reactions: DirectItemReactions? = null, |
||||
|
val repliedToMessage: DirectItem? = null, |
||||
|
val voiceMedia: DirectItemVoiceMedia? = null, |
||||
|
val location: Location? = null, |
||||
|
val xma: DirectItemXma? = null, |
||||
|
val hideInThread: Int? = 0, |
||||
|
val showForwardAttribution: Boolean = false |
||||
|
) : Cloneable, Serializable { |
||||
|
private var date: Date? = null |
||||
|
var isPending = false |
||||
|
var localDateTime: LocalDateTime? = null |
||||
|
get() { |
||||
|
if (field == null) { |
||||
|
field = Instant.ofEpochMilli(timestamp / 1000).atZone(ZoneId.systemDefault()).toLocalDateTime() |
||||
|
} |
||||
|
return field |
||||
|
} |
||||
|
private set |
||||
|
|
||||
|
fun getTimestamp(): Long { |
||||
|
return timestamp |
||||
|
} |
||||
|
|
||||
|
fun setTimestamp(timestamp: Long) { |
||||
|
this.timestamp = timestamp |
||||
|
date = null |
||||
|
} |
||||
|
|
||||
|
fun getDate(): Date? { |
||||
|
if (date == null) { |
||||
|
date = Date(timestamp / 1000) |
||||
|
} |
||||
|
return date |
||||
|
} |
||||
|
|
||||
|
@Throws(CloneNotSupportedException::class) |
||||
|
public override fun clone(): Any { |
||||
|
return super.clone() |
||||
|
} |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
package awais.instagrabber.repositories.serializers; |
||||
|
|
||||
|
import android.util.Log; |
||||
|
|
||||
|
import com.google.gson.Gson; |
||||
|
import com.google.gson.JsonDeserializationContext; |
||||
|
import com.google.gson.JsonDeserializer; |
||||
|
import com.google.gson.JsonElement; |
||||
|
import com.google.gson.JsonObject; |
||||
|
import com.google.gson.JsonParseException; |
||||
|
|
||||
|
import java.lang.reflect.Type; |
||||
|
|
||||
|
import awais.instagrabber.repositories.responses.Caption; |
||||
|
|
||||
|
public class CaptionDeserializer implements JsonDeserializer<Caption> { |
||||
|
|
||||
|
private static final String TAG = CaptionDeserializer.class.getSimpleName(); |
||||
|
|
||||
|
@Override |
||||
|
public Caption deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { |
||||
|
final Caption caption = new Gson().fromJson(json, Caption.class); |
||||
|
final JsonObject jsonObject = json.getAsJsonObject(); |
||||
|
if (jsonObject.has("pk")) { |
||||
|
JsonElement elem = jsonObject.get("pk"); |
||||
|
if (elem != null && !elem.isJsonNull()) { |
||||
|
if (!elem.isJsonPrimitive()) return caption; |
||||
|
String pkString = elem.getAsString(); |
||||
|
if (pkString.contains("_")) { |
||||
|
pkString = pkString.substring(0, pkString.indexOf("_")); |
||||
|
} |
||||
|
try { |
||||
|
caption.setPk(Long.parseLong(pkString)); |
||||
|
} catch (NumberFormatException e) { |
||||
|
Log.e(TAG, "deserialize: ", e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return caption; |
||||
|
} |
||||
|
} |
@ -1,264 +0,0 @@ |
|||||
package awais.instagrabber.utils; |
|
||||
|
|
||||
import android.net.Uri; |
|
||||
|
|
||||
import java.util.Collections; |
|
||||
import java.util.List; |
|
||||
import java.util.UUID; |
|
||||
|
|
||||
import awais.instagrabber.models.enums.DirectItemType; |
|
||||
import awais.instagrabber.models.enums.MediaItemType; |
|
||||
import awais.instagrabber.repositories.responses.AnimatedMediaImages; |
|
||||
import awais.instagrabber.repositories.responses.Audio; |
|
||||
import awais.instagrabber.repositories.responses.ImageVersions2; |
|
||||
import awais.instagrabber.repositories.responses.Media; |
|
||||
import awais.instagrabber.repositories.responses.MediaCandidate; |
|
||||
import awais.instagrabber.repositories.responses.VideoVersion; |
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItem; |
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItemAnimatedMedia; |
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItemVoiceMedia; |
|
||||
import awais.instagrabber.repositories.responses.giphy.GiphyGif; |
|
||||
|
|
||||
public final class DirectItemFactory { |
|
||||
|
|
||||
public static DirectItem createText(final long userId, |
|
||||
final String clientContext, |
|
||||
final String text, |
|
||||
final DirectItem repliedToMessage) { |
|
||||
return new DirectItem( |
|
||||
UUID.randomUUID().toString(), |
|
||||
userId, |
|
||||
System.currentTimeMillis() * 1000, |
|
||||
DirectItemType.TEXT, |
|
||||
text, |
|
||||
null, |
|
||||
null, |
|
||||
clientContext, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
repliedToMessage, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
0, |
|
||||
false); |
|
||||
} |
|
||||
|
|
||||
public static DirectItem createImageOrVideo(final long userId, |
|
||||
final String clientContext, |
|
||||
final Uri uri, |
|
||||
final int width, |
|
||||
final int height, |
|
||||
final boolean isVideo) { |
|
||||
final ImageVersions2 imageVersions2 = new ImageVersions2(Collections.singletonList(new MediaCandidate(width, height, uri.toString()))); |
|
||||
List<VideoVersion> videoVersions = null; |
|
||||
if (isVideo) { |
|
||||
final VideoVersion videoVersion = new VideoVersion( |
|
||||
null, |
|
||||
null, |
|
||||
width, |
|
||||
height, |
|
||||
uri.toString() |
|
||||
); |
|
||||
videoVersions = Collections.singletonList(videoVersion); |
|
||||
} |
|
||||
final Media media = new Media( |
|
||||
null, |
|
||||
UUID.randomUUID().toString(), |
|
||||
null, |
|
||||
-1, |
|
||||
null, |
|
||||
false, |
|
||||
imageVersions2, |
|
||||
width, |
|
||||
height, |
|
||||
isVideo ? MediaItemType.MEDIA_TYPE_VIDEO : MediaItemType.MEDIA_TYPE_IMAGE, |
|
||||
false, |
|
||||
false, |
|
||||
-1, |
|
||||
-1, |
|
||||
-1, |
|
||||
false, |
|
||||
false, |
|
||||
videoVersions, |
|
||||
false, |
|
||||
0f, |
|
||||
0, |
|
||||
null, |
|
||||
false, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
false, |
|
||||
false, |
|
||||
null, |
|
||||
null); |
|
||||
return new DirectItem( |
|
||||
UUID.randomUUID().toString(), |
|
||||
userId, |
|
||||
System.currentTimeMillis() * 1000, |
|
||||
DirectItemType.MEDIA, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
clientContext, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
media, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
0, |
|
||||
false); |
|
||||
} |
|
||||
|
|
||||
public static DirectItem createVoice(final long userId, |
|
||||
final String clientContext, |
|
||||
final Uri uri, |
|
||||
final long duration, |
|
||||
final List<Float> waveform, |
|
||||
final int samplingFreq) { |
|
||||
final Audio audio = new Audio( |
|
||||
uri.toString(), |
|
||||
duration, |
|
||||
waveform, |
|
||||
samplingFreq, |
|
||||
0 |
|
||||
); |
|
||||
final Media media = new Media( |
|
||||
null, |
|
||||
UUID.randomUUID().toString(), |
|
||||
null, |
|
||||
-1, |
|
||||
null, |
|
||||
false, |
|
||||
null, |
|
||||
0, |
|
||||
0, |
|
||||
MediaItemType.MEDIA_TYPE_VOICE, |
|
||||
false, |
|
||||
false, |
|
||||
-1, |
|
||||
0, |
|
||||
0, |
|
||||
false, |
|
||||
false, |
|
||||
null, |
|
||||
false, |
|
||||
0f, |
|
||||
0, |
|
||||
null, |
|
||||
false, |
|
||||
audio, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
false, |
|
||||
false, |
|
||||
null, |
|
||||
null); |
|
||||
final DirectItemVoiceMedia voiceMedia = new DirectItemVoiceMedia( |
|
||||
media, |
|
||||
0, |
|
||||
"permanent" |
|
||||
); |
|
||||
return new DirectItem( |
|
||||
UUID.randomUUID().toString(), |
|
||||
userId, |
|
||||
System.currentTimeMillis() * 1000, |
|
||||
DirectItemType.VOICE_MEDIA, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
clientContext, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
media, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
voiceMedia, |
|
||||
null, |
|
||||
null, |
|
||||
0, |
|
||||
false); |
|
||||
} |
|
||||
|
|
||||
public static DirectItem createAnimatedMedia(final long userId, |
|
||||
final String clientContext, |
|
||||
final GiphyGif giphyGif) { |
|
||||
final AnimatedMediaImages animatedImages = new AnimatedMediaImages(giphyGif.getImages().getFixedHeight()); |
|
||||
final DirectItemAnimatedMedia animateMedia = new DirectItemAnimatedMedia( |
|
||||
giphyGif.getId(), |
|
||||
animatedImages, |
|
||||
false, |
|
||||
giphyGif.isSticker() |
|
||||
); |
|
||||
return new DirectItem( |
|
||||
UUID.randomUUID().toString(), |
|
||||
userId, |
|
||||
System.currentTimeMillis() * 1000, |
|
||||
DirectItemType.ANIMATED_MEDIA, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
clientContext, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
animateMedia, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
null, |
|
||||
0, |
|
||||
false |
|
||||
); |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,126 @@ |
|||||
|
@file:JvmName("DirectItemFactory") |
||||
|
|
||||
|
package awais.instagrabber.utils |
||||
|
|
||||
|
import android.net.Uri |
||||
|
import awais.instagrabber.models.enums.DirectItemType |
||||
|
import awais.instagrabber.models.enums.MediaItemType |
||||
|
import awais.instagrabber.repositories.responses.* |
||||
|
import awais.instagrabber.repositories.responses.directmessages.DirectItem |
||||
|
import awais.instagrabber.repositories.responses.directmessages.DirectItemAnimatedMedia |
||||
|
import awais.instagrabber.repositories.responses.directmessages.DirectItemVoiceMedia |
||||
|
import awais.instagrabber.repositories.responses.giphy.GiphyGif |
||||
|
import java.util.* |
||||
|
|
||||
|
fun createText( |
||||
|
userId: Long, |
||||
|
clientContext: String?, |
||||
|
text: String?, |
||||
|
repliedToMessage: DirectItem? |
||||
|
): DirectItem { |
||||
|
return DirectItem( |
||||
|
itemId = UUID.randomUUID().toString(), |
||||
|
userId = userId, |
||||
|
timestamp = System.currentTimeMillis() * 1000, |
||||
|
itemType = DirectItemType.TEXT, |
||||
|
text = text, |
||||
|
clientContext = clientContext, |
||||
|
repliedToMessage = repliedToMessage, |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
fun createImageOrVideo( |
||||
|
userId: Long, |
||||
|
clientContext: String?, |
||||
|
uri: Uri, |
||||
|
width: Int, |
||||
|
height: Int, |
||||
|
isVideo: Boolean |
||||
|
): DirectItem { |
||||
|
val imageVersions2 = ImageVersions2(listOf(MediaCandidate(width, height, uri.toString()))) |
||||
|
var videoVersions: List<VideoVersion>? = null |
||||
|
if (isVideo) { |
||||
|
val videoVersion = VideoVersion( |
||||
|
null, |
||||
|
null, |
||||
|
width, |
||||
|
height, |
||||
|
uri.toString() |
||||
|
) |
||||
|
videoVersions = listOf(videoVersion) |
||||
|
} |
||||
|
val media = Media( |
||||
|
id = UUID.randomUUID().toString(), |
||||
|
imageVersions2 = imageVersions2, |
||||
|
originalWidth = width, |
||||
|
originalHeight = height, |
||||
|
mediaType = if (isVideo) MediaItemType.MEDIA_TYPE_VIDEO else MediaItemType.MEDIA_TYPE_IMAGE, |
||||
|
videoVersions = videoVersions, |
||||
|
) |
||||
|
return DirectItem( |
||||
|
itemId = UUID.randomUUID().toString(), |
||||
|
userId = userId, |
||||
|
timestamp = System.currentTimeMillis() * 1000, |
||||
|
itemType = DirectItemType.MEDIA, |
||||
|
clientContext = clientContext, |
||||
|
media = media, |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
fun createVoice( |
||||
|
userId: Long, |
||||
|
clientContext: String?, |
||||
|
uri: Uri, |
||||
|
duration: Long, |
||||
|
waveform: List<Float>?, |
||||
|
samplingFreq: Int |
||||
|
): DirectItem { |
||||
|
val audio = Audio( |
||||
|
uri.toString(), |
||||
|
duration, |
||||
|
waveform, |
||||
|
samplingFreq, |
||||
|
0 |
||||
|
) |
||||
|
val media = Media( |
||||
|
id = UUID.randomUUID().toString(), |
||||
|
mediaType = MediaItemType.MEDIA_TYPE_VOICE, |
||||
|
audio = audio, |
||||
|
) |
||||
|
val voiceMedia = DirectItemVoiceMedia( |
||||
|
media, |
||||
|
0, |
||||
|
"permanent" |
||||
|
) |
||||
|
return DirectItem( |
||||
|
itemId = UUID.randomUUID().toString(), |
||||
|
userId = userId, |
||||
|
timestamp = System.currentTimeMillis() * 1000, |
||||
|
itemType = DirectItemType.VOICE_MEDIA, |
||||
|
clientContext = clientContext, |
||||
|
media = media, |
||||
|
voiceMedia = voiceMedia, |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
fun createAnimatedMedia( |
||||
|
userId: Long, |
||||
|
clientContext: String?, |
||||
|
giphyGif: GiphyGif |
||||
|
): DirectItem { |
||||
|
val animatedImages = AnimatedMediaImages(giphyGif.images.fixedHeight) |
||||
|
val animateMedia = DirectItemAnimatedMedia( |
||||
|
giphyGif.id, |
||||
|
animatedImages, |
||||
|
false, |
||||
|
giphyGif.isSticker |
||||
|
) |
||||
|
return DirectItem( |
||||
|
itemId = UUID.randomUUID().toString(), |
||||
|
userId = userId, |
||||
|
timestamp = System.currentTimeMillis() * 1000, |
||||
|
itemType = DirectItemType.ANIMATED_MEDIA, |
||||
|
clientContext = clientContext, |
||||
|
animatedMedia = animateMedia, |
||||
|
) |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue