remake date formatter
This commit is contained in:
parent
5f217829b8
commit
2395b3b892
@ -10,7 +10,7 @@ import com.facebook.drawee.backends.pipeline.Fresco;
|
|||||||
import com.facebook.imagepipeline.core.ImagePipelineConfig;
|
import com.facebook.imagepipeline.core.ImagePipelineConfig;
|
||||||
|
|
||||||
import java.net.CookieHandler;
|
import java.net.CookieHandler;
|
||||||
import java.text.SimpleDateFormat;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import awais.instagrabber.fragments.settings.PreferenceKeys;
|
import awais.instagrabber.fragments.settings.PreferenceKeys;
|
||||||
@ -24,7 +24,6 @@ import static awais.instagrabber.utils.CookieUtils.NET_COOKIE_MANAGER;
|
|||||||
import static awais.instagrabber.utils.Utils.applicationHandler;
|
import static awais.instagrabber.utils.Utils.applicationHandler;
|
||||||
import static awais.instagrabber.utils.Utils.cacheDir;
|
import static awais.instagrabber.utils.Utils.cacheDir;
|
||||||
import static awais.instagrabber.utils.Utils.clipboardManager;
|
import static awais.instagrabber.utils.Utils.clipboardManager;
|
||||||
import static awais.instagrabber.utils.Utils.datetimeParser;
|
|
||||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||||
|
|
||||||
public final class InstaGrabberApplication extends Application {
|
public final class InstaGrabberApplication extends Application {
|
||||||
@ -78,11 +77,10 @@ public final class InstaGrabberApplication extends Application {
|
|||||||
if (clipboardManager == null)
|
if (clipboardManager == null)
|
||||||
clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
|
||||||
if (datetimeParser == null)
|
TextUtils.setFormatter(DateTimeFormatter.ofPattern(
|
||||||
datetimeParser = new SimpleDateFormat(
|
|
||||||
settingsHelper.getBoolean(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT_ENABLED) ?
|
settingsHelper.getBoolean(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT_ENABLED) ?
|
||||||
settingsHelper.getString(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT) :
|
settingsHelper.getString(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT) :
|
||||||
settingsHelper.getString(PreferenceKeys.DATE_TIME_FORMAT), LocaleUtils.getCurrentLocale());
|
settingsHelper.getString(PreferenceKeys.DATE_TIME_FORMAT), LocaleUtils.getCurrentLocale()));
|
||||||
|
|
||||||
if (TextUtils.isEmpty(settingsHelper.getString(Constants.DEVICE_UUID))) {
|
if (TextUtils.isEmpty(settingsHelper.getString(Constants.DEVICE_UUID))) {
|
||||||
settingsHelper.putString(Constants.DEVICE_UUID, UUID.randomUUID().toString());
|
settingsHelper.putString(Constants.DEVICE_UUID, UUID.randomUUID().toString());
|
||||||
|
@ -16,10 +16,10 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Calendar;
|
import java.time.Instant;
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
import java.util.GregorianCalendar;
|
import java.time.ZoneId;
|
||||||
|
|
||||||
import awais.instagrabber.databinding.DialogTimeSettingsBinding;
|
import awais.instagrabber.databinding.DialogTimeSettingsBinding;
|
||||||
import awais.instagrabber.utils.LocaleUtils;
|
import awais.instagrabber.utils.LocaleUtils;
|
||||||
@ -28,12 +28,12 @@ import awais.instagrabber.utils.TextUtils;
|
|||||||
public final class TimeSettingsDialog extends DialogFragment implements AdapterView.OnItemSelectedListener, CompoundButton.OnCheckedChangeListener,
|
public final class TimeSettingsDialog extends DialogFragment implements AdapterView.OnItemSelectedListener, CompoundButton.OnCheckedChangeListener,
|
||||||
View.OnClickListener, TextWatcher {
|
View.OnClickListener, TextWatcher {
|
||||||
private DialogTimeSettingsBinding timeSettingsBinding;
|
private DialogTimeSettingsBinding timeSettingsBinding;
|
||||||
private final Date magicDate;
|
private final LocalDateTime magicDate;
|
||||||
private SimpleDateFormat currentFormat;
|
private DateTimeFormatter currentFormat;
|
||||||
private String selectedFormat;
|
private String selectedFormat;
|
||||||
private boolean customDateTimeFormatEnabled;
|
private final boolean customDateTimeFormatEnabled;
|
||||||
private String customDateTimeFormat;
|
private final String customDateTimeFormat;
|
||||||
private String dateTimeSelection;
|
private final String dateTimeSelection;
|
||||||
private final boolean swapDateTimeEnabled;
|
private final boolean swapDateTimeEnabled;
|
||||||
private final OnConfirmListener onConfirmListener;
|
private final OnConfirmListener onConfirmListener;
|
||||||
|
|
||||||
@ -47,9 +47,10 @@ public final class TimeSettingsDialog extends DialogFragment implements AdapterV
|
|||||||
this.dateTimeSelection = dateTimeSelection;
|
this.dateTimeSelection = dateTimeSelection;
|
||||||
this.swapDateTimeEnabled = swapDateTimeEnabled;
|
this.swapDateTimeEnabled = swapDateTimeEnabled;
|
||||||
this.onConfirmListener = onConfirmListener;
|
this.onConfirmListener = onConfirmListener;
|
||||||
final Calendar instance = GregorianCalendar.getInstance();
|
magicDate = LocalDateTime.ofInstant(
|
||||||
instance.set(2020, 5, 22, 8, 17, 13);
|
Instant.now(),
|
||||||
magicDate = instance.getTime();
|
ZoneId.systemDefault()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,10 +83,9 @@ public final class TimeSettingsDialog extends DialogFragment implements AdapterV
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshTimeFormat() {
|
private void refreshTimeFormat() {
|
||||||
if (timeSettingsBinding.cbCustomFormat.isChecked()) {
|
if (timeSettingsBinding.cbCustomFormat.isChecked())
|
||||||
timeSettingsBinding.btnConfirm.setEnabled(false);
|
selectedFormat = timeSettingsBinding.etCustomFormat.getText().toString();
|
||||||
checkCustomTimeFormat();
|
else {
|
||||||
} else {
|
|
||||||
final String sepStr = String.valueOf(timeSettingsBinding.spSeparator.getSelectedItem());
|
final String sepStr = String.valueOf(timeSettingsBinding.spSeparator.getSelectedItem());
|
||||||
final String timeStr = String.valueOf(timeSettingsBinding.spTimeFormat.getSelectedItem());
|
final String timeStr = String.valueOf(timeSettingsBinding.spTimeFormat.getSelectedItem());
|
||||||
final String dateStr = String.valueOf(timeSettingsBinding.spDateFormat.getSelectedItem());
|
final String dateStr = String.valueOf(timeSettingsBinding.spDateFormat.getSelectedItem());
|
||||||
@ -96,24 +96,14 @@ public final class TimeSettingsDialog extends DialogFragment implements AdapterV
|
|||||||
selectedFormat = (isSwapTime ? dateStr : timeStr)
|
selectedFormat = (isSwapTime ? dateStr : timeStr)
|
||||||
+ (isBlankSeparator ? " " : " '" + sepStr + "' ")
|
+ (isBlankSeparator ? " " : " '" + sepStr + "' ")
|
||||||
+ (isSwapTime ? timeStr : dateStr);
|
+ (isSwapTime ? timeStr : dateStr);
|
||||||
|
}
|
||||||
|
|
||||||
timeSettingsBinding.btnConfirm.setEnabled(true);
|
timeSettingsBinding.btnConfirm.setEnabled(true);
|
||||||
currentFormat = new SimpleDateFormat(selectedFormat, LocaleUtils.getCurrentLocale());
|
|
||||||
timeSettingsBinding.timePreview.setText(currentFormat.format(magicDate));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkCustomTimeFormat() {
|
|
||||||
try {
|
try {
|
||||||
//noinspection ConstantConditions
|
currentFormat = DateTimeFormatter.ofPattern(selectedFormat, LocaleUtils.getCurrentLocale());
|
||||||
final String string = timeSettingsBinding.etCustomFormat.getText().toString();
|
timeSettingsBinding.timePreview.setText(magicDate.format(currentFormat));
|
||||||
if (TextUtils.isEmpty(string)) throw new NullPointerException();
|
}
|
||||||
currentFormat = new SimpleDateFormat(string, LocaleUtils.getCurrentLocale());
|
catch (Exception e) {
|
||||||
final String format = currentFormat.format(magicDate);
|
|
||||||
timeSettingsBinding.timePreview.setText(format);
|
|
||||||
|
|
||||||
timeSettingsBinding.btnConfirm.setEnabled(true);
|
|
||||||
} catch (final Exception e) {
|
|
||||||
timeSettingsBinding.btnConfirm.setEnabled(false);
|
timeSettingsBinding.btnConfirm.setEnabled(false);
|
||||||
timeSettingsBinding.timePreview.setText(null);
|
timeSettingsBinding.timePreview.setText(null);
|
||||||
}
|
}
|
||||||
@ -142,22 +132,19 @@ public final class TimeSettingsDialog extends DialogFragment implements AdapterV
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
|
public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
|
||||||
checkCustomTimeFormat();
|
refreshTimeFormat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(final View v) {
|
public void onClick(final View v) {
|
||||||
if (v == timeSettingsBinding.btnConfirm) {
|
if (v == timeSettingsBinding.btnConfirm) {
|
||||||
final Editable etCustomFormatText = timeSettingsBinding.etCustomFormat.getText();
|
|
||||||
if (onConfirmListener != null) {
|
if (onConfirmListener != null) {
|
||||||
onConfirmListener.onConfirm(
|
onConfirmListener.onConfirm(
|
||||||
timeSettingsBinding.cbCustomFormat.isChecked(),
|
timeSettingsBinding.cbCustomFormat.isChecked(),
|
||||||
etCustomFormatText == null ? null : etCustomFormatText.toString(),
|
|
||||||
timeSettingsBinding.spTimeFormat.getSelectedItemPosition(),
|
timeSettingsBinding.spTimeFormat.getSelectedItemPosition(),
|
||||||
timeSettingsBinding.spSeparator.getSelectedItemPosition(),
|
timeSettingsBinding.spSeparator.getSelectedItemPosition(),
|
||||||
timeSettingsBinding.spDateFormat.getSelectedItemPosition(),
|
timeSettingsBinding.spDateFormat.getSelectedItemPosition(),
|
||||||
selectedFormat,
|
selectedFormat,
|
||||||
currentFormat,
|
|
||||||
timeSettingsBinding.cbSwapTimeDate.isChecked());
|
timeSettingsBinding.cbSwapTimeDate.isChecked());
|
||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
@ -170,12 +157,10 @@ public final class TimeSettingsDialog extends DialogFragment implements AdapterV
|
|||||||
|
|
||||||
public interface OnConfirmListener {
|
public interface OnConfirmListener {
|
||||||
void onConfirm(boolean isCustomFormat,
|
void onConfirm(boolean isCustomFormat,
|
||||||
String formatSelection,
|
|
||||||
int spTimeFormatSelectedItemPosition,
|
int spTimeFormatSelectedItemPosition,
|
||||||
int spSeparatorSelectedItemPosition,
|
int spSeparatorSelectedItemPosition,
|
||||||
int spDateFormatSelectedItemPosition,
|
int spDateFormatSelectedItemPosition,
|
||||||
final String selectedFormat,
|
final String selectedFormat,
|
||||||
final SimpleDateFormat currentFormat,
|
|
||||||
final boolean swapDateTime);
|
final boolean swapDateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ import java.io.IOException;
|
|||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -928,7 +927,7 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
else setupImage();
|
else setupImage();
|
||||||
|
|
||||||
final ActionBar actionBar = fragmentActivity.getSupportActionBar();
|
final ActionBar actionBar = fragmentActivity.getSupportActionBar();
|
||||||
actionBarSubtitle = Utils.datetimeParser.format(new Date(currentStory.getTimestamp() * 1000L));
|
actionBarSubtitle = TextUtils.epochSecondToString(currentStory.getTimestamp());
|
||||||
if (actionBar != null) {
|
if (actionBar != null) {
|
||||||
try {
|
try {
|
||||||
actionBar.setSubtitle(actionBarSubtitle);
|
actionBar.setSubtitle(actionBarSubtitle);
|
||||||
|
@ -7,15 +7,14 @@ import androidx.preference.ListPreference;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import awais.instagrabber.R;
|
import awais.instagrabber.R;
|
||||||
import awais.instagrabber.dialogs.TimeSettingsDialog;
|
import awais.instagrabber.dialogs.TimeSettingsDialog;
|
||||||
import awais.instagrabber.utils.Constants;
|
import awais.instagrabber.utils.Constants;
|
||||||
import awais.instagrabber.utils.LocaleUtils;
|
import awais.instagrabber.utils.LocaleUtils;
|
||||||
|
import awais.instagrabber.utils.TextUtils;
|
||||||
import awais.instagrabber.utils.UserAgentUtils;
|
import awais.instagrabber.utils.UserAgentUtils;
|
||||||
import awais.instagrabber.utils.Utils;
|
|
||||||
|
|
||||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||||
|
|
||||||
@ -55,7 +54,7 @@ public class LocalePreferencesFragment extends BasePreferencesFragment {
|
|||||||
private Preference getPostTimeFormatPreference(@NonNull final Context context) {
|
private Preference getPostTimeFormatPreference(@NonNull final Context context) {
|
||||||
final Preference preference = new Preference(context);
|
final Preference preference = new Preference(context);
|
||||||
preference.setTitle(R.string.time_settings);
|
preference.setTitle(R.string.time_settings);
|
||||||
preference.setSummary(Utils.datetimeParser.format(new Date()));
|
preference.setSummary(TextUtils.nowToString());
|
||||||
preference.setIconSpaceReserved(false);
|
preference.setIconSpaceReserved(false);
|
||||||
preference.setOnPreferenceClickListener(preference1 -> {
|
preference.setOnPreferenceClickListener(preference1 -> {
|
||||||
new TimeSettingsDialog(
|
new TimeSettingsDialog(
|
||||||
@ -64,15 +63,15 @@ public class LocalePreferencesFragment extends BasePreferencesFragment {
|
|||||||
settingsHelper.getString(PreferenceKeys.DATE_TIME_SELECTION),
|
settingsHelper.getString(PreferenceKeys.DATE_TIME_SELECTION),
|
||||||
settingsHelper.getBoolean(PreferenceKeys.SWAP_DATE_TIME_FORMAT_ENABLED),
|
settingsHelper.getBoolean(PreferenceKeys.SWAP_DATE_TIME_FORMAT_ENABLED),
|
||||||
(isCustomFormat,
|
(isCustomFormat,
|
||||||
formatSelection,
|
|
||||||
spTimeFormatSelectedItemPosition,
|
spTimeFormatSelectedItemPosition,
|
||||||
spSeparatorSelectedItemPosition,
|
spSeparatorSelectedItemPosition,
|
||||||
spDateFormatSelectedItemPosition,
|
spDateFormatSelectedItemPosition,
|
||||||
selectedFormat,
|
selectedFormat,
|
||||||
currentFormat,
|
|
||||||
swapDateTime) -> {
|
swapDateTime) -> {
|
||||||
|
settingsHelper.putBoolean(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT_ENABLED, isCustomFormat);
|
||||||
|
settingsHelper.putBoolean(PreferenceKeys.SWAP_DATE_TIME_FORMAT_ENABLED, swapDateTime);
|
||||||
if (isCustomFormat) {
|
if (isCustomFormat) {
|
||||||
settingsHelper.putString(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT, formatSelection);
|
settingsHelper.putString(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT, selectedFormat);
|
||||||
} else {
|
} else {
|
||||||
final String formatSelectionUpdated = spTimeFormatSelectedItemPosition + ";"
|
final String formatSelectionUpdated = spTimeFormatSelectedItemPosition + ";"
|
||||||
+ spSeparatorSelectedItemPosition + ';'
|
+ spSeparatorSelectedItemPosition + ';'
|
||||||
@ -80,10 +79,8 @@ public class LocalePreferencesFragment extends BasePreferencesFragment {
|
|||||||
settingsHelper.putString(PreferenceKeys.DATE_TIME_FORMAT, selectedFormat);
|
settingsHelper.putString(PreferenceKeys.DATE_TIME_FORMAT, selectedFormat);
|
||||||
settingsHelper.putString(PreferenceKeys.DATE_TIME_SELECTION, formatSelectionUpdated);
|
settingsHelper.putString(PreferenceKeys.DATE_TIME_SELECTION, formatSelectionUpdated);
|
||||||
}
|
}
|
||||||
settingsHelper.putBoolean(PreferenceKeys.CUSTOM_DATE_TIME_FORMAT_ENABLED, isCustomFormat);
|
TextUtils.setFormatter(DateTimeFormatter.ofPattern(selectedFormat, LocaleUtils.getCurrentLocale()));
|
||||||
settingsHelper.putBoolean(PreferenceKeys.SWAP_DATE_TIME_FORMAT_ENABLED, swapDateTime);
|
preference.setSummary(TextUtils.nowToString());
|
||||||
Utils.datetimeParser = (SimpleDateFormat) currentFormat.clone();
|
|
||||||
preference.setSummary(Utils.datetimeParser.format(new Date()));
|
|
||||||
}
|
}
|
||||||
).show(getParentFragmentManager(), null);
|
).show(getParentFragmentManager(), null);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package awais.instagrabber.models
|
package awais.instagrabber.models
|
||||||
|
|
||||||
import awais.instagrabber.repositories.responses.User
|
import awais.instagrabber.repositories.responses.User
|
||||||
import awais.instagrabber.utils.Utils
|
import awais.instagrabber.utils.TextUtils
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ class Comment(
|
|||||||
val isChild: Boolean,
|
val isChild: Boolean,
|
||||||
) : Serializable, Cloneable {
|
) : Serializable, Cloneable {
|
||||||
val dateTime: String
|
val dateTime: String
|
||||||
get() = Utils.datetimeParser.format(Date(timestamp * 1000L))
|
get() = TextUtils.epochSecondToString(timestamp)
|
||||||
|
|
||||||
fun getLiked(): Boolean {
|
fun getLiked(): Boolean {
|
||||||
return liked
|
return liked
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package awais.instagrabber.models
|
package awais.instagrabber.models
|
||||||
|
|
||||||
import awais.instagrabber.repositories.responses.User
|
import awais.instagrabber.repositories.responses.User
|
||||||
import awais.instagrabber.utils.Utils
|
import awais.instagrabber.utils.TextUtils
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -16,5 +16,5 @@ data class FeedStoryModel(
|
|||||||
val isBestie: Boolean
|
val isBestie: Boolean
|
||||||
) : Serializable {
|
) : Serializable {
|
||||||
val dateTime: String
|
val dateTime: String
|
||||||
get() = Utils.datetimeParser.format(Date(timestamp * 1000L))
|
get() = TextUtils.epochSecondToString(timestamp)
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package awais.instagrabber.models
|
package awais.instagrabber.models
|
||||||
|
|
||||||
import awais.instagrabber.utils.Utils
|
import awais.instagrabber.utils.TextUtils
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
data class HighlightModel(
|
data class HighlightModel(
|
||||||
@ -11,5 +11,5 @@ data class HighlightModel(
|
|||||||
val mediaCount: Int
|
val mediaCount: Int
|
||||||
) {
|
) {
|
||||||
val dateTime: String
|
val dateTime: String
|
||||||
get() = Utils.datetimeParser.format(Date(timestamp * 1000L))
|
get() = TextUtils.epochSecondToString(timestamp)
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ package awais.instagrabber.repositories.responses
|
|||||||
|
|
||||||
import awais.instagrabber.models.enums.MediaItemType
|
import awais.instagrabber.models.enums.MediaItemType
|
||||||
import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator
|
import awais.instagrabber.repositories.responses.feed.EndOfFeedDemarcator
|
||||||
import awais.instagrabber.utils.Utils
|
import awais.instagrabber.utils.TextUtils
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ data class Media(
|
|||||||
get() {
|
get() {
|
||||||
if (takenAt <= 0) return ""
|
if (takenAt <= 0) return ""
|
||||||
if (dateString != null) return dateString ?: ""
|
if (dateString != null) return dateString ?: ""
|
||||||
dateString = Utils.datetimeParser.format(Date(takenAt * 1000L))
|
dateString = TextUtils.epochSecondToString(takenAt)
|
||||||
return dateString ?: ""
|
return dateString ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import awais.instagrabber.utils.Utils;
|
import awais.instagrabber.utils.TextUtils;
|
||||||
|
|
||||||
public class NotificationArgs {
|
public class NotificationArgs {
|
||||||
private final String text;
|
private final String text;
|
||||||
@ -74,7 +74,7 @@ public class NotificationArgs {
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public String getDateTime() {
|
public String getDateTime() {
|
||||||
return Utils.datetimeParser.format(new Date(Math.round(timestamp * 1000)));
|
return TextUtils.epochSecondToString(Math.round(timestamp));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String cleanRichText(final String raw) {
|
private String cleanRichText(final String raw) {
|
||||||
|
@ -4,9 +4,15 @@ import android.content.Context
|
|||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
import android.util.Patterns
|
import android.util.Patterns
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
import java.time.Instant
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.ZoneId
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
object TextUtils {
|
object TextUtils {
|
||||||
|
var datetimeParser: DateTimeFormatter = DateTimeFormatter.ofPattern("")
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun isEmpty(charSequence: CharSequence?): Boolean {
|
fun isEmpty(charSequence: CharSequence?): Boolean {
|
||||||
if (charSequence == null || charSequence.length < 1) return true
|
if (charSequence == null || charSequence.length < 1) return true
|
||||||
@ -72,4 +78,25 @@ object TextUtils {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun setFormatter(datetimeParser: DateTimeFormatter) {
|
||||||
|
this.datetimeParser = datetimeParser
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun epochSecondToString(epochSecond: Long): String {
|
||||||
|
return LocalDateTime.ofInstant(
|
||||||
|
Instant.ofEpochSecond(epochSecond),
|
||||||
|
ZoneId.systemDefault()
|
||||||
|
).format(datetimeParser)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun nowToString(): String {
|
||||||
|
return LocalDateTime.ofInstant(
|
||||||
|
Instant.now(),
|
||||||
|
ZoneId.systemDefault()
|
||||||
|
).format(datetimeParser)
|
||||||
|
}
|
||||||
}
|
}
|
@ -53,7 +53,6 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -78,7 +77,6 @@ public final class Utils {
|
|||||||
public static final MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
|
public static final MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
|
||||||
public static final DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
|
public static final DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
|
||||||
public static ClipboardManager clipboardManager;
|
public static ClipboardManager clipboardManager;
|
||||||
public static SimpleDateFormat datetimeParser;
|
|
||||||
public static SimpleCache simpleCache;
|
public static SimpleCache simpleCache;
|
||||||
private static int statusBarHeight;
|
private static int statusBarHeight;
|
||||||
private static int actionBarHeight;
|
private static int actionBarHeight;
|
||||||
|
Loading…
Reference in New Issue
Block a user