mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 03:25:34 +00:00 
			
		
		
		
	Replace some usages of Date with LocalDateTime. austinhuang0131/barinsta#1309
This commit is contained in:
		
							parent
							
								
									c784ca937d
								
							
						
					
					
						commit
						b273bff738
					
				| @ -1,6 +1,5 @@ | |||||||
| package awais.instagrabber.adapters; | package awais.instagrabber.adapters; | ||||||
| 
 | 
 | ||||||
| import android.text.format.DateFormat; |  | ||||||
| import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||||
| import android.view.ViewGroup; | import android.view.ViewGroup; | ||||||
| 
 | 
 | ||||||
| @ -13,8 +12,10 @@ import androidx.recyclerview.widget.AsyncListDiffer; | |||||||
| import androidx.recyclerview.widget.DiffUtil; | import androidx.recyclerview.widget.DiffUtil; | ||||||
| import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||||
| 
 | 
 | ||||||
|  | import java.time.LocalDate; | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
|  | import java.time.format.FormatStyle; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.function.Function; | import java.util.function.Function; | ||||||
| @ -57,7 +58,6 @@ import awais.instagrabber.repositories.responses.User; | |||||||
| import awais.instagrabber.repositories.responses.directmessages.DirectItem; | import awais.instagrabber.repositories.responses.directmessages.DirectItem; | ||||||
| import awais.instagrabber.repositories.responses.directmessages.DirectItemStoryShare; | import awais.instagrabber.repositories.responses.directmessages.DirectItemStoryShare; | ||||||
| import awais.instagrabber.repositories.responses.directmessages.DirectThread; | import awais.instagrabber.repositories.responses.directmessages.DirectThread; | ||||||
| import awais.instagrabber.utils.DateUtils; |  | ||||||
| 
 | 
 | ||||||
| public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | ||||||
|     private static final String TAG = DirectItemsAdapter.class.getSimpleName(); |     private static final String TAG = DirectItemsAdapter.class.getSimpleName(); | ||||||
| @ -292,12 +292,15 @@ public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView. | |||||||
| 
 | 
 | ||||||
|     private List<DirectItemOrHeader> sectionAndSort(final List<DirectItem> list) { |     private List<DirectItemOrHeader> sectionAndSort(final List<DirectItem> list) { | ||||||
|         final List<DirectItemOrHeader> itemOrHeaders = new ArrayList<>(); |         final List<DirectItemOrHeader> itemOrHeaders = new ArrayList<>(); | ||||||
|         Date prevSectionDate = null; |         LocalDate prevSectionDate = null; | ||||||
|         for (int i = 0; i < list.size(); i++) { |         for (int i = 0; i < list.size(); i++) { | ||||||
|             final DirectItem item = list.get(i); |             final DirectItem item = list.get(i); | ||||||
|             if (item == null) continue; |             if (item == null || item.getDate() == null) continue; | ||||||
|             final DirectItemOrHeader prev = itemOrHeaders.isEmpty() ? null : itemOrHeaders.get(itemOrHeaders.size() - 1); |             final DirectItemOrHeader prev = itemOrHeaders.isEmpty() ? null : itemOrHeaders.get(itemOrHeaders.size() - 1); | ||||||
|             if (prev != null && prev.item != null && DateUtils.isSameDay(prev.item.getDate(), item.getDate())) { |             if (prev != null | ||||||
|  |                     && prev.item != null | ||||||
|  |                     && prev.item.getDate() != null | ||||||
|  |                     && prev.item.getDate().toLocalDate().isEqual(item.getDate().toLocalDate())) { | ||||||
|                 // just add item |                 // just add item | ||||||
|                 final DirectItemOrHeader itemOrHeader = new DirectItemOrHeader(); |                 final DirectItemOrHeader itemOrHeader = new DirectItemOrHeader(); | ||||||
|                 itemOrHeader.item = item; |                 itemOrHeader.item = item; | ||||||
| @ -320,7 +323,7 @@ public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView. | |||||||
|             final DirectItemOrHeader itemOrHeader = new DirectItemOrHeader(); |             final DirectItemOrHeader itemOrHeader = new DirectItemOrHeader(); | ||||||
|             itemOrHeader.item = item; |             itemOrHeader.item = item; | ||||||
|             itemOrHeaders.add(itemOrHeader); |             itemOrHeaders.add(itemOrHeader); | ||||||
|             prevSectionDate = DateUtils.dateAtZeroHours(item.getDate()); |             prevSectionDate = item.getDate().toLocalDate(); | ||||||
|         } |         } | ||||||
|         return itemOrHeaders; |         return itemOrHeaders; | ||||||
|     } |     } | ||||||
| @ -352,7 +355,7 @@ public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView. | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static class DirectItemOrHeader { |     public static class DirectItemOrHeader { | ||||||
|         Date date; |         LocalDate date; | ||||||
|         public DirectItem item; |         public DirectItem item; | ||||||
| 
 | 
 | ||||||
|         public boolean isHeader() { |         public boolean isHeader() { | ||||||
| @ -377,12 +380,13 @@ public final class DirectItemsAdapter extends RecyclerView.Adapter<RecyclerView. | |||||||
|             this.binding = binding; |             this.binding = binding; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void bind(final Date date) { |         public void bind(final LocalDate date) { | ||||||
|             if (date == null) { |             if (date == null) { | ||||||
|                 binding.header.setText(""); |                 binding.header.setText(""); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|             binding.header.setText(DateFormat.getDateFormat(itemView.getContext()).format(date)); |             final DateTimeFormatter dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT); | ||||||
|  |             binding.header.setText(dateFormatter.format(date)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ import android.content.res.ColorStateList; | |||||||
| import android.content.res.Resources; | import android.content.res.Resources; | ||||||
| import android.graphics.Point; | import android.graphics.Point; | ||||||
| import android.graphics.drawable.Drawable; | import android.graphics.drawable.Drawable; | ||||||
| import android.text.format.DateFormat; |  | ||||||
| import android.view.Gravity; | import android.view.Gravity; | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.ViewConfiguration; | import android.view.ViewConfiguration; | ||||||
| @ -25,6 +24,8 @@ import androidx.transition.TransitionManager; | |||||||
| import com.google.android.material.transition.MaterialFade; | import com.google.android.material.transition.MaterialFade; | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| 
 | 
 | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
|  | import java.time.format.FormatStyle; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| @ -194,7 +195,8 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple | |||||||
|             binding.messageInfo.setVisibility(View.VISIBLE); |             binding.messageInfo.setVisibility(View.VISIBLE); | ||||||
|             binding.deliveryStatus.setVisibility(messageDirection == MessageDirection.OUTGOING ? View.VISIBLE : View.GONE); |             binding.deliveryStatus.setVisibility(messageDirection == MessageDirection.OUTGOING ? View.VISIBLE : View.GONE); | ||||||
|             if (item.getDate() != null) { |             if (item.getDate() != null) { | ||||||
|                 binding.messageTime.setText(DateFormat.getTimeFormat(itemView.getContext()).format(item.getDate())); |                 final DateTimeFormatter dateFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT); | ||||||
|  |                 binding.messageTime.setText(dateFormatter.format(item.getDate())); | ||||||
|             } |             } | ||||||
|             if (messageDirection == MessageDirection.OUTGOING) { |             if (messageDirection == MessageDirection.OUTGOING) { | ||||||
|                 if (item.isPending()) { |                 if (item.isPending()) { | ||||||
|  | |||||||
| @ -15,8 +15,10 @@ import androidx.room.TypeConverters; | |||||||
| import androidx.room.migration.Migration; | import androidx.room.migration.Migration; | ||||||
| import androidx.sqlite.db.SupportSQLiteDatabase; | import androidx.sqlite.db.SupportSQLiteDatabase; | ||||||
| 
 | 
 | ||||||
|  | import java.time.Instant; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.time.ZoneId; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import awais.instagrabber.db.dao.AccountDao; | import awais.instagrabber.db.dao.AccountDao; | ||||||
| @ -195,14 +197,18 @@ public abstract class AppDatabase extends RoomDatabase { | |||||||
|                         if (favoriteTypeQueryPair == null) continue; |                         if (favoriteTypeQueryPair == null) continue; | ||||||
|                         final FavoriteType type = favoriteTypeQueryPair.first; |                         final FavoriteType type = favoriteTypeQueryPair.first; | ||||||
|                         final String query = favoriteTypeQueryPair.second; |                         final String query = favoriteTypeQueryPair.second; | ||||||
|  |                         final long epochMillis = cursor.getLong(cursor.getColumnIndex("date_added")); | ||||||
|  |                         final LocalDateTime localDateTime = LocalDateTime.ofInstant( | ||||||
|  |                                 Instant.ofEpochMilli(epochMillis), | ||||||
|  |                                 ZoneId.systemDefault() | ||||||
|  |                         ); | ||||||
|                         oldModels.add(new Favorite( |                         oldModels.add(new Favorite( | ||||||
|                                 0, |                                 0, | ||||||
|                                 query, |                                 query, | ||||||
|                                 type, |                                 type, | ||||||
|                                 queryDisplayExists ? cursor.getString(cursor.getColumnIndex("query_display")) |                                 queryDisplayExists ? cursor.getString(cursor.getColumnIndex("query_display")) : null, | ||||||
|                                                    : null, |  | ||||||
|                                 null, |                                 null, | ||||||
|                                 new Date(cursor.getLong(cursor.getColumnIndex("date_added"))) |                                 localDateTime | ||||||
|                         )); |                         )); | ||||||
|                     } catch (Exception e) { |                     } catch (Exception e) { | ||||||
|                         Log.e(TAG, "onUpgrade", e); |                         Log.e(TAG, "onUpgrade", e); | ||||||
| @ -222,7 +228,7 @@ public abstract class AppDatabase extends RoomDatabase { | |||||||
|         values.put(Favorite.COL_TYPE, model.getType().toString()); |         values.put(Favorite.COL_TYPE, model.getType().toString()); | ||||||
|         values.put(Favorite.COL_DISPLAY_NAME, model.getDisplayName()); |         values.put(Favorite.COL_DISPLAY_NAME, model.getDisplayName()); | ||||||
|         values.put(Favorite.COL_PIC_URL, model.getPicUrl()); |         values.put(Favorite.COL_PIC_URL, model.getPicUrl()); | ||||||
|         values.put(Favorite.COL_DATE_ADDED, model.getDateAdded().getTime()); |         values.put(Favorite.COL_DATE_ADDED, model.getDateAdded().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); | ||||||
|         int rows; |         int rows; | ||||||
|         if (model.getId() >= 1) { |         if (model.getId() >= 1) { | ||||||
|             rows = db.update(Favorite.TABLE_NAME, |             rows = db.update(Favorite.TABLE_NAME, | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ import androidx.room.ColumnInfo; | |||||||
| import androidx.room.Entity; | import androidx.room.Entity; | ||||||
| import androidx.room.PrimaryKey; | import androidx.room.PrimaryKey; | ||||||
| 
 | 
 | ||||||
| import java.util.Date; | import java.time.LocalDateTime; | ||||||
| 
 | 
 | ||||||
| import awais.instagrabber.models.enums.FavoriteType; | import awais.instagrabber.models.enums.FavoriteType; | ||||||
| 
 | 
 | ||||||
| @ -37,14 +37,14 @@ public class Favorite { | |||||||
|     private final String picUrl; |     private final String picUrl; | ||||||
| 
 | 
 | ||||||
|     @ColumnInfo(name = COL_DATE_ADDED) |     @ColumnInfo(name = COL_DATE_ADDED) | ||||||
|     private final Date dateAdded; |     private final LocalDateTime dateAdded; | ||||||
| 
 | 
 | ||||||
|     public Favorite(final int id, |     public Favorite(final int id, | ||||||
|                     final String query, |                     final String query, | ||||||
|                     final FavoriteType type, |                     final FavoriteType type, | ||||||
|                     final String displayName, |                     final String displayName, | ||||||
|                     final String picUrl, |                     final String picUrl, | ||||||
|                     final Date dateAdded) { |                     final LocalDateTime dateAdded) { | ||||||
|         this.id = id; |         this.id = id; | ||||||
|         this.query = query; |         this.query = query; | ||||||
|         this.type = type; |         this.type = type; | ||||||
| @ -73,7 +73,7 @@ public class Favorite { | |||||||
|         return picUrl; |         return picUrl; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public Date getDateAdded() { |     public LocalDateTime getDateAdded() { | ||||||
|         return dateAdded; |         return dateAdded; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ import com.google.android.material.snackbar.BaseTransientBottomBar; | |||||||
| import com.google.android.material.snackbar.Snackbar; | import com.google.android.material.snackbar.Snackbar; | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| 
 | 
 | ||||||
| import java.util.Date; | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| 
 | 
 | ||||||
| @ -531,7 +531,7 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe | |||||||
|                                 FavoriteType.HASHTAG, |                                 FavoriteType.HASHTAG, | ||||||
|                                 hashtagModel.getName(), |                                 hashtagModel.getName(), | ||||||
|                                 "res:/" + R.drawable.ic_hashtag, |                                 "res:/" + R.drawable.ic_hashtag, | ||||||
|                                 new Date() |                                 LocalDateTime.now() | ||||||
|                         ), new RepositoryCallback<Void>() { |                         ), new RepositoryCallback<Void>() { | ||||||
|                             @Override |                             @Override | ||||||
|                             public void onSuccess(final Void result) { |                             public void onSuccess(final Void result) { | ||||||
|  | |||||||
| @ -36,7 +36,7 @@ import com.google.android.material.snackbar.BaseTransientBottomBar; | |||||||
| import com.google.android.material.snackbar.Snackbar; | import com.google.android.material.snackbar.Snackbar; | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| 
 | 
 | ||||||
| import java.util.Date; | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| 
 | 
 | ||||||
| @ -539,7 +539,7 @@ public class LocationFragment extends Fragment implements SwipeRefreshLayout.OnR | |||||||
|                             FavoriteType.LOCATION, |                             FavoriteType.LOCATION, | ||||||
|                             locationModel.getName(), |                             locationModel.getName(), | ||||||
|                             "res:/" + R.drawable.ic_location, |                             "res:/" + R.drawable.ic_location, | ||||||
|                             new Date() |                             LocalDateTime.now() | ||||||
|                     ), new RepositoryCallback<Void>() { |                     ), new RepositoryCallback<Void>() { | ||||||
|                         @Override |                         @Override | ||||||
|                         public void onSuccess(final Void result) { |                         public void onSuccess(final Void result) { | ||||||
|  | |||||||
| @ -45,8 +45,8 @@ import com.google.android.material.snackbar.BaseTransientBottomBar; | |||||||
| import com.google.android.material.snackbar.Snackbar; | import com.google.android.material.snackbar.Snackbar; | ||||||
| import com.google.common.collect.ImmutableList; | import com.google.common.collect.ImmutableList; | ||||||
| 
 | 
 | ||||||
|  | import java.time.LocalDateTime; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| @ -722,7 +722,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe | |||||||
|                                 FavoriteType.USER, |                                 FavoriteType.USER, | ||||||
|                                 profileModel.getFullName(), |                                 profileModel.getFullName(), | ||||||
|                                 profileModel.getProfilePicUrl(), |                                 profileModel.getProfilePicUrl(), | ||||||
|                                 new Date() |                                 LocalDateTime.now() | ||||||
|                         ), new RepositoryCallback<Void>() { |                         ), new RepositoryCallback<Void>() { | ||||||
|                             @Override |                             @Override | ||||||
|                             public void onSuccess(final Void result) { |                             public void onSuccess(final Void result) { | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ import java.io.Serializable | |||||||
| import java.time.Instant | import java.time.Instant | ||||||
| import java.time.LocalDateTime | import java.time.LocalDateTime | ||||||
| import java.time.ZoneId | import java.time.ZoneId | ||||||
| import java.util.* |  | ||||||
| 
 | 
 | ||||||
| data class DirectItem( | data class DirectItem( | ||||||
|     var itemId: String? = null, |     var itemId: String? = null, | ||||||
| @ -40,9 +39,8 @@ data class DirectItem( | |||||||
|     val hideInThread: Int? = 0, |     val hideInThread: Int? = 0, | ||||||
|     val showForwardAttribution: Boolean = false |     val showForwardAttribution: Boolean = false | ||||||
| ) : Cloneable, Serializable { | ) : Cloneable, Serializable { | ||||||
|     private var date: Date? = null |  | ||||||
|     var isPending = false |     var isPending = false | ||||||
|     var localDateTime: LocalDateTime? = null |     var date: LocalDateTime? = null | ||||||
|         get() { |         get() { | ||||||
|             if (field == null) { |             if (field == null) { | ||||||
|                 field = Instant.ofEpochMilli(timestamp / 1000).atZone(ZoneId.systemDefault()).toLocalDateTime() |                 field = Instant.ofEpochMilli(timestamp / 1000).atZone(ZoneId.systemDefault()).toLocalDateTime() | ||||||
| @ -60,13 +58,6 @@ data class DirectItem( | |||||||
|         date = null |         date = null | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun getDate(): Date? { |  | ||||||
|         if (date == null) { |  | ||||||
|             date = Date(timestamp / 1000) |  | ||||||
|         } |  | ||||||
|         return date |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Throws(CloneNotSupportedException::class) |     @Throws(CloneNotSupportedException::class) | ||||||
|     public override fun clone(): Any { |     public override fun clone(): Any { | ||||||
|         return super.clone() |         return super.clone() | ||||||
|  | |||||||
| @ -112,7 +112,7 @@ public class DMSyncService extends LifecycleService { | |||||||
|             final DirectItem latestItem = unreadItems.get(unreadItems.size() - 1); |             final DirectItem latestItem = unreadItems.get(unreadItems.size() - 1); | ||||||
|             lastNotifiedListBuilder.add(new DMLastNotified(0, |             lastNotifiedListBuilder.add(new DMLastNotified(0, | ||||||
|                                                            unreadMessagesEntry.getKey(), |                                                            unreadMessagesEntry.getKey(), | ||||||
|                                                            latestItem.getLocalDateTime(), |                                                            latestItem.getDate(), | ||||||
|                                                            now)); |                                                            now)); | ||||||
|         } |         } | ||||||
|         dmLastNotifiedRepository.insertOrUpdateDMLastNotified( |         dmLastNotifiedRepository.insertOrUpdateDMLastNotified( | ||||||
| @ -145,8 +145,8 @@ public class DMSyncService extends LifecycleService { | |||||||
|             if (item.getUserId() == viewerId) break; // Reached a message from the viewer, it is assumed the viewer has read the next messages |             if (item.getUserId() == viewerId) break; // Reached a message from the viewer, it is assumed the viewer has read the next messages | ||||||
|             final boolean read = DMUtils.isRead(item, lastSeenAt, Collections.singletonList(viewerId)); |             final boolean read = DMUtils.isRead(item, lastSeenAt, Collections.singletonList(viewerId)); | ||||||
|             if (read) break; |             if (read) break; | ||||||
|             if (dmLastNotified != null && dmLastNotified.getLastNotifiedMsgTs() != null) { |             if (dmLastNotified != null && dmLastNotified.getLastNotifiedMsgTs() != null && item.getDate() != null) { | ||||||
|                 if (count == 0 && DateUtils.isBeforeOrEqual(item.getLocalDateTime(), dmLastNotified.getLastNotifiedMsgTs())) { |                 if (count == 0 && DateUtils.isBeforeOrEqual(item.getDate(), dmLastNotified.getLastNotifiedMsgTs())) { | ||||||
|                     // The first unread item has been notified and hence all subsequent items can be ignored |                     // The first unread item has been notified and hence all subsequent items can be ignored | ||||||
|                     // since the items are in desc timestamp order |                     // since the items are in desc timestamp order | ||||||
|                     break; |                     break; | ||||||
|  | |||||||
| @ -4,39 +4,15 @@ import androidx.annotation.NonNull; | |||||||
| 
 | 
 | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.Calendar; | import java.util.Calendar; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.Locale; | import java.util.Locale; | ||||||
| 
 | 
 | ||||||
| public final class DateUtils { | public final class DateUtils { | ||||||
|     public static boolean isSameDay(final Date date1, final Date date2) { |  | ||||||
|         if (date1 == null || date2 == null) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|         Calendar calendar1 = Calendar.getInstance(); |  | ||||||
|         calendar1.setTime(date1); |  | ||||||
|         Calendar calendar2 = Calendar.getInstance(); |  | ||||||
|         calendar2.setTime(date2); |  | ||||||
|         return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR) |  | ||||||
|                 && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH) |  | ||||||
|                 && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public static Date dateAtZeroHours(@NonNull final Date date) { |  | ||||||
|         final Calendar cal = Calendar.getInstance(); |  | ||||||
|         cal.setTime(date); |  | ||||||
|         cal.set(Calendar.HOUR_OF_DAY, 0); |  | ||||||
|         cal.set(Calendar.MINUTE, 0); |  | ||||||
|         cal.set(Calendar.SECOND, 0); |  | ||||||
|         cal.set(Calendar.MILLISECOND, 0); |  | ||||||
|         return cal.getTime(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     public static int getTimezoneOffset() { |     public static int getTimezoneOffset() { | ||||||
|         final Calendar calendar = Calendar.getInstance(Locale.getDefault()); |         final Calendar calendar = Calendar.getInstance(Locale.getDefault()); | ||||||
|         return -(calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)) / (60 * 1000); |         return -(calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)) / (60 * 1000); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static boolean isBeforeOrEqual(final LocalDateTime localDateTime, final LocalDateTime comparedTo) { |     public static boolean isBeforeOrEqual(@NonNull final LocalDateTime localDateTime, @NonNull final LocalDateTime comparedTo) { | ||||||
|         return localDateTime.isBefore(comparedTo) || localDateTime.isEqual(comparedTo); |         return localDateTime.isBefore(comparedTo) || localDateTime.isEqual(comparedTo); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -23,8 +23,10 @@ import org.json.JSONObject; | |||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.FileInputStream; | import java.io.FileInputStream; | ||||||
| import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||||
|  | import java.time.Instant; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.time.ZoneId; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.Iterator; | import java.util.Iterator; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -147,13 +149,15 @@ public final class ExportImportUtils { | |||||||
|             if (query == null || favoriteType == null) { |             if (query == null || favoriteType == null) { | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|  |             final long epochMillis = favsObject.getLong("d"); | ||||||
|             final Favorite favorite = new Favorite( |             final Favorite favorite = new Favorite( | ||||||
|                     0, |                     0, | ||||||
|                     query, |                     query, | ||||||
|                     favoriteType, |                     favoriteType, | ||||||
|                     favsObject.optString("s"), |                     favsObject.optString("s"), | ||||||
|                     favoriteType == FavoriteType.USER ? favsObject.optString("pic_url") : null, |                     favoriteType == FavoriteType.USER ? favsObject.optString("pic_url") : null, | ||||||
|                     new Date(favsObject.getLong("d"))); |                     LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMillis), ZoneId.systemDefault()) | ||||||
|  |             ); | ||||||
|             // Log.d(TAG, "importJson: favoriteModel: " + favoriteModel); |             // Log.d(TAG, "importJson: favoriteModel: " + favoriteModel); | ||||||
|             final FavoriteRepository favRepo = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(context)); |             final FavoriteRepository favRepo = FavoriteRepository.getInstance(FavoriteDataSource.getInstance(context)); | ||||||
|             favRepo.getFavorite(query, favoriteType, new RepositoryCallback<Favorite>() { |             favRepo.getFavorite(query, favoriteType, new RepositoryCallback<Favorite>() { | ||||||
| @ -370,7 +374,7 @@ public final class ExportImportUtils { | |||||||
|                         jsonObject.put("type", favorite.getType().toString()); |                         jsonObject.put("type", favorite.getType().toString()); | ||||||
|                         jsonObject.put("s", favorite.getDisplayName()); |                         jsonObject.put("s", favorite.getDisplayName()); | ||||||
|                         jsonObject.put("pic_url", favorite.getPicUrl()); |                         jsonObject.put("pic_url", favorite.getPicUrl()); | ||||||
|                         jsonObject.put("d", favorite.getDateAdded().getTime()); |                         jsonObject.put("d", favorite.getDateAdded().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); | ||||||
|                         jsonArray.put(jsonObject); |                         jsonArray.put(jsonObject); | ||||||
|                     } |                     } | ||||||
|                 } catch (Exception e) { |                 } catch (Exception e) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user