Ammar Githam
4 years ago
14 changed files with 166 additions and 520 deletions
-
10app/src/main/java/awais/instagrabber/db/datasources/AccountDataSource.kt
-
7app/src/main/java/awais/instagrabber/db/datasources/DMLastNotifiedDataSource.kt
-
3app/src/main/java/awais/instagrabber/db/datasources/FavoriteDataSource.kt
-
124app/src/main/java/awais/instagrabber/db/entities/Account.java
-
32app/src/main/java/awais/instagrabber/db/entities/Account.kt
-
85app/src/main/java/awais/instagrabber/db/entities/DMLastNotified.java
-
23app/src/main/java/awais/instagrabber/db/entities/DMLastNotified.kt
-
110app/src/main/java/awais/instagrabber/db/entities/Favorite.java
-
27app/src/main/java/awais/instagrabber/db/entities/Favorite.kt
-
185app/src/main/java/awais/instagrabber/db/entities/RecentSearch.java
-
70app/src/main/java/awais/instagrabber/db/entities/RecentSearch.kt
-
2app/src/main/java/awais/instagrabber/db/repositories/FavoriteRepository.kt
-
6app/src/main/java/awais/instagrabber/db/repositories/RecentSearchRepository.kt
-
2app/src/main/java/awais/instagrabber/fragments/FavoritesFragment.kt
@ -1,124 +0,0 @@ |
|||
package awais.instagrabber.db.entities; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.core.util.ObjectsCompat; |
|||
import androidx.room.ColumnInfo; |
|||
import androidx.room.Entity; |
|||
import androidx.room.Ignore; |
|||
import androidx.room.PrimaryKey; |
|||
|
|||
import awais.instagrabber.utils.Constants; |
|||
import awais.instagrabber.utils.TextUtils; |
|||
|
|||
@Entity(tableName = Account.TABLE_NAME) |
|||
public class Account { |
|||
public final static String TABLE_NAME = "accounts"; |
|||
public final static String COL_ID = "id"; |
|||
public final static String COL_USERNAME = Constants.EXTRAS_USERNAME; |
|||
public final static String COL_COOKIE = "cookie"; |
|||
public final static String COL_UID = "uid"; |
|||
public final static String COL_FULL_NAME = "full_name"; |
|||
public final static String COL_PROFILE_PIC = "profile_pic"; |
|||
|
|||
@PrimaryKey(autoGenerate = true) |
|||
@ColumnInfo(name = COL_ID) |
|||
private final int id; |
|||
|
|||
@ColumnInfo(name = COL_UID) |
|||
private final String uid; |
|||
|
|||
@ColumnInfo(name = COL_USERNAME) |
|||
private final String username; |
|||
|
|||
@ColumnInfo(name = COL_COOKIE) |
|||
private final String cookie; |
|||
|
|||
@ColumnInfo(name = COL_FULL_NAME) |
|||
private final String fullName; |
|||
|
|||
@ColumnInfo(name = COL_PROFILE_PIC) |
|||
private final String profilePic; |
|||
|
|||
@Ignore |
|||
private boolean selected; |
|||
|
|||
public Account(final int id, |
|||
final String uid, |
|||
final String username, |
|||
final String cookie, |
|||
final String fullName, |
|||
final String profilePic) { |
|||
this.id = id; |
|||
this.uid = uid; |
|||
this.username = username; |
|||
this.cookie = cookie; |
|||
this.fullName = fullName; |
|||
this.profilePic = profilePic; |
|||
} |
|||
|
|||
public int getId() { |
|||
return id; |
|||
} |
|||
|
|||
public String getUid() { |
|||
return uid; |
|||
} |
|||
|
|||
public String getUsername() { |
|||
return username; |
|||
} |
|||
|
|||
public String getCookie() { |
|||
return cookie; |
|||
} |
|||
|
|||
public String getFullName() { |
|||
return fullName; |
|||
} |
|||
|
|||
public String getProfilePic() { |
|||
return profilePic; |
|||
} |
|||
|
|||
public boolean isSelected() { |
|||
return selected; |
|||
} |
|||
|
|||
public void setSelected(final boolean selected) { |
|||
this.selected = selected; |
|||
} |
|||
|
|||
public boolean isValid() { |
|||
return !TextUtils.isEmpty(uid) |
|||
&& !TextUtils.isEmpty(username) |
|||
&& !TextUtils.isEmpty(cookie); |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final Account that = (Account) o; |
|||
return ObjectsCompat.equals(uid, that.uid) && |
|||
ObjectsCompat.equals(username, that.username) && |
|||
ObjectsCompat.equals(cookie, that.cookie); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return ObjectsCompat.hash(uid, username, cookie); |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public String toString() { |
|||
return "Account{" + |
|||
"uid='" + uid + '\'' + |
|||
", username='" + username + '\'' + |
|||
", cookie='" + cookie + '\'' + |
|||
", fullName='" + fullName + '\'' + |
|||
", profilePic='" + profilePic + '\'' + |
|||
", selected=" + selected + |
|||
'}'; |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
package awais.instagrabber.db.entities |
|||
|
|||
import androidx.room.ColumnInfo |
|||
import androidx.room.Entity |
|||
import androidx.room.Ignore |
|||
import androidx.room.PrimaryKey |
|||
|
|||
@Entity(tableName = Account.TABLE_NAME) |
|||
data class Account( |
|||
@ColumnInfo(name = COL_ID) @PrimaryKey(autoGenerate = true) val id: Int, |
|||
@ColumnInfo(name = COL_UID) val uid: String?, |
|||
@ColumnInfo(name = COL_USERNAME) val username: String?, |
|||
@ColumnInfo(name = COL_COOKIE) val cookie: String?, |
|||
@ColumnInfo(name = COL_FULL_NAME) val fullName: String?, |
|||
@ColumnInfo(name = COL_PROFILE_PIC) val profilePic: String?, |
|||
) { |
|||
@Ignore |
|||
var isSelected = false |
|||
|
|||
val isValid: Boolean |
|||
get() = !uid.isNullOrBlank() && !username.isNullOrBlank() && !cookie.isNullOrBlank() |
|||
|
|||
companion object { |
|||
const val TABLE_NAME = "accounts" |
|||
const val COL_ID = "id" |
|||
const val COL_USERNAME = "username" |
|||
const val COL_COOKIE = "cookie" |
|||
const val COL_UID = "uid" |
|||
const val COL_FULL_NAME = "full_name" |
|||
const val COL_PROFILE_PIC = "profile_pic" |
|||
} |
|||
} |
@ -1,85 +0,0 @@ |
|||
package awais.instagrabber.db.entities; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.room.ColumnInfo; |
|||
import androidx.room.Entity; |
|||
import androidx.room.Index; |
|||
import androidx.room.PrimaryKey; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.Objects; |
|||
|
|||
@Entity(tableName = DMLastNotified.TABLE_NAME, indices = {@Index(value = DMLastNotified.COL_THREAD_ID, unique = true)}) |
|||
public class DMLastNotified { |
|||
public final static String TABLE_NAME = "dm_last_notified"; |
|||
public final static String COL_ID = "id"; |
|||
public final static String COL_THREAD_ID = "thread_id"; |
|||
public final static String COL_LAST_NOTIFIED_MSG_TS = "last_notified_msg_ts"; |
|||
public final static String COL_LAST_NOTIFIED_AT = "last_notified_at"; |
|||
|
|||
@PrimaryKey(autoGenerate = true) |
|||
@ColumnInfo(name = COL_ID) |
|||
private final int id; |
|||
|
|||
@ColumnInfo(name = COL_THREAD_ID) |
|||
private final String threadId; |
|||
|
|||
@ColumnInfo(name = COL_LAST_NOTIFIED_MSG_TS) |
|||
private final LocalDateTime lastNotifiedMsgTs; |
|||
|
|||
@ColumnInfo(name = COL_LAST_NOTIFIED_AT) |
|||
private final LocalDateTime lastNotifiedAt; |
|||
|
|||
public DMLastNotified(final int id, |
|||
final String threadId, |
|||
final LocalDateTime lastNotifiedMsgTs, |
|||
final LocalDateTime lastNotifiedAt) { |
|||
this.id = id; |
|||
this.threadId = threadId; |
|||
this.lastNotifiedMsgTs = lastNotifiedMsgTs; |
|||
this.lastNotifiedAt = lastNotifiedAt; |
|||
} |
|||
|
|||
public int getId() { |
|||
return id; |
|||
} |
|||
|
|||
public String getThreadId() { |
|||
return threadId; |
|||
} |
|||
|
|||
public LocalDateTime getLastNotifiedMsgTs() { |
|||
return lastNotifiedMsgTs; |
|||
} |
|||
|
|||
public LocalDateTime getLastNotifiedAt() { |
|||
return lastNotifiedAt; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final DMLastNotified that = (DMLastNotified) o; |
|||
return id == that.id && |
|||
Objects.equals(threadId, that.threadId) && |
|||
Objects.equals(lastNotifiedMsgTs, that.lastNotifiedMsgTs) && |
|||
Objects.equals(lastNotifiedAt, that.lastNotifiedAt); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(id, threadId, lastNotifiedMsgTs, lastNotifiedAt); |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public String toString() { |
|||
return "DMLastNotified{" + |
|||
"id=" + id + |
|||
", threadId='" + threadId + '\'' + |
|||
", lastNotifiedMsgTs='" + lastNotifiedMsgTs + '\'' + |
|||
", lastNotifiedAt='" + lastNotifiedAt + '\'' + |
|||
'}'; |
|||
} |
|||
} |
@ -0,0 +1,23 @@ |
|||
package awais.instagrabber.db.entities |
|||
|
|||
import androidx.room.ColumnInfo |
|||
import androidx.room.Entity |
|||
import androidx.room.Index |
|||
import androidx.room.PrimaryKey |
|||
import java.time.LocalDateTime |
|||
|
|||
@Entity(tableName = DMLastNotified.TABLE_NAME, indices = [Index(value = [DMLastNotified.COL_THREAD_ID], unique = true)]) |
|||
data class DMLastNotified( |
|||
@ColumnInfo(name = COL_ID) @PrimaryKey(autoGenerate = true) val id: Int, |
|||
@ColumnInfo(name = COL_THREAD_ID) val threadId: String?, |
|||
@ColumnInfo(name = COL_LAST_NOTIFIED_MSG_TS) val lastNotifiedMsgTs: LocalDateTime?, |
|||
@ColumnInfo(name = COL_LAST_NOTIFIED_AT) val lastNotifiedAt: LocalDateTime?, |
|||
) { |
|||
companion object { |
|||
const val TABLE_NAME = "dm_last_notified" |
|||
const val COL_ID = "id" |
|||
const val COL_THREAD_ID = "thread_id" |
|||
const val COL_LAST_NOTIFIED_MSG_TS = "last_notified_msg_ts" |
|||
const val COL_LAST_NOTIFIED_AT = "last_notified_at" |
|||
} |
|||
} |
@ -1,110 +0,0 @@ |
|||
package awais.instagrabber.db.entities; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.core.util.ObjectsCompat; |
|||
import androidx.room.ColumnInfo; |
|||
import androidx.room.Entity; |
|||
import androidx.room.PrimaryKey; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
import awais.instagrabber.models.enums.FavoriteType; |
|||
|
|||
@Entity(tableName = Favorite.TABLE_NAME) |
|||
public class Favorite { |
|||
public final static String TABLE_NAME = "favorites"; |
|||
public final static String COL_ID = "id"; |
|||
public final static String COL_QUERY = "query_text"; |
|||
public final static String COL_TYPE = "type"; |
|||
public final static String COL_DISPLAY_NAME = "display_name"; |
|||
public final static String COL_PIC_URL = "pic_url"; |
|||
public final static String COL_DATE_ADDED = "date_added"; |
|||
|
|||
@PrimaryKey(autoGenerate = true) |
|||
@ColumnInfo(name = COL_ID) |
|||
private final int id; |
|||
|
|||
@ColumnInfo(name = COL_QUERY) |
|||
private final String query; |
|||
|
|||
@ColumnInfo(name = COL_TYPE) |
|||
private final FavoriteType type; |
|||
|
|||
@ColumnInfo(name = COL_DISPLAY_NAME) |
|||
private final String displayName; |
|||
|
|||
@ColumnInfo(name = COL_PIC_URL) |
|||
private final String picUrl; |
|||
|
|||
@ColumnInfo(name = COL_DATE_ADDED) |
|||
private final LocalDateTime dateAdded; |
|||
|
|||
public Favorite(final int id, |
|||
final String query, |
|||
final FavoriteType type, |
|||
final String displayName, |
|||
final String picUrl, |
|||
final LocalDateTime dateAdded) { |
|||
this.id = id; |
|||
this.query = query; |
|||
this.type = type; |
|||
this.displayName = displayName; |
|||
this.picUrl = picUrl; |
|||
this.dateAdded = dateAdded; |
|||
} |
|||
|
|||
public int getId() { |
|||
return id; |
|||
} |
|||
|
|||
public String getQuery() { |
|||
return query; |
|||
} |
|||
|
|||
public FavoriteType getType() { |
|||
return type; |
|||
} |
|||
|
|||
public String getDisplayName() { |
|||
return displayName; |
|||
} |
|||
|
|||
public String getPicUrl() { |
|||
return picUrl; |
|||
} |
|||
|
|||
public LocalDateTime getDateAdded() { |
|||
return dateAdded; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final Favorite that = (Favorite) o; |
|||
return id == that.id && |
|||
ObjectsCompat.equals(query, that.query) && |
|||
type == that.type && |
|||
ObjectsCompat.equals(displayName, that.displayName) && |
|||
ObjectsCompat.equals(picUrl, that.picUrl) && |
|||
ObjectsCompat.equals(dateAdded, that.dateAdded); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return ObjectsCompat.hash(id, query, type, displayName, picUrl, dateAdded); |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public String toString() { |
|||
return "FavoriteModel{" + |
|||
"id=" + id + |
|||
", query='" + query + '\'' + |
|||
", type=" + type + |
|||
", displayName='" + displayName + '\'' + |
|||
", picUrl='" + picUrl + '\'' + |
|||
", dateAdded=" + dateAdded + |
|||
'}'; |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
package awais.instagrabber.db.entities |
|||
|
|||
import androidx.room.ColumnInfo |
|||
import androidx.room.Entity |
|||
import androidx.room.PrimaryKey |
|||
import awais.instagrabber.models.enums.FavoriteType |
|||
import java.time.LocalDateTime |
|||
|
|||
@Entity(tableName = Favorite.TABLE_NAME) |
|||
data class Favorite( |
|||
@ColumnInfo(name = COL_ID) @PrimaryKey(autoGenerate = true) val id: Int, |
|||
@ColumnInfo(name = COL_QUERY) val query: String?, |
|||
@ColumnInfo(name = COL_TYPE) val type: FavoriteType?, |
|||
@ColumnInfo(name = COL_DISPLAY_NAME) val displayName: String?, |
|||
@ColumnInfo(name = COL_PIC_URL) val picUrl: String?, |
|||
@ColumnInfo(name = COL_DATE_ADDED) val dateAdded: LocalDateTime?, |
|||
) { |
|||
companion object { |
|||
const val TABLE_NAME = "favorites" |
|||
const val COL_ID = "id" |
|||
const val COL_QUERY = "query_text" |
|||
const val COL_TYPE = "type" |
|||
const val COL_DISPLAY_NAME = "display_name" |
|||
const val COL_PIC_URL = "pic_url" |
|||
const val COL_DATE_ADDED = "date_added" |
|||
} |
|||
} |
@ -1,185 +0,0 @@ |
|||
package awais.instagrabber.db.entities; |
|||
|
|||
import android.util.Log; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.annotation.Nullable; |
|||
import androidx.room.ColumnInfo; |
|||
import androidx.room.Entity; |
|||
import androidx.room.Ignore; |
|||
import androidx.room.Index; |
|||
import androidx.room.PrimaryKey; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.Objects; |
|||
|
|||
import awais.instagrabber.models.enums.FavoriteType; |
|||
import awais.instagrabber.repositories.responses.search.SearchItem; |
|||
|
|||
@Entity(tableName = RecentSearch.TABLE_NAME, indices = {@Index(value = {RecentSearch.COL_IG_ID, RecentSearch.COL_TYPE}, unique = true)}) |
|||
public class RecentSearch { |
|||
private static final String TAG = RecentSearch.class.getSimpleName(); |
|||
|
|||
public static final String TABLE_NAME = "recent_searches"; |
|||
private static final String COL_ID = "id"; |
|||
public static final String COL_IG_ID = "ig_id"; |
|||
private static final String COL_NAME = "name"; |
|||
private static final String COL_USERNAME = "username"; |
|||
private static final String COL_PIC_URL = "pic_url"; |
|||
public static final String COL_TYPE = "type"; |
|||
private static final String COL_LAST_SEARCHED_ON = "last_searched_on"; |
|||
|
|||
@PrimaryKey(autoGenerate = true) |
|||
@ColumnInfo(name = COL_ID) |
|||
private final int id; |
|||
|
|||
@ColumnInfo(name = COL_IG_ID) |
|||
@NonNull |
|||
private final String igId; |
|||
|
|||
@ColumnInfo(name = COL_NAME) |
|||
@NonNull |
|||
private final String name; |
|||
|
|||
@ColumnInfo(name = COL_USERNAME) |
|||
private final String username; |
|||
|
|||
@ColumnInfo(name = COL_PIC_URL) |
|||
private final String picUrl; |
|||
|
|||
@ColumnInfo(name = COL_TYPE) |
|||
@NonNull |
|||
private final FavoriteType type; |
|||
|
|||
@ColumnInfo(name = COL_LAST_SEARCHED_ON) |
|||
@NonNull |
|||
private final LocalDateTime lastSearchedOn; |
|||
|
|||
@Ignore |
|||
public RecentSearch(final String igId, |
|||
final String name, |
|||
final String username, |
|||
final String picUrl, |
|||
final FavoriteType type, |
|||
final LocalDateTime lastSearchedOn) { |
|||
this(0, igId, name, username, picUrl, type, lastSearchedOn); |
|||
} |
|||
|
|||
public RecentSearch(final int id, |
|||
@NonNull final String igId, |
|||
@NonNull final String name, |
|||
final String username, |
|||
final String picUrl, |
|||
@NonNull final FavoriteType type, |
|||
@NonNull final LocalDateTime lastSearchedOn) { |
|||
this.id = id; |
|||
this.igId = igId; |
|||
this.name = name; |
|||
this.username = username; |
|||
this.picUrl = picUrl; |
|||
this.type = type; |
|||
this.lastSearchedOn = lastSearchedOn; |
|||
} |
|||
|
|||
public int getId() { |
|||
return id; |
|||
} |
|||
|
|||
@NonNull |
|||
public String getIgId() { |
|||
return igId; |
|||
} |
|||
|
|||
@NonNull |
|||
public String getName() { |
|||
return name; |
|||
} |
|||
|
|||
public String getUsername() { |
|||
return username; |
|||
} |
|||
|
|||
public String getPicUrl() { |
|||
return picUrl; |
|||
} |
|||
|
|||
@NonNull |
|||
public FavoriteType getType() { |
|||
return type; |
|||
} |
|||
|
|||
@NonNull |
|||
public LocalDateTime getLastSearchedOn() { |
|||
return lastSearchedOn; |
|||
} |
|||
|
|||
@Override |
|||
public boolean equals(final Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
final RecentSearch that = (RecentSearch) o; |
|||
return Objects.equals(igId, that.igId) && |
|||
Objects.equals(name, that.name) && |
|||
Objects.equals(username, that.username) && |
|||
Objects.equals(picUrl, that.picUrl) && |
|||
type == that.type && |
|||
Objects.equals(lastSearchedOn, that.lastSearchedOn); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(igId, name, username, picUrl, type, lastSearchedOn); |
|||
} |
|||
|
|||
@NonNull |
|||
@Override |
|||
public String toString() { |
|||
return "RecentSearch{" + |
|||
"id=" + id + |
|||
", igId='" + igId + '\'' + |
|||
", name='" + name + '\'' + |
|||
", username='" + username + '\'' + |
|||
", picUrl='" + picUrl + '\'' + |
|||
", type=" + type + |
|||
", lastSearchedOn=" + lastSearchedOn + |
|||
'}'; |
|||
} |
|||
|
|||
@Nullable |
|||
public static RecentSearch fromSearchItem(@NonNull final SearchItem searchItem) { |
|||
final FavoriteType type = searchItem.getType(); |
|||
if (type == null) return null; |
|||
try { |
|||
final String igId; |
|||
final String name; |
|||
final String username; |
|||
final String picUrl; |
|||
switch (type) { |
|||
case USER: |
|||
igId = String.valueOf(searchItem.getUser().getPk()); |
|||
name = searchItem.getUser().getFullName(); |
|||
username = searchItem.getUser().getUsername(); |
|||
picUrl = searchItem.getUser().getProfilePicUrl(); |
|||
break; |
|||
case HASHTAG: |
|||
igId = searchItem.getHashtag().getId(); |
|||
name = searchItem.getHashtag().getName(); |
|||
username = null; |
|||
picUrl = null; |
|||
break; |
|||
case LOCATION: |
|||
igId = String.valueOf(searchItem.getPlace().getLocation().getPk()); |
|||
name = searchItem.getPlace().getTitle(); |
|||
username = null; |
|||
picUrl = null; |
|||
break; |
|||
default: |
|||
return null; |
|||
} |
|||
return new RecentSearch(igId, name, username, picUrl, type, LocalDateTime.now()); |
|||
} catch (Exception e) { |
|||
Log.e(TAG, "fromSearchItem: ", e); |
|||
} |
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,70 @@ |
|||
package awais.instagrabber.db.entities |
|||
|
|||
import android.util.Log |
|||
import androidx.room.ColumnInfo |
|||
import androidx.room.Entity |
|||
import androidx.room.Index |
|||
import androidx.room.PrimaryKey |
|||
import awais.instagrabber.models.enums.FavoriteType |
|||
import awais.instagrabber.repositories.responses.search.SearchItem |
|||
import awais.instagrabber.utils.extensions.TAG |
|||
import java.time.LocalDateTime |
|||
|
|||
@Entity(tableName = RecentSearch.TABLE_NAME, indices = [Index(value = [RecentSearch.COL_IG_ID, RecentSearch.COL_TYPE], unique = true)]) |
|||
data class RecentSearch( |
|||
@ColumnInfo(name = COL_ID) @PrimaryKey(autoGenerate = true) val id: Int, |
|||
@ColumnInfo(name = COL_IG_ID) val igId: String, |
|||
@ColumnInfo(name = COL_NAME) val name: String, |
|||
@ColumnInfo(name = COL_USERNAME) val username: String?, |
|||
@ColumnInfo(name = COL_PIC_URL) val picUrl: String?, |
|||
@ColumnInfo(name = COL_TYPE) val type: FavoriteType, |
|||
@ColumnInfo(name = COL_LAST_SEARCHED_ON) val lastSearchedOn: LocalDateTime, |
|||
) { |
|||
|
|||
companion object { |
|||
const val TABLE_NAME = "recent_searches" |
|||
private const val COL_ID = "id" |
|||
const val COL_IG_ID = "ig_id" |
|||
private const val COL_NAME = "name" |
|||
private const val COL_USERNAME = "username" |
|||
private const val COL_PIC_URL = "pic_url" |
|||
const val COL_TYPE = "type" |
|||
private const val COL_LAST_SEARCHED_ON = "last_searched_on" |
|||
|
|||
@JvmStatic |
|||
fun fromSearchItem(searchItem: SearchItem): RecentSearch? { |
|||
val type = searchItem.type ?: return null |
|||
try { |
|||
val igId: String |
|||
val name: String |
|||
val username: String? |
|||
val picUrl: String? |
|||
when (type) { |
|||
FavoriteType.USER -> { |
|||
igId = searchItem.user.pk.toString() |
|||
name = searchItem.user.fullName ?: "" |
|||
username = searchItem.user.username |
|||
picUrl = searchItem.user.profilePicUrl |
|||
} |
|||
FavoriteType.HASHTAG -> { |
|||
igId = searchItem.hashtag.id |
|||
name = searchItem.hashtag.name |
|||
username = null |
|||
picUrl = null |
|||
} |
|||
FavoriteType.LOCATION -> { |
|||
igId = searchItem.place.location.pk.toString() |
|||
name = searchItem.place.title |
|||
username = null |
|||
picUrl = null |
|||
} |
|||
else -> return null |
|||
} |
|||
return RecentSearch(id = 0, igId, name, username, picUrl, type, LocalDateTime.now()) |
|||
} catch (e: Exception) { |
|||
Log.e(TAG, "fromSearchItem: ", e) |
|||
} |
|||
return null |
|||
} |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue