about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-22 12:02:31 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-22 12:02:31 -0600
commitc2a39d7c1f59ddc0625b49d423c15799b5eba61b (patch)
tree542fa3bf1b28aad0504651cfc5a818239504581a
parente858bb52de180645bba4f5ffa2f8bc0cfe8ad1fe (diff)
downloadvoidsky-c2a39d7c1f59ddc0625b49d423c15799b5eba61b.tar.zst
Refactor: create src/lib to reflect actual sharing of that code
-rw-r--r--__tests__/string-utils.ts2
-rw-r--r--src/lib/numbers.ts3
-rw-r--r--src/lib/strings.ts (renamed from src/view/lib/strings.ts)6
-rw-r--r--src/state/lib/api.ts2
-rw-r--r--src/state/models/feed-view.ts2
-rw-r--r--src/state/models/notifications-view.ts2
-rw-r--r--src/state/models/post.ts2
-rw-r--r--src/view/com/modals/CreateScene.tsx2
-rw-r--r--src/view/com/modals/EditProfile.tsx6
-rw-r--r--src/view/com/notifications/FeedItem.tsx2
-rw-r--r--src/view/com/post-thread/PostThreadItem.tsx2
-rw-r--r--src/view/com/profile/ProfileHeader.tsx2
-rw-r--r--src/view/com/util/DropdownBtn.tsx2
-rw-r--r--src/view/com/util/PostMeta.tsx2
-rw-r--r--src/view/screens/Login.tsx6
-rw-r--r--src/view/screens/PostDownvotedBy.tsx2
-rw-r--r--src/view/screens/PostRepostedBy.tsx2
-rw-r--r--src/view/screens/PostThread.tsx2
-rw-r--r--src/view/screens/PostUpvotedBy.tsx2
-rw-r--r--src/view/shell/mobile/TabsSelector.tsx2
-rw-r--r--src/view/shell/mobile/index.tsx1
21 files changed, 33 insertions, 21 deletions
diff --git a/__tests__/string-utils.ts b/__tests__/string-utils.ts
index 9e0cd1c3e..7e8eeb9a9 100644
--- a/__tests__/string-utils.ts
+++ b/__tests__/string-utils.ts
@@ -1,4 +1,4 @@
-import {extractEntities} from '../src/view/lib/strings'
+import {extractEntities} from '../src/lib/strings'
 
 describe('extractEntities', () => {
   const inputs = [
diff --git a/src/lib/numbers.ts b/src/lib/numbers.ts
new file mode 100644
index 000000000..fdf2cad85
--- /dev/null
+++ b/src/lib/numbers.ts
@@ -0,0 +1,3 @@
+export function clamp(v: number, min: number, max: number): number {
+  return Math.min(max, Math.max(min, v))
+}
diff --git a/src/view/lib/strings.ts b/src/lib/strings.ts
index 84ee07f37..8f2c3a3ea 100644
--- a/src/view/lib/strings.ts
+++ b/src/lib/strings.ts
@@ -1,6 +1,6 @@
-import {AtUri} from '../../third-party/uri'
-import {Entity} from '../../third-party/api/src/client/types/app/bsky/feed/post'
-import {PROD_SERVICE} from '../../state'
+import {AtUri} from '../third-party/uri'
+import {Entity} from '../third-party/api/src/client/types/app/bsky/feed/post'
+import {PROD_SERVICE} from '../state'
 
 export const MAX_DISPLAY_NAME = 64
 export const MAX_DESCRIPTION = 256
diff --git a/src/state/lib/api.ts b/src/state/lib/api.ts
index 5f147e01f..842905d1d 100644
--- a/src/state/lib/api.ts
+++ b/src/state/lib/api.ts
@@ -10,7 +10,7 @@ import * as Post from '../../third-party/api/src/client/types/app/bsky/feed/post
 import {AtUri} from '../../third-party/uri'
 import {APP_BSKY_GRAPH} from '../../third-party/api'
 import {RootStoreModel} from '../models/root-store'
-import {extractEntities} from '../../view/lib/strings'
+import {extractEntities} from '../../lib/strings'
 
 export function doPolyfill() {
   AtpApi.xrpc.fetch = fetchHandler
diff --git a/src/state/models/feed-view.ts b/src/state/models/feed-view.ts
index 2cd6b591c..202476fa3 100644
--- a/src/state/models/feed-view.ts
+++ b/src/state/models/feed-view.ts
@@ -4,7 +4,7 @@ import * as GetAuthorFeed from '../../third-party/api/src/client/types/app/bsky/
 import {AtUri} from '../../third-party/uri'
 import {RootStoreModel} from './root-store'
 import * as apilib from '../lib/api'
-import {cleanError} from '../../view/lib/strings'
+import {cleanError} from '../../lib/strings'
 
 export class FeedItemMyStateModel {
   repost?: string
diff --git a/src/state/models/notifications-view.ts b/src/state/models/notifications-view.ts
index 76617c6db..09189cfbb 100644
--- a/src/state/models/notifications-view.ts
+++ b/src/state/models/notifications-view.ts
@@ -4,7 +4,7 @@ import {RootStoreModel} from './root-store'
 import {Declaration} from './_common'
 import {hasProp} from '../lib/type-guards'
 import {APP_BSKY_GRAPH} from '../../third-party/api'
-import {cleanError} from '../../view/lib/strings'
+import {cleanError} from '../../lib/strings'
 
 const UNGROUPABLE_REASONS = ['trend', 'assertion']
 
diff --git a/src/state/models/post.ts b/src/state/models/post.ts
index 767182a93..c6dfaeacd 100644
--- a/src/state/models/post.ts
+++ b/src/state/models/post.ts
@@ -2,7 +2,7 @@ import {makeAutoObservable} from 'mobx'
 import * as Post from '../../third-party/api/src/client/types/app/bsky/feed/post'
 import {AtUri} from '../../third-party/uri'
 import {RootStoreModel} from './root-store'
-import {cleanError} from '../../view/lib/strings'
+import {cleanError} from '../../lib/strings'
 
 export type PostEntities = Post.Record['entities']
 export type PostReply = Post.Record['reply']
diff --git a/src/view/com/modals/CreateScene.tsx b/src/view/com/modals/CreateScene.tsx
index 3fb3ab6f8..445374623 100644
--- a/src/view/com/modals/CreateScene.tsx
+++ b/src/view/com/modals/CreateScene.tsx
@@ -18,7 +18,7 @@ import {
   enforceLen,
   MAX_DISPLAY_NAME,
   MAX_DESCRIPTION,
-} from '../../lib/strings'
+} from '../../../lib/strings'
 import {AppBskyActorCreateScene} from '../../../third-party/api/index'
 
 export const snapPoints = ['60%']
diff --git a/src/view/com/modals/EditProfile.tsx b/src/view/com/modals/EditProfile.tsx
index d4cb6692c..f739b0843 100644
--- a/src/view/com/modals/EditProfile.tsx
+++ b/src/view/com/modals/EditProfile.tsx
@@ -7,7 +7,11 @@ import {ErrorMessage} from '../util/ErrorMessage'
 import {useStores} from '../../../state'
 import {ProfileViewModel} from '../../../state/models/profile-view'
 import {s, colors, gradients} from '../../lib/styles'
-import {enforceLen, MAX_DISPLAY_NAME, MAX_DESCRIPTION} from '../../lib/strings'
+import {
+  enforceLen,
+  MAX_DISPLAY_NAME,
+  MAX_DESCRIPTION,
+} from '../../../lib/strings'
 import * as Profile from '../../../third-party/api/src/client/types/app/bsky/actor/profile'
 
 export const snapPoints = ['60%']
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx
index c3f2b1cfd..8741e4236 100644
--- a/src/view/com/notifications/FeedItem.tsx
+++ b/src/view/com/notifications/FeedItem.tsx
@@ -5,7 +5,7 @@ import {AtUri} from '../../../third-party/uri'
 import {FontAwesomeIcon, Props} from '@fortawesome/react-native-fontawesome'
 import {NotificationsViewItemModel} from '../../../state/models/notifications-view'
 import {s, colors} from '../../lib/styles'
-import {ago, pluralize} from '../../lib/strings'
+import {ago, pluralize} from '../../../lib/strings'
 import {UpIconSolid} from '../../lib/icons'
 import {UserAvatar} from '../util/UserAvatar'
 import {PostText} from '../post/PostText'
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index 83aac1010..cb439bc32 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -12,7 +12,7 @@ import {PostDropdownBtn} from '../util/DropdownBtn'
 import Toast from '../util/Toast'
 import {UserAvatar} from '../util/UserAvatar'
 import {s, colors} from '../../lib/styles'
-import {ago, pluralize} from '../../lib/strings'
+import {ago, pluralize} from '../../../lib/strings'
 import {useStores} from '../../../state'
 import {PostMeta} from '../util/PostMeta'
 import {PostCtrls} from '../util/PostCtrls'
diff --git a/src/view/com/profile/ProfileHeader.tsx b/src/view/com/profile/ProfileHeader.tsx
index ed8924964..5a31d5c54 100644
--- a/src/view/com/profile/ProfileHeader.tsx
+++ b/src/view/com/profile/ProfileHeader.tsx
@@ -17,7 +17,7 @@ import {
   EditProfileModel,
   InviteToSceneModel,
 } from '../../../state/models/shell-ui'
-import {pluralize} from '../../lib/strings'
+import {pluralize} from '../../../lib/strings'
 import {s, colors} from '../../lib/styles'
 import {getGradient} from '../../lib/asset-gen'
 import {MagnifyingGlassIcon} from '../../lib/icons'
diff --git a/src/view/com/util/DropdownBtn.tsx b/src/view/com/util/DropdownBtn.tsx
index 01c9259a2..ea4e19503 100644
--- a/src/view/com/util/DropdownBtn.tsx
+++ b/src/view/com/util/DropdownBtn.tsx
@@ -13,7 +13,7 @@ import {IconProp} from '@fortawesome/fontawesome-svg-core'
 import RootSiblings from 'react-native-root-siblings'
 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
 import {colors} from '../../lib/styles'
-import {toShareUrl} from '../../lib/strings'
+import {toShareUrl} from '../../../lib/strings'
 import {useStores} from '../../../state'
 import {ConfirmModel} from '../../../state/models/shell-ui'
 import {TABS_ENABLED} from '../../../build-flags'
diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx
index e89edec35..d158418e9 100644
--- a/src/view/com/util/PostMeta.tsx
+++ b/src/view/com/util/PostMeta.tsx
@@ -4,7 +4,7 @@ import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
 import {Link} from '../util/Link'
 import {PostDropdownBtn} from '../util/DropdownBtn'
 import {s} from '../../lib/styles'
-import {ago} from '../../lib/strings'
+import {ago} from '../../../lib/strings'
 
 interface PostMetaOpts {
   itemHref: string
diff --git a/src/view/screens/Login.tsx b/src/view/screens/Login.tsx
index aca587286..abd5274da 100644
--- a/src/view/screens/Login.tsx
+++ b/src/view/screens/Login.tsx
@@ -16,7 +16,11 @@ import * as EmailValidator from 'email-validator'
 import {observer} from 'mobx-react-lite'
 import {Picker} from '../com/util/Picker'
 import {s, colors} from '../lib/styles'
-import {makeValidHandle, createFullHandle, toNiceDomain} from '../lib/strings'
+import {
+  makeValidHandle,
+  createFullHandle,
+  toNiceDomain,
+} from '../../lib/strings'
 import {useStores, DEFAULT_SERVICE} from '../../state'
 import {ServiceDescription} from '../../state/models/session'
 import {ServerInputModel} from '../../state/models/shell-ui'
diff --git a/src/view/screens/PostDownvotedBy.tsx b/src/view/screens/PostDownvotedBy.tsx
index 4d9752799..b16ec5c0a 100644
--- a/src/view/screens/PostDownvotedBy.tsx
+++ b/src/view/screens/PostDownvotedBy.tsx
@@ -4,7 +4,7 @@ import {ViewHeader} from '../com/util/ViewHeader'
 import {PostVotedBy as PostLikedByComponent} from '../com/post-thread/PostVotedBy'
 import {ScreenParams} from '../routes'
 import {useStores} from '../../state'
-import {makeRecordUri} from '../lib/strings'
+import {makeRecordUri} from '../../lib/strings'
 
 export const PostDownvotedBy = ({navIdx, visible, params}: ScreenParams) => {
   const store = useStores()
diff --git a/src/view/screens/PostRepostedBy.tsx b/src/view/screens/PostRepostedBy.tsx
index 8e8346693..d8e4b910e 100644
--- a/src/view/screens/PostRepostedBy.tsx
+++ b/src/view/screens/PostRepostedBy.tsx
@@ -4,7 +4,7 @@ import {ViewHeader} from '../com/util/ViewHeader'
 import {PostRepostedBy as PostRepostedByComponent} from '../com/post-thread/PostRepostedBy'
 import {ScreenParams} from '../routes'
 import {useStores} from '../../state'
-import {makeRecordUri} from '../lib/strings'
+import {makeRecordUri} from '../../lib/strings'
 
 export const PostRepostedBy = ({navIdx, visible, params}: ScreenParams) => {
   const store = useStores()
diff --git a/src/view/screens/PostThread.tsx b/src/view/screens/PostThread.tsx
index 7db247a31..1e63ac390 100644
--- a/src/view/screens/PostThread.tsx
+++ b/src/view/screens/PostThread.tsx
@@ -1,6 +1,6 @@
 import React, {useEffect, useMemo, useState} from 'react'
 import {View} from 'react-native'
-import {makeRecordUri} from '../lib/strings'
+import {makeRecordUri} from '../../lib/strings'
 import {ViewHeader} from '../com/util/ViewHeader'
 import {PostThread as PostThreadComponent} from '../com/post-thread/PostThread'
 import {PostThreadViewModel} from '../../state/models/post-thread-view'
diff --git a/src/view/screens/PostUpvotedBy.tsx b/src/view/screens/PostUpvotedBy.tsx
index d87fa548d..2794d529a 100644
--- a/src/view/screens/PostUpvotedBy.tsx
+++ b/src/view/screens/PostUpvotedBy.tsx
@@ -4,7 +4,7 @@ import {ViewHeader} from '../com/util/ViewHeader'
 import {PostVotedBy as PostLikedByComponent} from '../com/post-thread/PostVotedBy'
 import {ScreenParams} from '../routes'
 import {useStores} from '../../state'
-import {makeRecordUri} from '../lib/strings'
+import {makeRecordUri} from '../../lib/strings'
 
 export const PostUpvotedBy = ({navIdx, visible, params}: ScreenParams) => {
   const store = useStores()
diff --git a/src/view/shell/mobile/TabsSelector.tsx b/src/view/shell/mobile/TabsSelector.tsx
index 4b246728f..be54cfc5b 100644
--- a/src/view/shell/mobile/TabsSelector.tsx
+++ b/src/view/shell/mobile/TabsSelector.tsx
@@ -21,7 +21,7 @@ import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
 import Swipeable from 'react-native-gesture-handler/Swipeable'
 import {useStores} from '../../../state'
 import {s, colors} from '../../lib/styles'
-import {toShareUrl} from '../../lib/strings'
+import {toShareUrl} from '../../../lib/strings'
 import {match} from '../../routes'
 
 const TAB_HEIGHT = 42
diff --git a/src/view/shell/mobile/index.tsx b/src/view/shell/mobile/index.tsx
index 1c148b18c..4c85d3b1a 100644
--- a/src/view/shell/mobile/index.tsx
+++ b/src/view/shell/mobile/index.tsx
@@ -37,6 +37,7 @@ import {MainMenu} from './MainMenu'
 import {TabsSelector} from './TabsSelector'
 import {Composer} from './Composer'
 import {s, colors} from '../../lib/styles'
+import {clamp} from '../../../lib/numbers'
 import {
   GridIcon,
   GridIconSolid,