replace moment with date-fns. make date be relative words

This commit is contained in:
w3irdrobot 2023-01-22 13:18:45 -05:00
parent 6dc7e815b9
commit 64786e5106
No known key found for this signature in database
GPG Key ID: 3F202DDAA711CD61
13 changed files with 38 additions and 37 deletions

View File

@ -3,18 +3,11 @@ import { Buffer as SafeBuffer } from 'safe-buffer'
import { randomBytes } from '@noble/hashes/utils'
import 'text-encoding-polyfill'
import 'react-native-gesture-handler'
import { LogBox, NativeModules } from 'react-native'
import moment from 'moment'
import 'moment/src/locale/en-gb'
import 'moment/src/locale/es'
import 'moment/src/locale/ru'
import { LogBox } from 'react-native'
global.Buffer = SafeBuffer
global.randomBytes = randomBytes
const deviceLocale = NativeModules.I18nManager.localeIdentifier?.split('_')[0] ?? 'en'
moment.locale([deviceLocale])
LogBox.ignoreAllLogs()
export default App

View File

@ -12,7 +12,7 @@ import { AppContext } from '../../Contexts/AppContext'
import { t } from 'i18next'
import { isContentWarning } from '../../Functions/RelayFunctions/Events'
import { Event } from '../../../lib/nostr/Events'
import moment from 'moment'
import { getUnixTime } from 'date-fns'
import { populateRelay } from '../../Functions/RelayFunctions'
import { searchRelays } from '../../Functions/DatabaseFunctions/Relays'
import TextContent from '../../Components/TextContent'
@ -114,7 +114,7 @@ export const NoteCard: React.FC<NoteCardProps> = ({
if (note) {
const event: Event = {
content: positive ? '+' : '-',
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Reaction,
pubkey: publicKey,
tags: [...(note.tags ?? []), ['e', note.id], ['p', note.pubkey]],

View File

@ -4,7 +4,7 @@ import { Text, useTheme } from 'react-native-paper'
import { getNip05Domain, usernamePubKey } from '../../Functions/RelayFunctions/Users'
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
import NostrosAvatar from '../NostrosAvatar'
import moment from 'moment'
import { fromUnixTime, formatDistance } from 'date-fns'
import { getNpub } from '../../lib/nostr/Nip19'
interface ProfileCardProps {
@ -31,7 +31,7 @@ export const ProfileData: React.FC<ProfileCardProps> = ({
const theme = useTheme()
const nPub = React.useMemo(() => (publicKey ? getNpub(publicKey) : ''), [publicKey])
const date = React.useMemo(
() => (timestamp ? moment.unix(timestamp).format('L HH:mm') : null),
() => (timestamp ? formatDistance(fromUnixTime(timestamp), new Date()) : null),
[timestamp],
)

View File

@ -5,7 +5,7 @@ import { ImageSourcePropType, Linking, StyleSheet, View } from 'react-native'
import { AppContext } from '../../Contexts/AppContext'
import { getUser, User } from '../../Functions/DatabaseFunctions/Users'
import { formatPubKey } from '../../Functions/RelayFunctions/Users'
import moment from 'moment'
import getUnixTime from 'date-fns/getUnixTime'
import { Card, Text, useTheme } from 'react-native-paper'
import { getLinkPreview } from 'link-preview-js'
import { getNip19Key, getNpub } from '../../lib/nostr/Nip19'
@ -113,7 +113,7 @@ export const TextContent: React.FC<TextContentProps> = ({
if (database) {
getUser(pudKey, database).then((user) => {
setLoadedUsers(moment().unix())
setLoadedUsers(getUnixTime(new Date()))
setUserNames((prev) => {
if (user?.name) prev[mentionIndex] = `@${user.name}`
return prev

View File

@ -1,4 +1,4 @@
import moment from 'moment'
import getUnixTime from 'date-fns/getUnixTime'
import { QuickSQLiteConnection } from 'react-native-quick-sqlite'
import RelayPool from '../../../lib/nostr/RelayPool/intex'
import { getUser, getUsers, User } from '../../DatabaseFunctions/Users'
@ -57,7 +57,7 @@ export const populatePets: (
if (results) {
const event: Event = {
content: '',
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: 3,
pubkey: publicKey,
tags: usersToTags(results),
@ -81,7 +81,7 @@ export const populateProfile: (
}
const event: Event = {
content: JSON.stringify(profile),
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: 0,
pubkey: publicKey,
tags: usersToTags([result]),

View File

@ -11,7 +11,7 @@ import {
import { getUser, User } from '../../Functions/DatabaseFunctions/Users'
import { useTranslation } from 'react-i18next'
import { username, usersToTags } from '../../Functions/RelayFunctions/Users'
import moment from 'moment'
import { getUnixTime, formatDistance, fromUnixTime } from 'date-fns'
import TextContent from '../../Components/TextContent'
import { encrypt, decrypt } from '../../lib/nostr/Nip04'
import {
@ -117,7 +117,7 @@ export const ConversationPage: React.FC<ConversationPageProps> = ({ route }) =>
if (input !== '' && otherPubKey && publicKey && privateKey) {
const event: Event = {
content: input,
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.EncryptedDirectMessage,
pubkey: publicKey,
tags: usersToTags([otherUser]),
@ -186,7 +186,7 @@ export const ConversationPage: React.FC<ConversationPageProps> = ({ route }) =>
/>
</View>
)}
<Text>{moment.unix(item.created_at).format('L HH:mm')}</Text>
<Text>{formatDistance(fromUnixTime(item.created_at), new Date())}</Text>
</View>
</View>
<TextContent content={item.content} />

View File

@ -24,12 +24,12 @@ import {
} from 'react-native-paper'
import { UserContext } from '../../Contexts/UserContext'
import { navigate } from '../../lib/Navigation'
import moment from 'moment'
import RBSheet from 'react-native-raw-bottom-sheet'
import { useTranslation } from 'react-i18next'
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
import { useFocusEffect } from '@react-navigation/native'
import ProfileData from '../../Components/ProfileData'
import { fromUnixTime, formatDistance } from 'date-fns'
export const ConversationsFeed: React.FC = () => {
const theme = useTheme()
@ -125,7 +125,7 @@ export const ConversationsFeed: React.FC = () => {
/>
<View style={styles.contactInfo}>
<View style={styles.contactDate}>
<Text>{moment.unix(item.created_at).format('L HH:mm')}</Text>
<Text>{formatDistance(fromUnixTime(item.created_at), new Date())}</Text>
{item.pubkey !== publicKey && !item.read && <Badge size={16}></Badge>}
</View>
</View>

View File

@ -6,7 +6,7 @@ import { useTranslation } from 'react-i18next'
import { UserContext } from '../../Contexts/UserContext'
import { getUser } from '../../Functions/DatabaseFunctions/Users'
import { Kind } from 'nostr-tools'
import moment from 'moment'
import getUnixTime from 'date-fns/getUnixTime'
import {
Avatar,
Button,
@ -81,7 +81,7 @@ export const ProfileConfigPage: React.FC = () => {
nip05: result?.nip05,
picture,
}),
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Metadata,
pubkey: publicKey,
tags: [],
@ -115,7 +115,7 @@ export const ProfileConfigPage: React.FC = () => {
lud06: result?.lnurl,
nip05,
}),
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Metadata,
pubkey: publicKey,
tags: [],
@ -149,7 +149,7 @@ export const ProfileConfigPage: React.FC = () => {
nip05: result?.nip05,
lud06: lnurl,
}),
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Metadata,
pubkey: publicKey,
tags: [],
@ -183,7 +183,7 @@ export const ProfileConfigPage: React.FC = () => {
name,
about,
}),
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Metadata,
pubkey: publicKey,
tags: [],

View File

@ -5,7 +5,7 @@ import { AppContext } from '../../Contexts/AppContext'
import { UserContext } from '../../Contexts/UserContext'
import { getUsers, User } from '../../Functions/DatabaseFunctions/Users'
import { useTranslation } from 'react-i18next'
import moment from 'moment'
import getUnixTime from 'date-fns/getUnixTime'
import { StyleSheet, View } from 'react-native'
import Logo from '../../Components/Logo'
import { Button, Text, useTheme } from 'react-native-paper'
@ -70,7 +70,7 @@ export const ProfileLoadPage: React.FC = () => {
{
kinds: [Kind.Text],
authors,
since: moment().unix() - 86400,
since: getUnixTime(new Date()) - 86400,
},
{
kinds: [Kind.Metadata],

View File

@ -4,7 +4,7 @@ import { AppContext } from '../../Contexts/AppContext'
import { Event } from '../../lib/nostr/Events'
import { useTranslation } from 'react-i18next'
import { RelayPoolContext } from '../../Contexts/RelayPoolContext'
import moment from 'moment'
import getUnixTime from 'date-fns/getUnixTime'
import { Note } from '../../Functions/DatabaseFunctions/Notes'
import { getETags, getTaggedPubKeys } from '../../Functions/RelayFunctions/Events'
import { getUsers, User } from '../../Functions/DatabaseFunctions/Users'
@ -100,7 +100,7 @@ export const SendPage: React.FC<SendPageProps> = ({ route }) => {
const event: Event = {
content: rawContent,
created_at: moment().unix(),
created_at: getUnixTime(new Date()),
kind: Kind.Text,
pubkey: publicKey,
tags,

View File

@ -4,12 +4,20 @@ import { NativeModules, Platform } from 'react-native'
import en from './Locales/en.json'
import es from './Locales/es.json'
import ru from './Locales/ru.json'
/* eslint-disable import/no-duplicates */
import setDefaultOptions from 'date-fns/setDefaultOptions'
import { enUS as dateEnUS, es as dateEs, ru as dateRu } from 'date-fns/locale'
/* eslint-enable import/no-duplicates */
const locale =
Platform.OS === 'ios'
? NativeModules.SettingsManager.settings.AppleLocale
: NativeModules.I18nManager.localeIdentifier
const dateLocales = { es: dateEs, ru: dateRu, en: dateEnUS }
const deviceLocale: string = locale?.split('_')[0] ?? 'en'
setDefaultOptions({ locale: dateLocales[deviceLocale] })
i18n.locale = locale
i18n.use(initReactI18next).init({
compatibilityJSON: 'v3',

View File

@ -25,12 +25,12 @@
"create-hash": "^1.2.0",
"crypto-browserify": "^3.12.0",
"cryptr": "^6.0.3",
"date-fns": "^2.29.3",
"events": "^3.3.0",
"i18next": "^22.4.9",
"link-preview-js": "^3.0.4",
"lnurl-pay": "^2.1.1",
"lodash.debounce": "^4.0.8",
"moment": "^2.29.4",
"nostr-tools": "^1.1.1",
"react": "18.1.0",
"react-i18next": "^12.1.4",

View File

@ -3356,6 +3356,11 @@ csstype@^3.0.2:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
date-fns@^2.29.3:
version "2.29.3"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
dayjs@^1.8.15:
version "1.11.6"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.6.tgz#2e79a226314ec3ec904e3ee1dd5a4f5e5b1c7afb"
@ -6437,11 +6442,6 @@ mkdirp@^0.5.1:
dependencies:
minimist "^1.2.6"
moment@^2.29.4:
version "2.29.4"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"