Compare commits

...

2942 Commits

Author SHA1 Message Date
Eric Bailey 3498794777 If no content langs, use full exp 2025-04-08 14:40:17 -05:00
Eric Bailey 306a513a31 Bump package 2025-04-08 14:38:30 -05:00
Eric Bailey 41298228a1 Disable other queries if full experience is disabled 2025-04-08 14:29:18 -05:00
Eric Bailey 052ffcf1d9 Fall back to searching for users for non-english speakers 2025-04-08 14:24:04 -05:00
Eric Bailey f3d979b316 Only show suggested users for non-english users 2025-04-08 13:39:46 -05:00
pfrazee b9ed94c7f4 Nightly source-language update 2025-04-08 02:36:28 +00:00
Eric Bailey 872fcd1d20 Update patches (#8151)
* Update patches after #8133

* Bump deps

* Revert @react-native-picker/picker downgrade

* Migrate RN patch
2025-04-07 18:29:41 -07:00
Eric Bailey d496b5bdbf Add in new suggested accounts endpoint into FollowDialog (#8147)
* Add in new suggested accounts endpoint into FollowDialog

* Fix lint

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-04-07 18:29:04 -07:00
Eric Bailey 4879a07701 Rm sticky headers (#8154) 2025-04-07 17:41:20 -07:00
Eric Bailey 28876a4b23 Slice 'For You' results (#8152) 2025-04-07 17:40:31 -07:00
surfdude29 1e8a96e297 Align copy in Your interests toasts (#8138)
* update copy in toasts

* prettier
2025-04-07 18:42:29 -05:00
Eric Bailey 815a1e4c44 Center the selected tab in the sugg follows tabbar (#8146)
Co-authored-by: Hailey <me@haileyok.com>
2025-04-07 16:34:05 -07:00
Eric Bailey 4013855c10 [Explore] Small fixes (#8145)
* Hover on sugg account

* Add subtle hover to all components except feed

* Use skeleton states for refetch on focus

* Empty results state for sugg users

* Filter out pinned posts from feed previews

* Add trending header if not top module

* Tighten up spacing

* Fetch 10 profiles

* Update interests copy

* Remove refetch on focus

* Add PTR

* use a map

* Update src/screens/Search/modules/ExploreInterestsCard.tsx

* fix web double border

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-04-07 16:32:30 -07:00
Eric Bailey e46b78eb85 Remove unused index to fix lint (#8148) 2025-04-07 16:06:28 -07:00
pfrazee 94fd12ff49 Nightly source-language update 2025-04-05 02:35:03 +00:00
Paul Frazee a181b0b935 Rework the visual design of the interests card in explore (#8135) 2025-04-04 18:10:13 -07:00
Paul Frazee a301e31f76 Fix the 'seen' metric in explore (#8134) 2025-04-04 17:28:02 -07:00
Eric Bailey 502d660eb4 [Explore] Invalidate queries post-interests edit (#8128)
* Insert fresh interests and reset relevant queries

* reset suggested users

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-04-04 17:16:39 -07:00
Paul Frazee 6840fbb237 Update deps to support ios 18.4 (#8133) 2025-04-04 17:04:57 -07:00
Eric Bailey 0b08128e4a [Explore] Design tweaks (#8131)
* Fix interests card spacing

* Space out AvatarStack

* SP icon size

* Visual alignment of tab bar and headers

* Tweak spacing around search input

* Drop text size in sp card overflow count

* Tweak
2025-04-04 16:55:30 -07:00
Eric Bailey aca89d4aea [Explore] New suggested follows endpoint (#8130)
* Bump SDK

* Integrate new endpoint, add profile shadow, For You tab

* Format
2025-04-04 16:44:02 -07:00
Eric Bailey a0ff9b52aa [Explore] Add interests card (#8125)
* Add interests card to top of Explore

* Add tip to add interests if they have none or deselect

* Format

* Copy
2025-04-04 14:08:16 -05:00
Samuel Newman 5c59ec14c2 Match placeholder color with other skeletons (#8129) 2025-04-04 11:00:38 -07:00
Eric Bailey 94bc677ef5 Rename search to explore in titles and links (#8116)
* Rename search to explore in titles and links

* Conditionally use Explore
2025-04-04 08:30:12 -07:00
Eric Bailey 148bfa803d Content interests (#8114)
* Content prefs screen

* Handle debounce, rename

* Fix format

* Let's just use interests

* Reuse hook
2025-04-04 10:26:48 -05:00
Samuel Newman 0004e27427 [Explore] Add index to view metric (#8124)
* add index to view metric

* supply index

* always return a number
2025-04-04 08:24:26 -07:00
Samuel Newman ceb51c7e8f [Explore] Add flatlist perf-related props (#8120)
* Add flatlist perf-related props

* Make keys more unique

* Small gap

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-04-04 08:15:56 -07:00
Samuel Newman 22a7199436 remove use of sticky topBorder, add border to feed footer (#8121) 2025-04-04 17:30:46 +03:00
Samuel Newman fa08428428 [Explore] Moderate trending topic avis (#8123)
* moderate trending topic avis

* filter blurs too
2025-04-04 07:24:43 -07:00
Samuel Newman 93af013210 log views of starter packs header (#8118) 2025-04-04 07:15:59 -07:00
Samuel Newman a0c644acfe [Explore] Add shadow cache (#8119)
* enable shadowcache for feed previews

* extract keyextractor

* dedupe feeds
2025-04-04 07:15:40 -07:00
pfrazee a15658cb66 Nightly source-language update 2025-04-04 02:36:04 +00:00
Samuel Newman 898065d0a2 memoize each module individually (#8111) 2025-04-03 16:02:20 -05:00
Eric Bailey faa5f40c53 Wait for preferences before fetching trending data (#8109) 2025-04-03 13:32:35 -05:00
pfrazee b6185039f7 Nightly source-language update 2025-04-03 02:36:31 +00:00
Samuel Newman 87da619aaa [Explore] Base (#8053)
* migrate to #/screens

* rm unneeded import

* block drawer gesture on recent profiles

* rm recommendations (#8056)

* [Explore] Disable Trending videos (#8054)

* remove giant header

* disable

* [Explore] Dynamic module ordering (#8066)

* Dynamic module ordering

* [Explore] New headers, metrics (#8067)

* new sticky headers

* improve spacing between modules

* view metric on modules

* update metrics names

* [Explore] Suggested accounts module (#8072)

* use modern profile card, update load more

* add tab bar

* tabbed suggested accounts

* [Explore] Discover feeds module (#8073)

* cap number of feeds to 3

* change feed pin button

* Apply suggestions from code review

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* restore statsig to log events

* filter out followed profiles, make suer enough are loaded (#8090)

* [Explore] Trending topics (#8055)

* redesigned trending topics

* rm borders on web

* get post count / age / ranking from api

* spacing tweaks

* fetch more topics then slice

* use api data for avis/category

* rm top border

* Integrate new SDK, part out components

* Clean up

* Use status field

* Bump SDK

* Send up interests and langs

---------

Co-authored-by: Eric Bailey <git@esb.lol>

* Clean up module spacing and borders

(cherry picked from commit 63d19b6c2d67e226e0e14709b1047a1f88b3ce1c)
(cherry picked from commit 62d7d394ab1dc31b40b9c2cf59075adbf94737a1)

* Switch back border ordering

(cherry picked from commit 34e3789f8b410132c1390df3c2bb8257630ebdd9)

* [Explore] Starter Packs (#8095)

* Temp WIP

(cherry picked from commit 43b5d7b1e64b3adb1ed162262d0310e0bf026c18)

* New SP card

* Load state

* Revert change

* Cleanup

* Interests and caching

* Count total

* Format

* Caching

* [Explore] Feed previews module (#8075)

* wip new hook

* get fetching working, maybe

* get feed previews rendering!

* fix header height

* working pin button

* extract out FeedLink

* add loader

* only make preview:header sticky

* Fix headers

* Header tweaks

* Fix moderation filter

* Fix threading

---------

Co-authored-by: Eric Bailey <git@esb.lol>

* Space it out

* Fix query key

* Mock new endpoint, filter saved feeds

* Make sure we're pinning, lower cache time

* add news category

* Remove log

* Improve suggested accounts load state

* Integrate new app view endpoint

* fragment

* Update src/screens/Search/modules/ExploreTrendingTopics.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/Search/modules/ExploreTrendingTopics.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* lint

* maybe fix this

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Hailey <me@haileyok.com>
2025-04-02 17:21:15 -07:00
surfdude29 8d1f97b5ff Tweak copy to remove remaining uses of sign up (#7987)
* tweak copy in Deactivated.tsx

* tweak copy in Policies.tsx

* tweak comment in createNativeStackNavigatorWithAuth.tsx

* tweak copy in LoginForm.tsx

* tweak copy in StarterPackLandingScreen.tsx

* format

* Apply suggestions from code review

Co-authored-by: Hailey <hailey@blueskyweb.xyz>

* Update src/screens/StarterPack/StarterPackLandingScreen.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/StarterPack/StarterPackLandingScreen.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2025-04-02 16:22:06 -07:00
surfdude29 4a7fa07e87 Add plural formatting, translate and tweak some accessibility strings in composer (#7997)
* add plural formatting and translate accessibility strings

* tweak accessibility label and add comments for translators

* fix

* tweak comments

* make label conditionally plural

* rm stray bracket

* try to fix prettier

* nope

* lint

* more lint

* prettier

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-04-02 15:44:03 -07:00
Samuel Newman 0897a692da fix bg color (#8102) 2025-04-02 15:25:56 -07:00
surfdude29 c5900034a4 Simplify content warning dialog text (#7943)
* simplify content warning dialog text

* tweak copy

* Update src/view/com/composer/labels/LabelsBtn.tsx

Co-authored-by: Hailey <hailey@blueskyweb.xyz>

---------

Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2025-04-02 14:51:10 -07:00
aryiu 0874d9602a Update languages.ts (#7996) 2025-04-02 10:15:02 -05:00
pfrazee 1289707b17 Nightly source-language update 2025-04-02 02:36:32 +00:00
surfdude29 758cb731f0 Add plural formatting for alt text truncated string (#7994)
* add plural formatting in GifAltText.tsx

* add plural formatting in ImageAltTextDialog.tsx

* import Plural

* format
2025-04-01 16:09:53 -07:00
surfdude29 5130f932ed Make Posts and People tabs translatable for user lists (#7982)
* mark Posts and People as translatable in lists

* tweak labels
2025-04-01 16:01:44 -07:00
Minseo Lee 8dfdee80bb Reapply "Modify hosting provider text for better localization" (#7928)
* Update HostingProvider.tsx

* Update src/components/forms/HostingProvider.tsx

---------

Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2025-04-01 16:00:14 -07:00
surfdude29 df9909baa3 Translate number joined starter pack string and add plural formatting (#7984)
* translate number joined starter pack string

* also add plural formatting in StarterPackScreen.tsx

* import Plural

* tweak

* tweak
2025-04-01 15:59:53 -07:00
surfdude29 7a041da3a8 Add plural formatting for STARTER_PACK_MAX_SIZE toast (#8000)
* add plural formatting for starter pack max size toast

* tweak

* try again
2025-04-01 15:51:57 -07:00
surfdude29 ffbcbf814e add plural formatting for too long handle error (#7999) 2025-04-01 15:51:39 -07:00
surfdude29 98fe7edbc8 Add plural formatting for "too long" error messages when editing profile info (#7998)
* add plural formatting for profile max graphemes errors

* add missing tag

* simplify
2025-04-01 15:50:58 -07:00
Samuel Newman 5cb49314d0 [Reactions] Get reactions in chat list working again with new lexicon (#8093)
* get chat list reactions working again with new lexicon

* fix weird android bug where background wasn't clipped
2025-04-01 15:45:29 -07:00
Samuel Newman 318b29d3fd Fix loading jumps and footer on feeds tab (#8063)
* Fix loading jumps and footer on feeds tab

* same for lists/starter packs
2025-04-01 14:19:59 -07:00
Eric Bailey 4db3ccbec7 Fix suggested follows scrolling (#8036) 2025-04-01 11:33:31 -05:00
surfdude29 3d7fce563e add msg macro in EmojiPopup.android.tsx (#8091) 2025-04-01 09:36:46 -05:00
Samuel Newman fffcb609c6 fix warnings (#8092) 2025-04-01 17:27:40 +03:00
Samuel Newman 07d667dba8 Fix broken error screen in DMs (#8071) 2025-04-01 17:22:59 +03:00
pfrazee a9675b372e Nightly source-language update 2025-03-29 02:34:59 +00:00
Jason Culverhouse 036bbfbaf9 Remove double decode of URI (#8068)
At this point the URI is already decoded and decoding again will alter the uri 

```
      let link = req.query.u
```

example  of a link that has `%` encoding... the initial redirect link is properly encoded.

```
curl -vv "https://go.bsky.app/redirect?u=https%3A%2F%2Fsurf.social%2Ffeed%2Fsurf%252Fcustom%252F01jpz5vyjwvw5yaa8bfkha5xn4" 
```
The result is "double decoded", the proper link in this case should be `https://surf.social/feed/surf%2Fcustom%2F01jpz5vyjwvw5yaa8bfkha5xn4`

```
<html><head><meta http-equiv="refresh" content="0; URL='https://surf.social/feed/surf/custom/01jpz5vyjwvw5yaa8bfkha5xn4'" /><style>:root { color-scheme: light dark; }</style></head></html>
```

After changes:

```
curl -s "http://localhost:3000/redirect?u=https%3A%2F%2Fsurf.social%2Ffeed%2Fsurf%252Fcustom%252F01jpz5vyjwvw5yaa8bfkha5xn4"
<html><head><meta http-equiv="refresh" content="0; URL='https://surf.social/feed/surf%2Fcustom%2F01jpz5vyjwvw5yaa8bfkha5xn4'" /><style>:root { color-scheme: light dark; }</style></head></html>
```
2025-03-28 16:50:16 -07:00
Eric Bailey 7c124a8705 Preload emoji picker data for reactions on web (#8079)
* Preload emoji picker data for reactions on web

* Sort imports
2025-03-28 17:01:21 -05:00
Eric Bailey 78220e29d9 Put applied reactions inside context menu wrapper on native (#8078) 2025-03-28 16:56:32 -05:00
Eric Bailey c2d6fb82f3 Design tweaks to applied reactions (#8077)
* Adjust styles of applied reactions

* Tweaks for applied reactions styles
2025-03-28 16:38:41 -05:00
Eric Bailey a84ba121fa Some design tweaks to web emoji picker (#8076)
* Tighten up and reverse action items on web

* Tweak web styles for emoji bar

* Might as well make disabled more obvious

* Format
2025-03-28 16:38:24 -05:00
Samuel Newman 152bc3c1ec [DMs] Reactions - link up API (attempt 2) (#8074)
* update package

* wire up APIs

* get reactions to display

* allow removing emoji

* handle limits better

* listen to reactions in log

* update convo list with reactions

* tweaks to reaction display

* Handle empty message fallback case

* update package

* shift reacts up by 2px

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-03-28 07:34:07 -07:00
Samuel Newman 55a40c2436 [DMs] Emoji reaction picker (#8023) 2025-03-28 08:43:40 +02:00
pfrazee ac2c2a9a1d Nightly source-language update 2025-03-28 02:36:35 +00:00
Samuel Newman 5ceaee5793 Instrument signup (#8037) 2025-03-27 20:17:07 +02:00
Samuel Newman 7d1ebf6a02 Allow selecting ContextMenu options via press-and-hold (#8020)
* save locations of menu items

* enable panning to select items

* rm unused type

* fix haptic overfiring
2025-03-27 09:53:42 -07:00
Eric Bailey 1e688dee24 Make sure Sentry's auth token is set on process (#8040)
* Make sure Sentry's auth token is set on process

* Pass in token explicitly
2025-03-27 09:43:59 -05:00
Samuel Newman c265e0fb96 fix people list footer (#8039) 2025-03-27 10:18:02 +02:00
pfrazee 5dc4f0450c Nightly source-language update 2025-03-25 02:35:58 +00:00
Samuel Newman a48e64e72a make the sidebar smaller when offset, reduce total offset (#8052) 2025-03-24 22:23:27 +02:00
Samuel Newman 412b107420 Extract center column offset, reduce by 20px (#7974)
* extract offset, reduce by 20px

* move constant to `Layout/const.ts`
2025-03-24 12:55:05 -07:00
omar0404 1b8719293c fix:Conversations don't refresh when going offline and back online (#7985) 2025-03-24 12:45:43 -07:00
Samuel Newman dba6f4bb1f Revert "Small revert to be on the safe side (#7932)" (#7958)
This reverts commit 0014b8b9cd.
2025-03-24 12:11:13 -07:00
Bas van den Wollenberg 6a5770ee89 change touch device detection method (#5919) 2025-03-24 12:07:56 -07:00
Samuel Newman 7daf7a703e haptics on external link card (#8049) 2025-03-24 10:17:35 -07:00
pfrazee 6fcf97979b Nightly source-language update 2025-03-22 02:33:52 +00:00
Samuel Newman 951a8cff3c bump version to 1.100.0 (#8038) 2025-03-21 18:51:29 +02:00
Samuel Newman c4785ef96e New ContextMenu menu type for DM messages (#8014)
* get context menu somewhat working ish

* take screenshot rather than double rendering

* get animations somewhat working

* get transform animation working

* rm log

* upwards safe area

* get working on android

* get android working once and for all

* fix positioning on both platforms

* use dark blur on ios always, fix dark mode

* allow closing with hardware back press

* try and fix type error

* add note about ts-ignore

* round post

* add image capture error handling

* extract magic numbers

* set explicit embed width, rm top margin

* Message embed width tweaks

* Format

* fix position of embeds

* same as above for web

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-03-21 09:29:14 -07:00
Samuel Newman f6f253b4c9 Add eslint consistent type import rules (#8035)
* add eslint-plugin-import

* turn off eslint/no-usused-vars
2025-03-21 08:43:10 -07:00
pfrazee 3cfac98f95 Nightly source-language update 2025-03-21 02:35:41 +00:00
Hailey 52429b651f blink: use meta for redirect (#8031)
* try using meta

* color scheme

* revert test change

* escape
2025-03-20 15:08:54 -07:00
Hailey 0e658dbdfd blink: redirect on root route (#8029)
* make root route redirect to 301

* use config

* end

* add a comment
2025-03-20 14:50:15 -07:00
Samuel Newman d3c44ebc5b Fix post thread item hider line height crop (#8028) 2025-03-20 23:33:19 +02:00
pfrazee 950e2e5f74 Nightly source-language update 2025-03-20 02:34:32 +00:00
Samuel Newman 57d91373f7 rm bad ref in render usage (#8024) 2025-03-19 11:26:09 -07:00
pfrazee 6d8124c7ea Nightly source-language update 2025-03-18 02:35:37 +00:00
Hailey aa86a8619c remove from iab (#8017) 2025-03-17 15:13:34 -07:00
Hailey c612fca32a remove .parse usage (#8016)
* remove .parse usage

* add one more usage
2025-03-17 15:06:26 -07:00
Eric Bailey 4b7bda705e Don't poll for latest for Discover (#7993) 2025-03-17 12:18:59 -05:00
Paul Frazee 799205e6c2 Update i18n (#7992)
* Pull latest from crowdin

* Run intl:extract:all
2025-03-14 13:36:01 -07:00
Eric Bailey 5bff031e72 A few good metrics (#7897)
* Align dist and release tags on all platforms

* Upload web sourcemaps

* Debug code

* Send debug and error logging to Sentry

* Let .env do the work

* Try straight env

* Try copy in Dockerfile

* Ok ok ok

* Debug Dockerfile

* Proper setup

* See where we're at

* Reference var correctly

* Fall back to package version

* Verbose force env

* Should be working native builds

* Comments

* Remove unused deps

* Revert unneeded changes

* Remove debug code

* Clarify intent

* Remove deprecated files

* Add sentry vars to OTA

* Debug

* Revert "Debug"

This reverts commit 2d5857fb0fb0858ac3e2f98bc56bde913078d0a7.

* Use included CLI to upload native source maps post-OTA build

* Use included bin script

See https://github.com/getsentry/sentry-react-native/commit/0d87adb516b2a5ea61353e25098c31f9aeb7e503

* Bump sentry, update script

* Comment

* fix failing CI

* Pin sentry, update patch, update lock

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-03-14 12:08:19 -05:00
Eric Bailey 9cea7f0393 Fix missing RecordWithMedia media embed preview in notifications view (#7988) 2025-03-14 10:28:02 -05:00
Eric Bailey dcc8b35146 Add checks for invalid syntax post-i18n builds (#7935) 2025-03-14 10:27:45 -05:00
pfrazee cb54c9833e Nightly source-language update 2025-03-14 02:33:55 +00:00
Samuel Newman 1f1c1cfbcd Filter deleted convos from inbox (#7944)
* filter deleted convos from inbox

* fix logic
2025-03-13 08:50:26 -07:00
Samuel Newman 6cbd9fbc45 Fix lists tab appearing when user has a starterpack but no lists (#7952)
* Fix list tab showing up when no lists

* tweak code
2025-03-13 08:46:24 -07:00
Samuel Newman c7ba0e4f66 fix newskie dialog width (#7949) 2025-03-13 08:44:14 -07:00
surfdude29 4b94a8a8f2 fix typo (#7970) 2025-03-13 08:35:13 -07:00
Samuel Newman c402ae741f Restore hardcoded DIDs for Discover debug (#7977) 2025-03-13 16:59:21 +02:00
pfrazee b2a6281b36 Nightly source-language update 2025-03-13 02:35:07 +00:00
surfdude29 597e3c1abd tweak label (#7937) 2025-03-12 06:59:21 -07:00
omar0404 5e1c262edc fix: Account switcher shows outdated profile name (#7969) 2025-03-12 06:58:57 -07:00
pfrazee 810e85c073 Nightly source-language update 2025-03-12 02:34:05 +00:00
surfdude29 d16c80d928 Update VideoTooLargeError strings (#7923) 2025-03-12 00:56:40 +02:00
Samuel Newman e7212f9904 clean up logic for showing request buttons (#7964) 2025-03-11 13:12:49 -07:00
Hailey 490e381270 encode url (#7968) 2025-03-11 12:50:17 -07:00
Samuel Newman 26fb0a7f17 fix iframe transparency by unspecifying color-scheme (#7967) 2025-03-11 12:21:27 -07:00
Samuel Newman 94d7bc986f Fix color theme for embed (#7965)
* fix embed default theme

* use correct dataset string
2025-03-11 11:04:06 -07:00
Samuel Newman 8cb55adf8c fix submit behaviour (#7959) 2025-03-11 09:37:53 -07:00
Paul Frazee d155b718b5 Run intl:extract:all 2025-03-07 10:32:10 -08:00
Eric Bailey 166c56c4cb Fix translation def (#7934) 2025-03-07 12:07:04 -06:00
Paul Frazee 131578ca3a Run intl:pull 2025-03-07 08:41:50 -08:00
Eric Bailey 0014b8b9cd Small revert to be on the safe side (#7932)
* Revert "fix autocomplete (#7930)"

This reverts commit f06a78017a.

* Revert "#6861: Use available space to make focus on Composer TextInput easier (copy) (#7836)"

This reverts commit e40656128d.
2025-03-07 10:34:14 -06:00
Samuel Newman f06a78017a fix autocomplete (#7930) 2025-03-07 10:20:55 -06:00
Eric Bailey 27ae829698 Add plugin to bump gradle jvm heap size (#7922) 2025-03-06 20:21:54 -08:00
Paul Frazee ada2ac8b91 Release 1.99 prep (#7925)
* Revert #7847 (was causing layout issues)

* Test fixes

* Pull latest translations from crowdin

* Run intl:extract:all
2025-03-06 19:45:29 -08:00
Eric Bailey fd8ac1da7d Catch thrown error for autoplay in Safari (#7921) 2025-03-06 19:14:00 -08:00
pfrazee beb0fce56c Nightly source-language update 2025-03-07 02:34:14 +00:00
Samuel Newman ac43b666cb Fix text not wrapping in social proof (#7920)
* Fix text not wrapping in social proof

* fix web too

* add max_w_full atom
2025-03-06 15:54:40 -08:00
Hailey 618c4e4a56 add some metrics for labelers (#7747)
* add some metrics

* add label pref switch metric

* Update src/screens/Profile/Header/ProfileHeaderLabeler.tsx

* Use new logger.metric

* Fix conflicting types

* Remove duplicate toasts

* Move metric to try body

* Move metric to try body

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-03-06 14:20:48 -06:00
Samuel Newman 153fc17676 tweak ci (#7916) 2025-03-06 11:49:51 -08:00
Eric Bailey 8eb1f8f1fc Merge #7903 (#7917)
* Add missing msg macro calls for i18n (#7903)

* Add missing msg macro calls for i18n

* Update src/screens/Settings/AppIconSettings/useAppIconSets.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Apply surfdude29's suggestions from code review

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Format

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2025-03-06 12:14:58 -06:00
Seth Wood da2b6f4797 fixing moderation blur gap when replying via the thread feed (#7783) 2025-03-06 12:10:39 -06:00
Samuel Newman 1c16c6ef0a fix cancel button on search posts screen (#7912) 2025-03-06 10:06:13 -08:00
Minseo Lee a7db0bac6f Add context for toast messages (#7902)
* add context for toast

* add
2025-03-06 11:46:09 -06:00
Samuel Newman 29eef6188a Filter searchable people list by accepted (#7915) 2025-03-06 08:34:59 -08:00
pfrazee ba3cff62f1 Nightly source-language update 2025-03-06 02:33:59 +00:00
Eric Bailey 3be87fbf3b Add report dialog e2e tests (#7913) 2025-03-05 16:31:55 -08:00
Samuel Newman 9fde3957e7 ota helper in dev mode (#7911) 2025-03-05 16:01:17 -08:00
surfdude29 dae152da85 Add language: Esperanto (#7863)
* Create messages.po

* Update app.config.js

* Update lingui.config.js

* Update dates.ts

* Update helpers.ts

* Update i18n.ts

* Update i18n.web.ts

* Update languages.ts
2025-03-05 15:57:09 -08:00
surfdude29 a42efd15d7 Add language: Scottish Gaelic (#7864)
* Create messages.po

* Update app.config.js

* Update lingui.config.js

* Update dates.ts

* Update helpers.ts

* Update i18n.ts

* Update i18n.web.ts

* Update languages.ts
2025-03-05 15:56:13 -08:00
surfdude29 d0c2003cc7 Add language: Welsh (#7866)
* Create messages.po

* Update app.config.js

* Update lingui.config.js

* Update dates.ts

* Update helpers.ts

* Update i18n.ts

* Update i18n.web.ts

* Update languages.ts
2025-03-05 15:55:29 -08:00
Paul Frazee 1cfdd2a7a0 Merge branch 'main' of github.com:bluesky-social/social-app into main 2025-03-05 14:39:28 -08:00
Paul Frazee 663f16dfc2 Add initial test for post report flow 2025-03-05 14:39:20 -08:00
surfdude29 947c876fdb mark label for translation (#7908) 2025-03-05 14:32:29 -08:00
Samuel Newman a62fe855c3 skeletons for chat list (#7907) 2025-03-05 09:55:55 -08:00
Samuel Newman c5d9e282e5 fix layout shift in profile feed header (#7906) 2025-03-05 09:54:14 -08:00
Samuel Newman f5f02aa4b3 Add dark mode option to in-app embed snippet dialog (#7377)
* add color theme selection

* change chevron direction

* change chevron direction again

* rm unused ref
2025-03-05 09:50:20 -08:00
Samuel Newman 2d854091b9 enhance(embed): add ability to pin color mode (#7186)
* enhance(embed): add ability to pin color mode

* fix: Move color mode dropdown to the root section

* auto -> system

* style tweaks

* default to light theme

* try and fix eslint

* fix dropdown styles on other browsers

* rm unnecessary eslintrc change

* more explicit color mode select

* make light explicit

---------

Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
2025-03-05 09:24:59 -08:00
pfrazee 01a51c3275 Nightly source-language update 2025-03-05 02:33:32 +00:00
Hailey dda0db9963 use latest macos/xcode (#7893) 2025-03-04 09:24:07 -08:00
Samuel Newman 67c394bc82 Prioritise language codes with regions (#7731)
* prioritise chinese and portugese

* more language name cleanup

* skip ast to fix false positive
2025-03-04 06:03:11 -08:00
Samuel Newman c995eb2f2f DMs inbox (#7778)
* improve error screen

* add chat request prompt

* mock up inbox

* bigger button

* use two-button layout

* get inbox working somewhat

* fix type errors

* fetch both pages for badge

* don't include read convos in preview

* in-chat ui for non-accepted convos (part 1)

* add chatstatusinfo

* fix status info not disappearing

* get chat status info working

* change min item height

* move files around

* add updated sdk

* improve badge behaviour

* mock up mark all as read

* update sdk to 0.14.4

* hide chat status info if initiating convo

* fix unread count for deleted accounts

* add toasts after rejection

* add prompt to delete

* adjust badge on desktop

* requests -> chat requests

* fix height flicker

* add mark as read button to header

* add mark all as read APIs

* separate avatarstack into two components (#7845)

* fix messages being hidden behind chatstatusinfo

* show inbox preview on empty state

* fix empty state again

* Use new convo availability API (#7812)

* [Inbox] Accept button on convo screen (#7795)

* accept button on convo screen

* fix types

* fix type error

* improve spacing

* [DMs] Implement new log types (#7835)

* optimise badge state

* add read message log

* add isLogAcceptConvo

* mute/unmute convo logs

* use setqueriesdata

* always show label on button

* optimistically update badge

* change incorrect unread count change

* Update src/screens/Messages/Inbox.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/Messages/components/RequestButtons.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/Messages/components/RequestButtons.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/Messages/components/RequestListItem.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* fix race condition with accepting convo

* fix back button on web

* filter left convos from badge

* update atproto to fix CI

* Add accept override external to convo (#7891)

* Add accept override external to convo

* rm log

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2025-03-04 05:54:19 -08:00
Samuel Newman 5c14f69566 Modernize search page (take 2) (#7642) 2025-03-04 10:12:34 +00:00
pfrazee 66c09d9953 Nightly source-language update 2025-03-04 02:33:23 +00:00
Samuel Newman c82f768374 fix progress guide location breakpoints (#7887) 2025-03-03 18:57:47 -06:00
Samuel Newman 7222d6fe52 init log using getLog (#7886) 2025-03-03 15:41:13 -08:00
pfrazee 8b6dde17fd Nightly source-language update 2025-03-02 02:34:39 +00:00
Eric Bailey 07dd57d1ea Add metrics to reporting flow (#7871)
* Add metrics to reporting flow

* Remove vestigial state
2025-03-01 13:34:12 -06:00
pfrazee 1c582c59f0 Nightly source-language update 2025-03-01 02:34:56 +00:00
Eric Bailey 84fcbe398b Fix missed logger tests (#7872) 2025-02-28 18:25:49 -06:00
Eric Bailey 3be9dde92d New reporting flow (#7832)
* Add option to align web dialogs to top

* Add new wait util

* Pipe through feed view to feed components

* Reset unneeded change to main

* Copy over fresh report dialog based on old

* Hack in temp testing data

* Swap in new dialog in all cases but chat

* Cleanup

* Add load and initial error state

* Fill in states

* Add copyright link

* Handle single labeler case

* Comment out debug code

* Improve centering of type in circles

* Open details if Other is selected

* Remove debug code

* Tweak colors

* Bump SDK

* Tweak Admonition for better x-platform styles

* Add retry button

* Add close button

* Remove todo not covered in this PR

* Translate Retry
2025-02-28 17:14:02 -06:00
Eric Bailey 96f4f6359a Logger metrics (#7867)
* Adjust datalake abstraction

(cherry picked from commit 8ba6a8d45b1bd5698afbd06d9e858a91789f0ea6)

* Just be really really specific

(cherry picked from commit 920198959659329a7f7f7282a1293aaad198d8e3)

* Add metric method to logger, replace datalake calls with new method

(cherry picked from commit 7a026bbeae75514b64f928d7ff59707c518fd5e5)

* Clarify types

(cherry picked from commit 422b150deb158a70ef37e8a456d91bf26cd0b1bc)
2025-02-28 17:13:49 -06:00
Samuel Newman 9e59a2eef2 Fix starter pack layout (#7869) 2025-02-28 14:50:44 -08:00
bnewbold 462708e207 bskyweb: add robots disallow and 'canonical' config flags (#4760) 2025-02-28 16:09:48 -05:00
Eric Bailey 36a7a8d8c6 Colocate bitdrift in logger, use logger for transport (#7868)
* Colocate bitdrift in logger, use logger for transport

(cherry picked from commit cdd6941fd7)

* Fix mocks, format

(cherry picked from commit 9de88660c6)

* Ok I guess mocks dir doesn't work

(cherry picked from commit 9f37e52011)
2025-02-28 12:46:27 -06:00
Eric Bailey 7c36ea1158 Logger improvements (#7729)
* Remove enablement

* Refactor context and filtering

* Fix imports, simplify transports config

* Migrate usages of debug context

* Re-org, add colors and grouping to console logging

* Remove temp default context

* Remove manual prefix

* Move colorizing out of console transport body

* Reduce reuse

* Pass through context

* Ensure bitdrift is enabled in dev

* Enable Sentry on web only

* Clean up types

* Docs

* Format

* Update tests

* Clean up tests

* No positional args

* Revert Sentry changes

* Clean up context, use it, pass metadata through to Bitdrift

* Fix up debugging

* Clean up metadata before passing to Bitdrift

* Correct transports

* Reserve context prop on metadata and include in transports

* Update tests
2025-02-28 12:09:36 -06:00
surfdude29 9e9ffd5c6e fix label (#7856) 2025-02-28 09:49:01 -08:00
pfrazee 3f963cfed7 Nightly source-language update 2025-02-28 02:33:23 +00:00
Hailey a2b71e3a4b tweak link handling (#7857) 2025-02-27 13:18:30 -08:00
pfrazee a3d36393a1 Nightly source-language update 2025-02-27 02:33:08 +00:00
surfdude29 b996b304c3 Tweak accessibility label and add translation comment (#7843)
* make label clearer

* add translation comment
2025-02-26 07:36:53 -08:00
Minseo Lee ec75cbc01f Modify hosting provider text for better localization (#7847)
* Update HostingProvider.tsx

* Update src/components/forms/HostingProvider.tsx

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-02-26 07:36:31 -08:00
Seth Wood b924c53b23 Fix for avatar preloading (#7816)
* mobile avatar profile preloading fix

* updating fix to include moderation

* removing comments, adding disableNavigation to PreviewableUserAvatarProps
2025-02-26 07:33:27 -08:00
Samuel Newman c5b831d5d8 Bump version (#7846) 2025-02-26 06:24:19 -08:00
pfrazee 3795d85591 Nightly source-language update 2025-02-26 02:32:31 +00:00
Samuel Newman 7dc8ba8e4e label pref alignment (#7844) 2025-02-25 19:50:01 -06:00
Samuel Newman 22aee9704c improve toasts on oled dark mode (#7842) 2025-02-25 11:12:38 -08:00
Samuel Newman 3409a72548 Add soft reset to chat list (#7771)
* add soft reset to chat list

* refresh when soft resetting
2025-02-25 10:27:11 -08:00
surfdude29 595a894551 translate hosting provider text (#7834) 2025-02-25 09:54:20 -08:00
Samuel Newman 0d1373bb71 Remove moderatePost_wrapped (#7188)
* rm `moderatePost_wrapped`

* Handle display in app

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-02-25 11:21:00 -06:00
Samuel Newman cc8369e868 Better tablet layout (#7656)
* better tablet layout

* adjust left nav spacing

* add right nav to pwi

* clearer logic

* fix a couple screens that don't need the tablet layout

* fix horiz scroll bar

* fix double trending

* fix ts-ignore

* fix labeller screen

* don't offset things within dialogs

* fix load latest button (and add scale animation)

* center loader on home screen

* adjust break points

* adjust left nav spacing

* fix load latest btn (again)

* add lang select to right nav if left nav is minimal

* fix double scrollbar on tiny screens

* fix scrollbar

* fix type errors
2025-02-25 09:20:37 -08:00
Eric Bailey 0437838649 Fix max height of dialog flatlists (#7839)
* Fix max height of dialog flatlists

* Remove unneeded wrapper to fix Close positioning

* Add wrapper back and fix with position static
2025-02-25 11:12:56 -06:00
Samuel Newman 23f0092440 hackfix likes tab (#7770) 2025-02-25 09:02:08 -08:00
Samuel Newman 9c5d92088d Constrain dropdown height to fit in the screen (#7730)
* constrain dropdown height with css variable

* fix duplicated dependency

* fix pendantic lockfile
2025-02-25 08:08:30 -08:00
Samuel Newman e40656128d #6861: Use available space to make focus on Composer TextInput easier (copy) (#7836)
* 6861: Use available space to make focus on Composer TextInput easier

* Undo web

* bluesky-social#6861: Adjust focus area for native platforms taking Embeds into consideration

* use atoms

* remove empty div

* remove debug atom, whoopsie

---------

Co-authored-by: GrizliK1988 <dgrachikov@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-02-25 08:07:45 -08:00
pfrazee d76cd88d91 Nightly source-language update 2025-02-25 02:32:46 +00:00
Samuel Newman 6254cf020a Dedupe profile labels (#7833)
* dedupe labels

* apply to postalerts
2025-02-24 14:17:59 -08:00
Hailey 61a14043e5 add to blink (#7788) 2025-02-24 13:59:57 -08:00
surfdude29 3fc4c32ac6 Plural formatting for accessibility unread items strings (#7743) 2025-02-24 13:11:01 -08:00
surfdude29 a383b9ba28 Plural formatting for TimeIndicator accessibilityLabel (#7826) 2025-02-24 13:10:53 -08:00
surfdude29 bf4d3e89c2 Add plural formatting for months in narrow form (#7744) 2025-02-24 13:10:40 -08:00
surfdude29 1fd3af3c46 Tweak app language string in Settings (#7825) 2025-02-24 13:10:00 -08:00
surfdude29 3f879f0315 Tweak prompt title text when removing a feed (#7824) 2025-02-24 13:04:01 -08:00
Samuel Newman 7c14b54ab2 Fix DMs input automatically accepting autocomplete suggestion instead of clearing (#7796)
* fix input not clearing when autocomplete suggestion active

* fix up storybook

* restore web focus hack
2025-02-24 13:03:01 -08:00
surfdude29 9c739912a3 Tweak accessibility strings (#7822) 2025-02-24 12:59:55 -08:00
surfdude29 c4dec63960 Suggested updates to localization doc (#7828)
* update localization doc

* tweak wording order

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-02-24 12:52:39 -08:00
surfdude29 a7e1913e22 move translation tags (#7823) 2025-02-24 12:49:26 -08:00
surfdude29 a1699da1a9 separate strings for translation in ListHiddenScreen.tsx (#7827) 2025-02-24 12:48:42 -08:00
Samuel Newman ae9176c9c2 Basic minimum password requirements, plus field-specific errors (#7811)
* add min password requirement

* add field specific errors

* move email tld check to after other email checks

* add password length check to change password dialog

* Update src/view/com/modals/ChangePassword.tsx

Co-authored-by: Hailey <me@haileyok.com>

* Update src/screens/Signup/StepInfo/index.tsx

Co-authored-by: Hailey <me@haileyok.com>

* fix lint

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-02-24 12:44:21 -08:00
Samuel Newman 3d954a00e0 precache recent profile click (#7831) 2025-02-24 12:39:41 -08:00
Samuel Newman f9392d4a96 Fix optimistic rendering of profile page (#7830)
* don't hold up rendering on starter packs

* add tab based on profile.associated

* move query into component, fix pending states
2025-02-24 11:50:52 -08:00
Paul Frazee bdcddee7a5 Update localization.md to change crowdin links 2025-02-24 08:06:15 -08:00
pfrazee 5c3576dee7 Nightly source-language update 2025-02-24 02:33:53 +00:00
gpp 7a3a1a2bd0 make composer pills tappable when keyboard is active (#7717) 2025-02-23 05:19:58 -08:00
pfrazee e6193d7036 Nightly source-language update 2025-02-22 02:28:50 +00:00
Nicolas Borlet cb85768e9c fix: click on our profile when seeing someone's profile (#7732)
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: Hailey <me@haileyok.com>
2025-02-21 11:39:57 -08:00
Samuel Newman ca7116ec3b connect inputs together in signup (#7809) 2025-02-21 11:25:42 -08:00
Samuel Newman 80e59d31d0 npx update-browserslist-db@latest (#7677) 2025-02-21 11:13:21 -08:00
Samuel Newman ca70aacb8a Mute account from post (#7712)
* mute account from post

* move options around
2025-02-21 11:12:51 -08:00
Samuel Newman e6bfeb1bab Fix android datepicker height (#7804)
* fix datepicker height

* fix suffixtext clipping
2025-02-21 11:10:51 -08:00
Samuel Newman 3b4f1e91e3 consistent sentence case captialisation (#7749) 2025-02-21 11:10:33 -08:00
Samuel Newman fff625167f set minimum birthday to 13 years ago (#7808) 2025-02-21 10:59:27 -08:00
Samuel Newman 5d30111b78 Get sheet padding working consistently (#7798)
* tweak height/padding of iOS

* tweak android ratio calculation

* add a bit of extra padding to full height iOS to account for the bit below the safe area
2025-02-21 10:59:08 -08:00
Samuel Newman 798bf47827 fix handle length error message (#7802) 2025-02-21 08:42:21 -08:00
Paul Frazee b0f7f51b04 Set branch to main on crowdin nightly push 2025-02-20 22:15:11 -08:00
Paul Frazee ea9f2dfbdd Fix bad indent 2025-02-20 22:02:26 -08:00
Paul Frazee 1fda7d0553 Add crowdin nightly push (#7799)
* Update crowdin.yml to point to new enterprise endpoint

* Update nightly crowdin action to push source strings to crowdin
2025-02-20 22:00:32 -08:00
pfrazee 7ff65df417 Nightly source-language update 2025-02-20 02:28:35 +00:00
bnewbold f8f88878dc makefile: bump nvm to use node 20 (#7324) 2025-02-19 16:12:51 -08:00
Paul Frazee 8f63cb86b1 Update intl:build to extract for all languages (#7787) 2025-02-19 12:52:58 -08:00
Samuel Newman ed4add7072 improve car dialog styles (#7786) 2025-02-19 12:35:33 -08:00
pfrazee 48fd397d46 Nightly source-language update 2025-02-19 02:28:13 +00:00
Eric Bailey f23a621c7e Remove shadowed follow gate handling (#7774) 2025-02-18 17:25:59 -06:00
Eric Bailey da45c42b6f [APP-1049] show label expiration in frontend (#7738)
* Add support for label exp to LabelsOnMeDialog

* Add exp to PostAlerts, align with LabelsOnMe UI

* Bump weight

* Improve translations

* Expiry should round up

* Add a little visual alignment hack
2025-02-18 09:45:46 -06:00
Eric Bailey 63ba0a436b [APP-1054] Add option to align web dialogs to top (#7760)
* Add option to align web dialogs to top

* Format

* Align all dialogs to top, with relative spacing on larger screens for better balance
2025-02-18 09:45:37 -06:00
Eric Bailey a51fc8e434 @atproto/api@next integration (#7344)
* Bump SDK

* Use consistent type in profile query

* Omit  from constraint for profile shadow

* Replace isRecord with isValidRecord in QuoteEmbed

* Omit type from constraint for old ProfileCard

* Omit type from constraint in profile queries where appropriate

* Use correct type for update profile mutation

* Conslidate and fix check for isValidRecord in Post.tsx

* Replace isRecord with isValidRecord in PostThreadItem

* Remove redundant cast in PostThreadFollowBtn

* Ignore errors in DebugMod screen

* Use matching type in ProfileFollows screen

* Use matching type in ProfileFollowers screen

* Migrate to isValidRecord in PostFeedItem

* Use matching type if PostRepostedBy

* Omit type from constraint in avatar props

* Use matching types in NotificationFeedItem

* Todo

* Use isValidRecord in NotfyFeedItem

* Improve MediaPreview types

* Migrate another isValidRecord in NotificationFeedItem

* Migrate to isValidView in queries/util

* Migrate to isValidRecord in threadgate/util

* Fix types in threadgates

* Fix up types in starter-packs queries

* Todo

* Specify exact types in search-posts

* Use internal type util to align types

* Ditto last

* Migrate postgate/index

* Specify exact types in post-thread

* Use correct type in post-quotes

* FIX potential bug in post-thread

* Use correct type in post-feed

* Add correct type guards to notifications/feed

* Migrate a guard in notifications/util

* Migrate guard in Wizard/State

* [@next] Profile handling, migrate `ProfileCard` (#7347)

* Introduce new utils for profiles, migrate old ProfileCard

* Rename, reorg

* Add parseEmbed utils

* Expand AnyProfileView to include chat profile view, update post shadow to reflect this

* Cast for perf reasons

* Tighten up types now that we have AnyProfileView

* Add fastIsType util

* Use `assertDid`

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use util types

* Comment

* Use fastIsType where no validation was happening before

* suggestions (#7382)

* suggestions

* Revert unneeded changes

---------

Co-authored-by: Eric Bailey <git@esb.lol>

* Use new util

* Rename to dangerousIsType

* Convert object shape

* Use dangerous util

* Use dangerous util

* Use dangerous util, we can trust post records

* Use dangerous util

* Use AnyProfileVIew

* Convert object shape

* Clean up handling

* Patch moderateProfile to accept known profile views, to discuss

* Add AnyStarterPackView and related, implement in first usage

* Remove validation, fix type, fix ref

* Migrate over list-conversations

* Clarify intent behind precacheProfile and its unstable query cache

* Clean up unstable profile cache

* Fix types during label creation in PwiOptOut (#7346)

* Tighten types in queries/list

* Chat: use correct profile views

* Chat: fix log type check

* Chat: construct lexically correct shape, even though it's only internal usage

* Chat: use correct profile types

* Chat: fix type check in logs

* Starter: use correct profile types

* Starter: use correct profile types

* Starter: tighten types to match lex

* Any profile type will work in blocked-and-muted

* Use dangerous util

* Use dangerousIsType

* Update new ProfileCard to use AnyProfileView

* Use dangerousIsType

* Remove outdated todo

* Use correct profile type

* Use correct profile types

* Tighten up types

* Use dangerousIsType

* Chat: more type fixes

* Remove unused file

* Add a few  utils

* Remove unused file

* Ignore feedPost.__source

* Clean up types, leave validation in critical path

* Use dangerousIstype

* Use ANyProfileView

* Use isValidRecord

* Use dangerousIsType

* Fix types in ListCard

* Fix FeedInterstitials types

* Fix types in FeedCard

* Fix types in dms ReportDialog

* Fix types in SearchablePeopleList

* Fix bad type in composer opts

* Starter: ok these need to be loose too

* Clarify docs

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Less code

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use package exports

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use package exports

* Bump sdk, update $Typed imports

* Format

* Format

* Fix weird TS error

* Remove patch

* Beter name

* It's memo, can validate

* Tighten up parseEmbed, dogfood

* Bump sdk

* Use asPredicate

* Loosen types a bit

* use asPredicate

* Fix types

* Use asPredicate

* Use asPredicate

* Use asPredicate

* Clean up upsertProfile types

* Use asPredicate

* Use Un util

* Fix types

* Use new AnyProfileView

* Use dangerousIsType

* Use asPredicate

* Use asPredicate

* Add fallback content-type to pass typecheck

* Clean up upsertProfile types

* Align types

* Use dangerousIsType

* Use dangerousIsType

* Use asPredicate

* Align types

* Convert findLast

* Align types

* Just ignore type errors and use findLast

* Rename atproto -> bsky

* Add validate util

* Fix type error

* Loosen types

* Export post

* rename atp bsky

* Remove unused code

* minor changes

* Bump deps

* Fix types

* Tighten back up loose check

* Tighten back up loose check

* Fix small bug

* Update comment

* Revert change

---------

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>
Co-authored-by: Matthieu Sieben <matthieu.sieben@gmail.com>
2025-02-18 08:54:25 -06:00
Paul Frazee e2c0f78719 Fix mapping (#7767) 2025-02-17 19:55:40 -08:00
Paul Frazee 4146f9fe02 Update i18n release process to solve missing translations (#7766)
* Update release process to avoid untranslated strings

* Run intl:extract:all
2025-02-17 19:52:17 -08:00
pfrazee a28791680f Nightly source-language update 2025-02-18 02:27:08 +00:00
Minseo Lee d805dec08f Fix "log in", "log out" to "sign in", "sign out" (#7739)
* log to sign

* logged to signed
2025-02-17 10:52:06 -06:00
Marc Rousavy 326445d3af Make Android app start faster by disabling JS bundle compression (#7751)
* perf: Disable Android  compression to speed up app startup

* fix: Fix the gradle plugin
2025-02-17 07:31:40 -08:00
pfrazee 40d05ac866 Nightly source-language update 2025-02-15 02:26:52 +00:00
Paul Frazee cb862bffea Update tests 2025-02-14 18:19:47 -08:00
Samuel Newman 1e3b7feccf Screen for searching user's posts (#7622)
* search user's posts screen

* custom placeholder copy if self

* navigate to /profile/:handle

* add name to title

* show header on desktop
2025-02-14 23:22:32 +00:00
Paul Frazee ab4be7a9e1 Add translations missed in last PR (#7748) 2025-02-14 13:06:48 -08:00
Paul Frazee a154459b8f 1.98 release: Pull latest from crowdin (#7746) 2025-02-14 12:03:45 -08:00
Samuel Newman d793abf8cd [Instrumentation] Signin (#7742)
* first pass at instrumenting login

* round time taken
2025-02-14 19:52:53 +00:00
Samuel Newman 11616846ca Reenable router events (#7735)
* reenable router events

* remove  field
2025-02-14 19:50:08 +00:00
pfrazee a14704ddfe Nightly source-language update 2025-02-14 02:28:00 +00:00
Eric Bailey 22a902e0de Bitdrift integration (#7728)
* update bitdrift to 0.6.7 and enable iOS network integration (#7575)

* update bitdrift to 0.6.5 and enable iOS network integration

* Update src/lib/bitdrift.ts

Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>

* update to 0.6.7

---------

Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>

* deps: Bump bitdrift to 0.6.8, fixes iOS network instrumentation bug (#7725)

Co-authored-by: Eric Bailey <git@esb.lol>

* Add stable ID copy, add todo

* Nits

* Temp enable

* Temp debug

* Revert some debug

* Revert unnecessary change

* Use new gates

* Add anon ID to version string

---------

Co-authored-by: Snow Pettersen <snowp@lyft.com>
Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>
2025-02-13 15:59:30 -06:00
Eric Bailey 99051f0ab1 Use effective filtering for feeds (#7736) 2025-02-13 15:57:55 -06:00
Minseo Lee f45f9afab7 Update PostInteractionSettingsDialog.tsx (#7726) 2025-02-13 14:48:44 -06:00
Samuel Newman a3f79cc714 Revert "fix quote & feed padding not being pressable (#7694)" (#7733)
This reverts commit 521a764d4f.
2025-02-13 14:56:12 +00:00
pfrazee ae8ddc2c41 Nightly source-language update 2025-02-13 02:27:57 +00:00
Tom Sherman d56efe250e Add dev mode for easy copying of at:// URIs and DIDs (#7723)
* Add dev mode for easy copying at:// URIs and DIDs

* Use storage API

* Share text instead of URL

* Cleanup persisted schema

* Change translation msg
2025-02-13 01:11:13 +00:00
Samuel Newman db25f95c33 Improved search language select (#7591)
* replace with Menu

* new icon for native

* hackfix radix dropdown height

* fix jsx

* reduce language names with lots of variants to what firefox returns from Intl.DisplayNames

* more language label simplifications

* add collision padding

* adjust spacing around and left align title
2025-02-13 00:00:45 +00:00
Samuel Newman b37199a5a0 Improved search page (#7590)
* search input revamp

* fix web

* rm "useThemeNew"

* fix overlap during transition

* animate header properly

* reduce gap

* animate cancel button in

* don't move search bar when focused

* remove cancel button animation
2025-02-12 22:48:29 +00:00
Samuel Newman 1a3ecdf6ec Animate drawer menu on mobile web (#7711)
* slide in/out drawer

* increase width slightly

* exponential easing function
2025-02-12 21:51:16 +00:00
Samuel Newman 66f5e3a833 Special treatment for recommended starter packs (#7706)
* special treatment for recommended starter packs

* update subtitle when SPs in recommended

* fix item height
2025-02-12 21:34:21 +00:00
Samuel Newman 5a865a504c invert new postonboarding gate (#7695) 2025-02-12 21:33:24 +00:00
Samuel Newman ff2a82d358 Animate dropdown menus (#7704)
* animate dropdowns

* rm unused animation
2025-02-12 21:20:08 +00:00
Samuel Newman 5d3e2e1467 Better animations for dialogs, animate web composer (#7703)
* animation atoms, use for modals

* respect reduced motion

* simplify animtions

* fix atoms
2025-02-12 21:18:26 +00:00
Samuel Newman 521a764d4f fix quote & feed padding not being pressable (#7694) 2025-02-12 19:17:58 +00:00
Samuel Newman 7d694f605a ungate trending (#7696) 2025-02-12 16:00:56 +00:00
Samuel Newman 0d1d0d8fbb run prettier (#7727) 2025-02-12 15:38:04 +00:00
pfrazee 1ffdd668dc Nightly source-language update 2025-02-11 22:26:28 +00:00
Paul Frazee 94e35ee3ea Add deploy key to nightly commit (#7722) 2025-02-11 14:22:59 -08:00
Eric Bailey 459611ca7a [APP-1031] Add new followerRule to threadgate settings (#7681)
* Add new followerRule to threadgate settings

* Handle WhoCanReply copy

* Handle follow case

* fix ci

* Revert "Handle follow case"

This reverts commit bc454dad89.

* Hide Follow button if followedBy rule enabled

* Revert "Revert "Handle follow case""

This reverts commit cadc46d2dc.

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-02-11 14:07:10 -08:00
Paul Frazee 03f75e8ff4 Fix bug in GH action nightly-update-source-languages.yaml 2025-02-11 13:52:28 -08:00
Paul Frazee 3ab5c6a71f More i18n process updates (#7720)
* Modify intl:extract to only target english, the source language

* Add github action to regularly update english .po file

* Update localization doc
2025-02-11 13:47:46 -08:00
Paul Frazee accd1834b3 Run intl:extract on english to see if crowdin picks up on the changes 2025-02-11 13:11:25 -08:00
Minseo Lee b1cc4a5e9f Refine accessibilityHint (#7554)
* `accessibilityHint`

* accessibilityHint

* Update

Co-Authored-By: jason-me <mail@jason-hester.me>

* Update LoginForm.tsx

---------

Co-authored-by: jason-me <mail@jason-hester.me>
2025-02-11 13:07:00 -08:00
Paul Frazee eabe3ed231 Add language: Interlingua (#7715)
* Add language: Interlingua

* Add ia entry in dates
2025-02-11 12:51:19 -08:00
Samuel Newman 98b7e95b46 Fix unknown threadgates causing crashes (#7692)
* fix unknown threadgates

* don't fuck with the styles
2025-02-07 22:56:37 +00:00
surfdude29 7d6adb416a Update Settings.tsx (#7690) 2025-02-07 15:23:34 +00:00
Armaan A 729b9c9cc0 apply background style to discord/gorhom bottom sheet (#7523) 2025-02-07 15:13:08 +00:00
Samuel Newman 4b706c9519 Per-user search history (#7588)
* per-user search history

* move to mmkv with cool new hook

* revert accidental changes

This reverts commit 27c89fa645eff0acb7a8fd852203ff1ea3725c69.

* restore limits
2025-02-07 11:18:51 +00:00
Paul Frazee b12d39b4cf Updated i18n process (#7684)
* Update documentation

* Update crowdin.yml for cli usage

* Add more info about crowdin cli setup

* Add intl:pull and intl:push commands
2025-02-06 12:46:10 -08:00
Hailey be1285ea36 simplify ui (#7670) 2025-02-06 12:40:16 -06:00
Eric Bailey 9cd4f92027 [APP-1013] Configure and apply default post interaction settings from user preferences (#7664)
* Add interaction settings screen

* Move header out of interaction settings form

* WIP hook it up

* Thread through default settings into composer

* Update copy pasta

* Handle edited state

* Copy feedback

* Sentence case

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update copy

* Bump SDK

* Fix new type error

* Less in your face

* Remove new dep

* Add slot

* Copy edit

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2025-02-06 11:51:40 -06:00
Samuel Newman 1db2668a96 Improved service handle validation logic (#7657)
* fix validation logic for 3p pdses

* fix bad import

* add service handle validation test
2025-02-06 14:55:57 +00:00
Paul Frazee 00c08ba525 Clean out translation lines which no longer apply (#7668) 2025-02-05 15:05:11 -08:00
FalKoopa 445997bfd3 Update messages.po (#7627) 2025-02-05 15:02:47 -08:00
Michele Locati 2e96de5bc7 Update Italian translations (#7601)
* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2025-02-05 15:02:24 -08:00
f e l p s 232ddb5d9c PT-BR Translation update (#7582)
* PT-BR Translation update to 1.95.0

* PT-BR Translation update to 1.95.0

* Added more translations to new features
Fixed more inconsistencies

* Added more translations to new features
Fixed more inconsistencies

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2025-02-05 15:01:51 -08:00
Paul Frazee 6250dd2206 Update Basque localization for 1.97.0 (supersedes #7580) (#7666) 2025-02-05 15:00:27 -08:00
Christian Schmidt 3619125d76 Update Danish localization for 1.97.0 (#7579)
* Add missing strings

* Align "community guidelines"

* Typo in "feedback"

* "Kutlur"
2025-02-05 14:54:09 -08:00
nilaallj e68fbd000c Updated Swedish translations for v.1.97 (#7573)
* New translations for 1.97.0

* Minor correction

* Some minor improvements + fixed typos
2025-02-05 14:53:36 -08:00
Paul Frazee f3550f53eb Update Crowdin configuration file 2025-02-05 11:57:13 -08:00
Paul Frazee e0aecc6a60 Update Crowdin configuration file 2025-02-05 11:46:19 -08:00
André Fernandes 856c799065 Wrap error messages in Layout.Center (#7655)
* Added Portal to ErrorMessage to stack it on top of the view

* Changing Portal solution for Layout.Center according to PR suggestion
2025-02-05 18:12:50 +00:00
André Fernandes 9433975984 Adding webp to regex list. Added function return type for consistency with the rest of the functions (#7649) 2025-02-05 14:54:52 +00:00
Samuel Newman c3d732a76f bump version (#7650) 2025-02-04 21:42:13 +00:00
Hailey 78419beeb0 use did for userID (#7647) 2025-02-04 11:16:15 -08:00
dan bbe2c10866 Upgrade RN to 0.76.6 (#7557)
* Bump RN to 0.76.6

* Rename patch
2025-02-03 17:41:08 -06:00
Samuel Newman 0e4406c0dd Update expo-blur (#7596)
* update expo-blur

* Revert "update expo-blur"

This reverts commit 0546946f7b.

* update yarn minor version and expo-blur
2025-02-03 17:37:02 -06:00
Samuel Newman 083a5c9667 Fix slow Hosting Provider dialog (#7594)
* avoid portal perf pitfall

* add dep array
2025-02-03 22:50:21 +00:00
Samuel Newman 24a4ab2b0f make convo menu lazy (#7604) 2025-02-03 22:50:02 +00:00
Samuel Newman 32b28d6662 Fix convo header loading state (#7603)
* get initial convo state from cache

* undo useConvoQuery changes

* fix shadowing situation with new hook
2025-02-03 22:37:24 +00:00
Samuel Newman fa8607b861 Spring cleaning (#7640)
* delete breakpoint layouts

* delete empty file

* delete legacy radio buttons

* delete selectable button

* rm radio buttons from debug

* delete storage.ts

* delete type-assertions.ts
2025-02-03 22:18:13 +00:00
Samuel Newman 23e62b18de Date input improvements (#7639)
* add max date, use modern field for birthday input

* rm legacy date input

* handle simplifying to simpleDateString internally

* update jsdoc
2025-02-03 20:27:58 +00:00
Eric Bailey 25991af722 Add example account store (#7641)
* Add example account store

* Format
2025-02-03 14:22:49 -06:00
Samuel Newman d0ff6dcba0 rm refs in render (#7589) 2025-02-03 20:20:15 +00:00
Samuel Newman 2523740bdc change search cancel behaviour (#7624) 2025-02-03 11:38:36 -08:00
Samuel Newman b27a11cc10 reduce padding on video overlay (#7617) 2025-02-03 11:38:09 -08:00
surfdude29 1ec0d11727 Typo fix (#7637)
* Update ReportDialog.tsx

* Update fr/messages.po

* Update it/messages.po

* Update ja/messages.po

* Update ko/messages.po

* Update zh-CN/messages.po

* Update zh-HK/messages.po

* Update zh-TW/messages.po
2025-02-03 13:06:37 +00:00
Samuel Newman ea932534df no follow self (#7606) 2025-01-27 13:37:44 -08:00
Hailey ebb6d5cc0f env var tweaks (#7457)
* add new events

* Discard changes to package.json

* Discard changes to src/lib/constants.ts

* Discard changes to src/state/feed-feedback.tsx

* Discard changes to yarn.lock

* remove unused event
2025-01-26 15:40:02 -08:00
Paul Frazee 355c50fc0f Test fix 2025-01-24 12:30:22 -08:00
Christian Schmidt 68c4737b82 Add Danish localization (#7220)
* Add Danish localization

* Fix

* Update src/locale/locales/da/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Typo

* Inconsistent translation of "draft"

* Do not use "post" as verb

* Change "post"/"repost" to "opslag"/"videredeling"

* Fix "About"

* Fix

* Add to iOS config

* Sort alphabetically

* Typo fixes by @kseistrup

* Fix gender of "opslag"

* Plural

* "videredeling" > "deling"

* Be specific that ÆØÅ is not allowed

* Add new strings from main

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
2025-01-24 11:55:25 -08:00
nilaallj 9cb3b59963 Add Swedish localization (#7232)
* Adding Swedish translation

* Fixes and improvements

* Fixes and improvements

* Fixed inconsistencies + some other improvements

* Made some improvements, added missing translations and added Swedish to app.config.js

* Force push to resolve conflicts in messages.po
2025-01-24 11:54:45 -08:00
Michele Locati 630a8c3dc9 Update Italian translations (#7328)
* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2025-01-24 11:45:24 -08:00
Ivan Beà 001afcd6fc Update catalan messages.po (#7327)
Just a few new strings
Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu
2025-01-24 11:44:40 -08:00
Minseo Lee 9b961fb6d7 Update Korean localization for v1.97.0 (#7392)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2025-01-24 11:42:42 -08:00
Kevin Scannell f23f49c245 Irish translation update (#7406) 2025-01-24 11:42:21 -08:00
Valtteri Laitinen fa0628b787 Update Finnish localization (#7414) 2025-01-24 11:42:05 -08:00
Dovgonosyk d2ff104cfd Update Ukrainian translation (#7439)
Co-authored-by: Ukrainians <github-actions@github.com>
2025-01-24 11:41:28 -08:00
REALSOULMAN 24afc9c89a Add Basque language ('eu') (#7479)
* Add Basque language

* Contributor's changes
2025-01-24 11:40:20 -08:00
Snipufin 4703f3214e Update messages.po (#7496)
Changed StepFinished "Avaa" to "Avoin": the StepFinished screen is using Open as an adjective and not as a verb like the Finnish version currently does.
2025-01-24 11:38:35 -08:00
Islam Rustamov 2dcebeb518 Update Russian phrase (#7507) 2025-01-24 11:38:13 -08:00
smileyhead 49541029fe Update Hungarian translation for 1.96.6 (#7527) 2025-01-24 11:37:33 -08:00
Vinh Pham e09cd31b2a chore: update vi localization to v1.96.6 of the app (#7537) 2025-01-24 11:36:40 -08:00
axiand 06c1c7951d Polish translations for 1.97 (#7548)
* re-extract + fill in missing translations

* prune dead strings
2025-01-24 11:34:03 -08:00
hogaza 9849a6c71d Spanish localization for 1.97.0 (#7564)
* Updates and missing translations.

Added some missing translations, corrected a few inconsistencies (paquete inicial; video) and edited to strings to use gender-neutral language.

* Update src/locale/locales/es/messages.po

Thanks @surfdude29 for pointing this out

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2025-01-24 11:33:44 -08:00
Frudrax Cheng 5c3d609d1b Update Chinese & Cantonese localization for 1.97 (#7394)
* Update translates from crowdin

* Improved translations

* Provider related translations

* Improved translations

* Improved translations

* Update translates from crowdin

* Track #7190 & Improved translations

* CN: Translated Trending Video Strings & TW: Improved translations

* TW: Translated Trending Video Strings

* Update transtales from crowdin

* Ready for 1.97

* Track #7566

* CN: Fix typo
2025-01-24 11:33:20 -08:00
Takayuki KUSANO 02416c70fb Update Japanese translation for v1.97 (#7393)
* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Fixed

* Update for v1.97

* update translation
2025-01-24 11:33:03 -08:00
Stanislas Signoud 203a8c0eb4 French localization for v1.97 (#7546)
* Extract new strings to be translated in FR

* Translate strings in French for v1.97

* Remove legacy, now unused strings in fr locale

* Fix misusage of flux instead of fil

* Extract new strings again for v1.97

* Translate appeal-related string in French for v1.97
2025-01-24 11:32:42 -08:00
Samuel Newman 0d9dae5a01 fix hcap clipping (#7567) 2025-01-23 23:49:08 +00:00
Samuel Newman f1d120d416 Takendown state + in-app takedown appeals (#7566)
* takendown screen

* add form, move button inline

* expect type error

* display error

* disable submit if too long

* move around all the ctas

* typos, rm layoutanimation, fix link

* use REASONAPPEAL
2025-01-23 22:33:28 +00:00
Samuel Newman 084d11c63a add ban-ts-comment rule as warn (#7541) 2025-01-23 16:32:24 +00:00
Matthieu Sieben 346a7387f6 Remove "bsky.network" from preconnect (#7559) 2025-01-23 12:42:07 +00:00
dan 16abe45bb2 Trim leading whitespace-only lines (#7555) 2025-01-23 12:02:50 +00:00
Frudrax Cheng 53d4854ee6 Fix typo (#7553) 2025-01-22 22:25:35 +00:00
dan dca97b7eb4 Tweak adjustment in the formula (#7547)
* Remove ts-ignore

* Tweak OP like adjustment
2025-01-22 21:13:21 +00:00
Samuel Newman 74bb65714b Post-report menu (#7446)
* post-report block/delete dialog

* fix

* default checked

* web styles

* add icon to send button

* wire everything up

* optimisically leave convo

* hide pending-leave convos

* Capitalize action labels

* Code style

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-22 21:03:31 +00:00
dan 638008c781 Only show pins on Posts and Replies (#7544) 2025-01-22 20:01:37 +00:00
Samuel Newman 9e1cd11e22 fix deprecation warning (#7540) 2025-01-22 18:58:42 +00:00
dan d4cf6752dd Minor video feed refactor (#7536)
* Remove useless TS checks

* Remove default argument
2025-01-22 18:39:57 +00:00
Eric Bailey 6538013484 Add videos tab to profile (#7517)
* Add videos tab to profile

* Modify sourceContext for author feeds

* Use actual typecast, better name for feedUri

* Make EOF conditional

* Clearer condition

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-22 00:45:33 +00:00
dan 1403570a6a Adjust decay formula (#7535) 2025-01-22 00:25:41 +00:00
dan 99d23d65e2 Bump to 1.97.0 (#7533) 2025-01-21 22:05:33 +00:00
Eric Bailey 9df5caf3c5 Update hashtag menu to use Menu, convert to native link for additional a11y and click handling (#7529)
* Make tag a normal link on web

* Replace old TagMenu with new RichTextTag component, expand and improve click utils

* Clarify intents

* Ensure we're passing down hint

* ope

* DRY
2025-01-21 21:56:01 +00:00
surfdude29 c8d062f1ae Tweak Cantonese language tag (#7440) 2025-01-21 21:37:44 +00:00
Samuel Newman f0cc83154b move indicatorStyle to List (#7526) 2025-01-21 21:36:09 +00:00
dan f5b277c9f8 [Experiment] Add Video feed on signup (#7531) 2025-01-21 20:56:08 +00:00
Snow Pettersen 5f9f81f86c Reenable bitdrift (#7405) 2025-01-21 20:44:31 +00:00
Chris Kanich 8e00f044fe show video feeds from posts even if they are replies (#7516)
* show video feeds from posts even if they are replies

* only show feed post in VideoFeed
2025-01-21 20:08:37 +00:00
Samuel Newman 45b5af604a render adjacent players on ios (#7525) 2025-01-21 18:59:13 +00:00
Eric Bailey bdda3020f6 Some immersive video a11y fixes (#7528)
* Add playing/paused handling to tap area

* Show text and remove expand button if screen reader enabled

* Clarify actions

* DRY
2025-01-21 12:05:46 -06:00
Paul Frazee 76885f8592 1.96.7 2025-01-21 08:45:16 -08:00
dan 2e8f2d58ec Fix crash when nothing is pinned (#7510) 2025-01-20 21:00:40 +00:00
Dan Abramov fe9bb792aa Fix log source 2025-01-20 20:59:11 +00:00
dan bf95345b33 Replace hackfix for gestures with upstream fix (#7503)
* Bump pager

* Revert "[Android] Try to disambiguate taps from swipes (#7448)"

This reverts commit 96054f4add.

---------

Co-authored-by: gpp-0 <gpp.cat.io@gmail.com>
2025-01-20 17:16:11 +00:00
dan 5090426f9c Fix tabbar swipe conflicting with drawer (#7501) 2025-01-20 02:33:55 +00:00
dan 49b1944225 Fix Discover posts showing up in Following with no explanation (#7500) 2025-01-20 02:11:15 +00:00
Dan Abramov 99e16f459d Fix PWI 2025-01-20 01:30:44 +00:00
Hailey 34582edf3e yolo (#7499)
* tweaks to constants (#7478)

* add did

* use correct did

* typo

* tweak

* Prevent Drawer gesture conflicting with Suggestions scroll (#7468)

* Extract BlockDrawerGeesture

* Block drawer when scrolling interstitials

(cherry picked from commit 9e3f2f4374)

* yolo interstitial

* yolo mode

* right swipe

* fix nav gesture

* vibe controls

* collapsible post text

* rm blurview, cover for tall videos

* smarter video source handling

* use thumbnails, improve perf significantly

* better android loading

* improve aspect ratio

* optimize source changes

* rm spinner on ios

* whoops, remove debug `false`

* FIX WRONG VIDEOS SHOWING UP

* don't spring on way down

* release video players when leaving screen

* remove jank animation

* Add grid

* improve contract, fix double tap

* Filter out posts without videos

* Only do grid on native

* Pipe through feedSourceUri and link to feed

* Handle passed through params

* Partial revert, just filter posts to start at index

* Clean up cards, remove entry interstitial

* Tweak handle

* Change constant name

* Rename some things

* Make types legit

* Clean up more naming

* Add placeholder for grid view

* Handle web, set up new organization

* Begin work on Header

* Replace types

* Squashed commit of the following:

commit 3d1be4c0f1
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 01:08:05 2025 +0000

    extend animation

commit c9f199413b
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 01:01:24 2025 +0000

    fix gap

commit 22e520795f
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:50:16 2025 +0000

    thinner bar, format time

commit c32427f214
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:47:57 2025 +0000

    fix 2 in 3 screens

commit cbf84c08d6
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:45:46 2025 +0000

    rm unneeded var

commit 7e0e100177
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:41:18 2025 +0000

    scrubberrrrr

* use white with opacity rather than gray

* Simultaneous gesture

* cleanup attempt

* fix jank

* link to profile on press

* fix jitter fr this time

* mostly fix android flicker

* Maybe fix row generation

* Add content hider to video card

* emoji in post text

* reduce update rate

* fix type error

* Fix grid layout trailing single item

* Add Discover interstitial, settings, includes pin for now

* Explore interstitial, handle dimissal, pinning, compact card

* Only use grid placeholder on native

* Update events

* Add feature gate

* android nav bar fixes + lower update speed

* fix interval + decel rate on interstitials

* attempt to fix broken scrub on android (not working)

* follow button

* Part out the interstitials for perf, add view more

* Remove prod web route

* Wrap interstitials with BlockDrawerGesture

* Bring video cropping in line with images (#7462)

* Mimic image cropping for videos on web

* Same on native

* Rename variables for clarity

* Fix Android scrubbing

* Add FeedFeedbackProvider

* Remove swipe gesture

* fix light status bar behaviour

* bump

* feedback

* Copy pasta to new location

* Copy pasta part deux

* Filter only videos

* Make whole text clickable to expand

(cherry picked from commit 4cf31120779f4e06eb4c296b3d4b53814d432b07)

* move scrubber to own file

* end card

* add icon to end card

* add min view time to viewability config

* play haptic on like

* tweak feedback

* tweak feedback again

* Moderation

(cherry picked from commit 6b6b471cfb363031284b3e7a1f6e0ade3ac4ae47)

* remove bad check

* fix feedback for new video grid

* change prop name to items as well

* Simplify logic

* Fix mod footer

* Give scrubber more space on android

* Add subtle track behind scrubber, adjust opacity

* wire in feed context again...

* Add better a11y desc to card

* Fix key issue

* Update a11y copy

* Fix scrubber height

* improve scrubber animation

* Make follow button more obvious

* Make header back button more clear

* Disable interactions with actual video el

* keep content away from the bottom safe area

* fix blur

* fix moderation issue

* improve contrast on mod screen

* Make moderation static per item

* Memoize rows

* Optimizations

* Take video moderation into account

* Only blur titles for list blur

* Change copy

* Bump blur radius

* animate text in both directions

* Rm unused field

* Filter by root early

* Refactor for clarity

* add compose prompt to scrubber

* rm log

* tweak gradient

* Bump SDK, use contentMode to power video feed

* Ensure ProfileFeed view also supports video feed

* improve scrubber on android

* rm border from footer

* Update prod video feed did

* Separate caches

* Add lil hover to View More

* Fix undefined logic, remove header for interstitial

* Ungate

* Fix stuckness

* remove extra useless map

* Fix effect cleanup

* Send seen without cleanup

* Simplify react stuff

* Earlier early return to avoid loading flash

* remove scrubber placeholder

* Remove opacity hack

* Render useEvent conditionally

* Fix Android flash

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2025-01-19 17:17:41 -08:00
dan cb02065550 Revert "[Android] Fix taps triggering while swiping (#7459)" (#7498)
This reverts commit 5130d19ebd.
2025-01-20 01:03:42 +00:00
Eric Bailey 3e0ac0a066 Bring video cropping in line with images (#7462)
* Mimic image cropping for videos on web

* Same on native
2025-01-18 02:09:44 +00:00
Hailey 6f3f11671d tweaks to constants (#7478)
* add did

* use correct did

* typo

* tweak
2025-01-17 12:19:16 -08:00
devin ivy ec9cafdbbd bskyweb: do not serve cache headers on non-2XX for static assets (#7469) 2025-01-17 17:36:58 +00:00
dan c84158fa8b Remove test gates (#7477) 2025-01-17 17:36:37 +00:00
James Saunders f5d28de793 bump license year (#7474) 2025-01-17 09:00:25 -08:00
gpp 5130d19ebd [Android] Fix taps triggering while swiping (#7459)
* [Android] Fix taps triggering while swiping

* Revert "[Android] Try to disambiguate taps from swipes (#7448)"

This reverts commit 96054f4add.

* Update patch to match callstack/react-native-pager-view#961

* Make it symmetrical

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-17 02:02:59 +00:00
dan 9e3f2f4374 Prevent Drawer gesture conflicting with Suggestions scroll (#7468)
* Extract BlockDrawerGeesture

* Block drawer when scrolling interstitials
2025-01-17 01:17:13 +00:00
Paul Frazee 39ed104935 Small test update 2025-01-16 16:54:58 -08:00
Paul Frazee 92852ed5d9 1.96.5 2025-01-16 15:16:41 -08:00
Eric Bailey 974bd76e98 Disable 2025-01-16 16:56:51 -06:00
Eric Bailey 6d61e60717 Install new deps
(cherry picked from commit 04d8b3e9a8)
2025-01-16 15:39:06 -06:00
Samuel Newman c7666917f2 more deps
(cherry picked from commit 9b8f20f191)
2025-01-16 15:39:02 -06:00
Eric Bailey e01fc2fbaf Only apply CDN fix to webpack in prod (#7461) 2025-01-15 19:35:00 +00:00
Jaz beb1f2367a Set webpack public path to auto to load from CDN (hopefully) (#7449) 2025-01-15 14:17:32 +00:00
dan 96054f4add [Android] Try to disambiguate taps from swipes (#7448) 2025-01-15 13:44:42 +00:00
Samuel Newman 479a4a92e1 Account quick switch on web (#7190)
* account quick switch on web

* dont show line if one account

* switch account label text

* add chevron hover state

* swagged up hover state

* add icons

* tune scale anim and respect prefers-reduced-motion

* fix reduced motion

* fix placeholder position

* move menu components out to separate component

* Pipe through outer handlers to Button

* Abstract lag in control.isOpen state

* add profile info into empty space

* fix tablet

* Alternative

* Revert "Alternative"

This reverts commit 050ab9595ef3bbc32529ad6588e4690d37539fbe.

* maybe fix flicker issue

* just do 50ms when not active

* delay other animations

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-01-14 12:53:13 +00:00
Islam Rustamov 1fc889b883 Remove unnecessary addEventListener call for video (#7433) 2025-01-14 11:42:50 +00:00
Samuel Newman 82881d1410 add correct error reporting for blank password (#7391)
* add correct error reporting for blank password

* fix prettier

---------

Co-authored-by: zuccs <daniel@zuccon.com>
2025-01-13 17:43:18 +00:00
Samuel Newman d7f5ee8415 Conversation-level reporting by reporting most recent message available (#7423)
* report latest message via convo menu

* check all messages we have

* fix types

* rm convo warning
2025-01-10 23:35:21 +00:00
Samuel Newman 42a4468265 Fix invalid password error message (#7425) 2025-01-10 22:18:36 +00:00
dan 08c6ac7c89 Fix web crash (#7426) 2025-01-10 20:39:22 +00:00
dan 6ca97406c1 A simpler fix for trending swipe issue (#7424) 2025-01-10 18:06:07 +00:00
Samuel Newman a7da646286 [ELI5] Validate too long handles in signup (#7422)
* validate too long handles in signup

* make change handle screen generic
2025-01-10 17:57:10 +00:00
Hailey d79c66af8a add back statsig gate testing (#7404) 2025-01-10 09:45:58 -08:00
dan 02dbcc134e Fix trending swipe gesture (#7417) 2025-01-10 00:32:08 +00:00
Eric Bailey 72dc508cb7 Move intent dialogs inside Alf, but above intent handlers (#7416) 2025-01-09 15:34:00 -06:00
Samuel Newman 3b9a51c43f Fix Android composer padding: Director's Cut (#7412)
* fix android 15 composer padding

* while I'm here, alf some bits and pieces

* add comments
2025-01-09 18:06:24 +00:00
Samuel Newman e5c587450f fix padding on android 15 (#7411) 2025-01-09 17:29:33 +00:00
Samuel Newman b49e93d58f Downgrade paste input dependency (#7410)
* downgrade paste input

* rm wnitespace
2025-01-09 16:47:37 +00:00
Samuel Newman d10cbb8f42 Fix avatar shape in Account switch menu (#7388) 2025-01-09 00:19:59 +00:00
Samuel Newman a0393fcd48 [ELI5] change sign in to create account (#6931)
* change sign in to create account

* alf buttons on native bottom bar

* manually edit .po file
2025-01-08 22:13:24 +00:00
Samuel Newman 7c8c78b18f [ELI5] Tweaks to hosting provider (#6935)
* minimal hosting provider

* change wording and move back up

* first time user nudge

* move tip

* reexport ticket svg

* fix ticket fr this time

* text tweak + add minHeight
2025-01-08 19:22:04 +00:00
dan 40ab77781c Delete <AppProfiler> (#7403) 2025-01-08 18:59:39 +00:00
Christian Schmidt aa3d8c5230 Preconnect to public.api.bsky.app (#7396) 2025-01-08 17:21:21 +00:00
Roland Crosby c564981405 Add key to invalidate spinner when theme changes (#7351) 2025-01-08 00:13:03 +00:00
Samuel Newman f61390fdf4 Hide menu button when search is focused (#7373)
* hide menu btn when cancel is shown

* remove useless ts-ignores
2025-01-07 22:21:58 +00:00
dan f3229d554b Bump version to 1.97.0 (#7386) 2025-01-07 21:14:14 +00:00
Dan Abramov 89353c6f22 Remove unused default argument 2025-01-07 21:07:06 +00:00
Jonathan Herbert cdd7d040b9 Fix moveToPermanentPath ext Default Missing '.' (#7281) 2025-01-07 19:13:01 +00:00
Samuel Newman fe8d3b081c Fix double text input in composer (#7381)
* upgrade paste input

* override how backing uitextinput is created

* different approach
2025-01-07 18:29:27 +00:00
Hailey 615bbc3532 bump version (#7337) 2025-01-02 16:10:34 -08:00
bnewbold 59709ad8d8 bump golang version to v1.23 (#7325) 2025-01-02 12:57:03 -08:00
dan 85ad52e398 Add loading state to new trending interstitial (#7332) 2025-01-02 20:20:40 +00:00
dan 3e0ed3b834 Remove upstreamed drawer patch (#7331)
* Remove upstreamed drawer patch

* Bump more
2025-01-02 20:20:30 +00:00
dan c11a90124c Fix key issue in trending topics (#7329) 2025-01-02 17:27:15 +00:00
Stanislas Signoud 9f075b1340 Localize lang selectors according to the app language (#6207)
* Localize lang selectors according to the app language

* Explicitly ignore RangeError when translating locale names
2024-12-31 13:27:14 -08:00
Paul Frazee 09297d92cb Release 1.96.3 (#7318)
* Run intl extract

* 1.96.3
2024-12-31 13:06:33 -08:00
Yiannis Mertzanis 2300410b4d Add Greek Language ('el') Support and Internationalization (#6677)
* Add Greek language support to the application

* Add support for Greek language in date handling and tests

* Update Greek locale file with translator and team information

* Add support for Greek language in date handling and tests

* Add support for Greek language in app configuration, and updated translation from the reviewers' comments

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-31 12:28:17 -08:00
f e l p s 30d110dbcd PT-BR Translation update (#6975)
* PT-BR Translation update to 1.95.0

* PT-BR Translation update to 1.95.0

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-31 12:25:42 -08:00
Virenbar af94b79e2c Update Russian localization (#7116)
* Update messages.po

* Update messages.po

* Update messages.po (е -> ё)

* Update messages.po (plurals)

* Update messages.po

* Update messages.po

More е -> ё
Fix some strings

* Update messages.po

* Update messages.po

* Update messages.po (draft)

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: ponfertato <ponfertato@ya.ru>
2024-12-31 12:20:38 -08:00
Takayuki KUSANO 6e94de9f83 Update Japanese translation (#7170)
* Update translation

* Update translation
2024-12-31 12:20:01 -08:00
Minseo Lee 9dc04bbfb0 Update Korean localization (#7171)
* Update messages.po

* Update messages.po

* Update src/locale/locales/ko/messages.po

Co-authored-by: Akamig <akamig@posteo.net>

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: Akamig <akamig@posteo.net>
2024-12-31 12:19:43 -08:00
Ivan Beà eb3bfc9ff0 Update catalan messages.po for 1.96.0 (#7182)
* Update catalan messages.po

Ready for 1.96.0
Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu

* Update messages.po

Tema del moment per Trending Topic segons optimot https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html;jsessionid=43E324EDAEFCD750A95579FEB9B5A164?action=Principal&method=detall&input_cercar=trending+topic&numPagina=1&database=TERMCAT&idFont=3279826&idHit=3279826&tipusFont=Diccionaris+terminol%F2gics+del+TERMCAT&numeroResultat=8&databases_avansada=&categories_avansada=&clickLink=detall&titol=tema+del+moment&tematica=Tecnologies+de+la+informaci%F3+i+la+comunicaci%F3&t%C3%ADtol=tema%20del%20moment&tipusCerca=cerca.tot
2024-12-31 12:19:22 -08:00
Valtteri Laitinen ad42a9297a Update Finnish localization (#7183)
* Remove obsolete Finnish strings

* Update and adjust Finnish locale
2024-12-31 12:18:43 -08:00
Michele Locati 97288983c3 Update Italian translations (#7184)
* Update po from Transifex

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2024-12-31 12:18:16 -08:00
voitech 0118fe75e0 Update Polish translation (#7206)
Translated new strings and corrected various errors.
2024-12-31 12:16:18 -08:00
smileyhead e44726529c Update Hungarian translation for 1.96 (#7219)
* Update Hungarian translation for 1.96

* Update Hungarian translation
2024-12-31 11:40:12 -08:00
Gerson Lázaro 619da81911 Fix Spanish translations for some messages (#7233)
* Fix Spanish translations for some messages

* Fix minor issues in es localization
- Use "etiqueta" instead of "tag"
- Use "eliminar" instead of "remover"
- Unify "entrar en pantalla completa"
- Use "Clic" instead of "Click"
- Use "paquete de inicio" instead of "pack de inicio"
- Unify use of "trasladado" instead of "mudado"
- Unify use of "solo" instead of "sólo"
- Unify use of "feed" instead of "noticias"
- Unify use of quotes for "me gusta" as "likes"
- Improve sentences using "2FA"
- Unify sentences mentioning quote posts (citas)
- Other small inconsistencies
- Tú vs usted inconsistencies:
  - agregue -> agrega
  - inténtelo -> inténtalo
  - cierre -> cierra
  - su -> tu
  - complete -> completa
  - comience -> comienza
  - seleccionaba -> seleccionabas
  - intentaba -> intentabas
  - puede -> puedes
- Inconsistencies to discuss and solve
  - Post: use of "post" and "publicación"
  - Repost: use of "repost"/"repostear" and "republicación"/"republicar"
  - Add: use of "agregar"/"agrega" and "añadir"/"añade"
  - Feed: use of Feeds in uppercase
  - Video: use of vídeo (es-ES) or video
  - User and account ("usuario" and "cuenta")
  - Punctuation consistency
  - Uppercase and lowercase consistency

* Fix typos and improve Spanish localization in messages.po

---------

Co-authored-by: Daniel García Ruano <dgruano.code@gmail.com>
2024-12-31 11:36:33 -08:00
Frudrax Cheng cf1ccdf8e3 Update Chinese & Cantonese localization (#7235)
* Update translates from crowdin

* Convert language codes from RFC-1766 to RFC-4646

* Update translates from crowdin

* Update deviceLocales.ts

* Revert 'changes zh-HK to yue'

* Fix zh-HK messages.po

* Revert 'en/messages.po'

* Update deviceLocales.ts

* Revert code comments

* Update translates from crowdin

* zh-TW: Improved translations
2024-12-31 11:34:48 -08:00
Stanislas Signoud 444c4a944e Update French translation (1.96.3 or 1.97) (#7299)
* Bump locales in French

* Translate French strings for 1.97 (or 1.96.3)
2024-12-31 11:30:49 -08:00
Lucasofchirstms 8af540f284 Update messages.po (#7305) 2024-12-31 11:27:56 -08:00
Hailey 6c40efb3a3 change copy on list blocked (#7316) 2024-12-31 11:24:50 -08:00
Paul Frazee 2dc6932f29 Rework discover-feed trending interstitial (#7314)
* Rework discover-feed trending interstitial to take one row

* Fix loading state

* Try putting it at the top

* Color consistency

* Tweak some spacing

* Show trending when progress guide is there
2024-12-31 09:44:52 -08:00
Eric Bailey c6d26a0a9c Some metrics (#7294)
* Add trending metrics

* Progress guide events

* Fix naming, improve existing events
2024-12-27 14:21:17 -08:00
Eric Bailey 8b7a331815 Fix mute words in trending (#7293) 2024-12-27 14:19:02 -08:00
Hailey d27ed32188 bump video version, fix android crash (#7292) 2024-12-27 13:10:01 -08:00
Samuel Newman 6c9e1d4837 Unlock orientation when lightbox is open (#7257)
* unlock orientation when lightbox is open

* rm outer safe area view, make sure alt text is safe

* restore safe area view for android 14 and below

* lock orientation on launch for android

* set system ui background to black when lightbox is open

* reset state on relayout

* catch async functions with noops

* rm superfluous catches

* Delay unlock until after animation

* Simplify how key is determined

* Make landscape backdrop opaque

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-24 20:05:54 +00:00
Minseo Lee f05962a492 Fix Nepali language code (#7265)
* Replace `np` with `ne`

* Reorder
2024-12-24 16:54:05 +00:00
Samuel Newman 2b28c85b43 Cropper - opt out of edge-to-edge enforcement on Android 15 (#7254)
* opt out of edge-to-edge enforcement

* revert unintended change
2024-12-23 18:17:09 +00:00
Ahmed Soliman 1e4ea1a271 checking list/feed owner on empty state when prompting to add users (#7247) 2024-12-23 17:42:10 +00:00
Barry Pollard 08a5f7a0bd Correct font preload (#7249) 2024-12-23 17:41:00 +00:00
Samuel Newman 5020e4233a make horizontal scrollview touch edges (#7256) 2024-12-23 15:58:54 +00:00
Christian Schmidt 190c7d6ed8 Extend clickable area to height of container (#7248) 2024-12-23 15:12:38 +00:00
Christian Schmidt 9d4ae02300 Make "Retry" translatable (#7243) 2024-12-22 17:45:08 +00:00
Christian Schmidt fa2072cefa Apply avatar moderation to quote post (#7229) 2024-12-20 23:15:45 +00:00
Dan Abramov 3aa1a5f884 Bump 2024-12-20 21:34:10 +00:00
Dan Abramov 7d86bba7f1 Fix Android save to camera permissions 2024-12-20 21:34:10 +00:00
Samuel Newman f5a9ac1313 fix lightbox on android 15 (#7221) 2024-12-20 20:39:18 +00:00
Samuel Newman c5421596a8 fix recent searches tap handling (#7214) 2024-12-20 20:37:55 +00:00
Samuel Newman 8f7a6e5ffc add default empty state text (#7212) 2024-12-20 20:33:34 +00:00
Hailey aeb78daf84 bump package (#7223) 2024-12-20 20:15:21 +00:00
Eric Bailey 8116d12c15 Fix Emoji picker focus (#7217)
* Only portal the emoji picker where needed

* Add optional portal prop to emoji picker

* Use FocusScope to our advantage

* Pare back, add guards, fix focus trap

* Don't return focus to emoji button

* Set DM input position on emoji insert

* Let the caller determine next focus node

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-20 19:59:33 +00:00
dan 8a3dfcb9d0 Don't add unused keydown listeners (#7218) 2024-12-20 18:00:30 +00:00
Samuel Newman 6afa44ddcb Moderate composer quote (#7213)
* moderate composer quote

* consistency with other uses
2024-12-20 16:57:19 +00:00
dan ab0697a0ec Bump clamp max value (#7198) 2024-12-19 23:14:33 +00:00
Dan Abramov 7f63679a5e Fix build 2024-12-19 21:57:45 +00:00
Hailey 975e61d450 bump (#7197) 2024-12-19 13:51:18 -08:00
dan 10981eec50 Proper fix for iOS cropper being stuck (#7194)
* Revert "Add iOS hack to fix cropper failing to show (#7191)"

This reverts commit 25d20c6395.

* Proper fix
2024-12-19 21:47:00 +00:00
dan fb920f89d1 Revert "Fix post time localization on Android (#6742)" (#7196)
This reverts commit b1b6affb71.
2024-12-19 21:45:44 +00:00
dan 25d20c6395 Add iOS hack to fix cropper failing to show (#7191)
* Add iOS hack to fix cropper failing to show

* Make it 800
2024-12-19 21:12:58 +00:00
Dan Abramov a3031de19b Tweak GH action 2024-12-19 05:50:37 +00:00
Dan Abramov 59739a6088 Tweak GH action 2024-12-19 05:36:19 +00:00
Dan Abramov 24540400d9 Try to fix action 2024-12-19 05:24:05 +00:00
Dan Abramov 513a188a21 Add a GitHub Action verifying lockfile against base 2024-12-19 05:14:15 +00:00
dan 29dad38ab7 Add lockfile lint (#7177) 2024-12-19 04:01:21 +00:00
dan c390c32788 Remove unreliable repository (#7176) 2024-12-19 04:00:27 +00:00
dan c2ca84c636 Temporarily remove Bitdrift (#7173)
* Temporarily remove Bitdrift

* Rm plugin
2024-12-19 01:16:32 +00:00
Paul Frazee e2dfe3f438 Fix translation file 2024-12-18 17:07:41 -08:00
Hailey 9ebd362224 add key (#7169) 2024-12-18 16:17:55 -08:00
Paul Frazee 25f3aeaa08 Release 1.96.0 (#7168)
* Update test

* Run intl extract

* Update join count
2024-12-18 15:56:42 -08:00
Mert Şişmanoğlu 6e58a1e8e1 Update Turkish(tr) translations 62% (#6386)
* Update Turkish(tr) translations

* Update Turkish(tr) translations

- Accessibility Page fully translated
- Some error and warning messages
- Some PostInteraction components

* Update Turkish(tr) translations

- Po-Revision-Date, Last-Translator, Language-Team update
- Translate most of the Chat, Message, Conversation messages

* Update Turkish(tr) translations

- useTimeAgo time conventions
- FeedItem messages
- Verification warnings

* Update Turkish(tr) translations

- n days ago, n hours ago
- Newskie
- Post and Feed actions
- Some of the Starter Pack

* Update Turkish(tr) translations

- Use `kaydoldu` instead of `kayıt oldu`

* Fix typo "{}sn" in Turkish(tr) translations

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* fix turkish(tr) translations 'reply' word

- Use 'yanıt' instead of 'cevap'

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update Turkish(tr) translations for improved clarity and accuracy

* Update Turkish(tr) translations

* Update Turkish(tr) translations for various phrases and improve clarity

- learn more
- moderation things

* Update Turkish(tr) translations

* Update Turkish(tr) translations

* Update Turkish(tr) translations

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update Turkish (tr) translations in messages.po

%62 done

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Burak Güner <md.burak.guner@gmail.com>
2024-12-18 15:47:26 -08:00
Softastur 62f43ee15a Update ast locale translation (#6905)
* Update ast locale translation

This commit updates strings and fixes some errors.

* Update messages.po

Fixes a critical translation error

* Update messages.po

Fixed a mistake

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 15:46:50 -08:00
smileyhead 2e598f7bd7 Update Hungarian translation to 1.95 (#6869)
* Fetch newest translations

* Translate new strings

* Apply fixes to strings

Reworded the ‘Deleted’ string and the body text placeholders of the ‘Who can interact with this post?’ dialogue.

* Unify wording/cases of toast messages

The wording of responsive toasts such as ‘Message deleted’ have all been changed to a case like ‘You have deleted this message’. Wording messages in the former way sounds very ‘un-Hungarian,’ so I have gone through the code to find any toast messages not worded this way.

There are a few exceptions, however:
- Error messages – these are already proper, full sentences and do not sound odd when translated as-is.
- ‘Copied to clipboard’, QR code-related toasts – keeping the original case sounded more appropriate here.

* Small correction

Noticed I've accidentally translated ‘About’ as ‘Help’

* Pull newest strings

* Translate new strings
2024-12-18 15:45:55 -08:00
Juan Pablo Martínez 2aeb098b4e Update AN to 1.95.0 [ER]. (#6857)
Co-authored-by: Guido Leenders <guido.leenders@invantive.com>
2024-12-18 15:44:04 -08:00
Guido Leenders 1eb17ac9fa Update NL to 1.95.0 [ER]. (#6855) 2024-12-18 15:43:04 -08:00
Eric Bailey 3408d47a1b Remove deactivate dialog link from delete modal (#7167)
* Rm closeModal

* rm link
2024-12-18 23:42:02 +00:00
Luan 64dbaed24c Update Portuguese localization (#6793)
* Update messages.po

* Update messages.po
2024-12-18 15:35:26 -08:00
Ankit Bhandari bdae89b67b Nepali Translation (divyaswormakai's reviewed & some changes) (#7033)
* feat: prepare necesaary files

* fix: message file for nepali translation

* feat: language file update

* feat: add missing pieces

* feat: one and other updates

* additional changes

---------

Co-authored-by: Divyaswor Makai <makaidivya@gmail.com>
2024-12-18 15:34:50 -08:00
Stanislas Signoud 0e7ad19830 French translations (for v1.96) (#6991)
* Bump translation strings for fr

* Translate new strings in French

* Fix a few problems and typos in existing fr locale

- Archivé par followed by a date do not make sense
- l’arrive is clearly a typo, and I rewrote it so it feels better in French
- Ex. with this casing is not frequent, so I moved it at the end (no terseness required here)
- Feedback is now translated using a common translation of those in other UIs
- Removed "Les" in "Les mots" as it's a menu item
- Plus aucune is correct but too formal and weird so switching to Pas d’autre

* Remove all legacy, commented strings

* Use guillemets on fr string about app icons

* Fix translation of “Back” to “Retour” in french

Originally fixed by @lsaudon in #6778, thanks :)

Co-authored-by: Lucas SAUDON <lucas.saudon@beta.gouv.fr>

* Improve fr translations thanks to @CerryTsuki input

* Remove even more legacy strings in fr translations

* Bump translation strings for fr (again)

* Attempt to translate new strings in fr

* Improve 'Archived from' translation in fr

* Bump translation strings for fr (yet again)

* Translate new strings in French

* Get rid of recently removed strings in fr

* Stay consistent when translating handle

---------

Co-authored-by: Lucas SAUDON <lucas.saudon@beta.gouv.fr>
2024-12-18 15:34:06 -08:00
Lucas O. S. c9aa2b1e30 Fix spanish translation (#6984) 2024-12-18 15:33:38 -08:00
roth 323c974c6b Add Khmer Localization (#6914)
* add khmer language

* update translate

* update translate

* add missing localization key

* update khmer wording

* update khmer wording

* add missing translate

* add missing translate

* chore: add khmer local date-time format

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:33:19 -08:00
voitech 9b35521d3c Updated Polish translation (#6862)
* Updated Polish translation

* Update pl/messages.po

@axiand Thanks for such a detailed analysis and all the suggestions! I've already corrected the mistakes you pointed out.

- The word "repost" was initially translated as "opublikować ponownie," but after consulting members of the Polish community, they agreed that "repostować" would be more appropriate. Personally, I would leave it as is or change it to "opublikować ponownie," but that is a longer phrase and might not fit well in certain interface elements.  
- Similarly, with the word "czat"—in my opinion, it aligns better with the app, whereas I translated "conversation" as "rozmowa."  
- "Obserwować wzajemnie" doesn't sound very natural in Polish, which was even noted by users who reverted to the English interface because of it. The phrases "również Cię obserwuje" and "również obserwuj" fully capture the meaning of the English original and look good as notifications in the app.  
- `L414-440`, `1618` – without the word "zostało," the phrasing lacks clarity.  
- `L600`, `1796`, `2804`, `4056`, `7552` and `L718`, `1316`, `2219`, `4662-4667`, `6056`, `6714` – my changes are linguistically correct and look better. The previous formulations were often ambiguous and unclear. I fixed the errors found in these sections.  
- `L1447` – I reverted to the previous version.  
- I changed "kod potwierdzający" to "kod weryfikacyjny" because it sounds more natural and clear.  
- I changed "lista moderowana" to "lista moderacji" as per your suggestion. In Polish, "lista moderacji" sounds like the list belongs to people involved in moderation. It also gives the impression that it might be a list showing moderators or moderation-related services. "Lista moderowana" suggests that someone is overseeing the moderation of the list. I'm still not entirely sure what the intended meaning is or what the audience is meant to understand from the name.  
- I changed "rolka aparatu" to "galeria zdjęć."
- I changed "obrazki" to "zdjęcia".

* Update messages.po

Suggested changes were made.
Changed “użytkownik” to “osoba” where it was logical for consistency. Removed where it was not needed.

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 15:32:27 -08:00
dan 45c6308607 Don't hide recommended (#7166)
* Don't hide recommended

* Rm unused
2024-12-18 23:31:18 +00:00
Valtteri Laitinen 65eccc79aa Update and improve Finnish locale (#6840)
* Update and improve Finnish locale

* Remove obsolete Finnish strings
2024-12-18 15:30:59 -08:00
Frudrax Cheng 8f171451ef Update Chinese & Cantonese localization (#6839)
* Update translates from crowdin

* zh-CN: Improved translations

* Both: Improved translations

* TW & HK: Improved translations

* CN: Re-translate 'Quote posts enabled'

* TW: Improved translations

* CN: Unify the translations of 'label'

* CN: Fix grammar

* CN & HK: Improved translation

* TW: Improved translations

* Update translates from crowdin

* Translated new Layout & Improved zh-TW translations

* zh-CN: Unified label translation

* zh-HK: Fix translation

* zh-TW: Improved translation

* Update from crowdin

* Improved translation

* Update translates from crowdin

* Update from crowdin

* Update the latest translations

* Update translations according #7065

* zh-TW: Improved translations

* Update translates from crowdin

* zh-HK: Improved translations

* Update translates from crowdin

* Improved translations

* zh-CN & zh-HK: Improved translations

* zh-CN: Re-translated 'Bluesky is better with friends!'

* Update translates from crowdin

* Translated #7128

* Remove placeholder

* Translated #7144 #7147

* Improved translations

* Improved translations#2

* zh-CN: Improved translations
2024-12-18 15:30:32 -08:00
Vinh Pham ac42f90e4d enhance translations, add new translation tags (#6838) 2024-12-18 15:30:00 -08:00
Ivan Beà 2e72b0a7a2 Update catalan messages.po (#6811)
* Update catalan messages.po

No new lines to translate this one, just fixing some minor errors

Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu

* Update messages.po
2024-12-18 15:29:34 -08:00
Minseo Lee bc948cb725 Update Korean localization (#6799)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-12-18 15:29:13 -08:00
Michele Locati e7a34669ff Update Italian translations (#6775)
* Update Italian translations

* Translate "Discover Feed"

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

---------

Co-authored-by: GitHub <noreply@github.com>
2024-12-18 15:28:45 -08:00
hogaza 4697b92b6a Spanish localization - completion and some fixes (#6691)
* Updates and missing translations.

Added some missing translations, corrected a few inconsistencies (paquete inicial; video) and edited to strings to use gender-neutral language.

* Update src/locale/locales/es/messages.po

Thanks @surfdude29 for pointing this out

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:28:19 -08:00
Takayuki KUSANO d42f768347 Update Japanese translation (#6620)
* Update Japanese translation

* Update

* Remove obsoleted entries

* Update translation

* minimize diff to main

* apply middlingphys's review, erase obsoleted messages.

* Traslate new messages (app icon)

* modified on feedback

* Update translation

* Update translation

* Update translation

* translate new messages on new screen

* Remove the typo entry fixed by #7064

* Update translation

* Update translaiton

* Update translation

* Update translation

* Update translation

* Translate new progress guide
2024-12-18 15:25:17 -08:00
Claudiu Cristea afd338b0f3 Romanian localization (#6456)
* Empty

* First pass

* More colloquial Romanian

* Add Romanian lanaguage

* Romanian specfic plural with 3 variants

* Adjustments

* Chat > Conversație

* Keep code alphabetical order

* Update messages.po

* Add 'ro' to app.config.js

* Regenerate and finish RO

* Update messages.po

* Fixing a previous wrong conflict resolution

* Adapt after #6742

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Alex <alextec70@outlook.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:24:38 -08:00
Dan Abramov 2d1a5e71ab Remove X from recommended 2024-12-18 22:48:09 +00:00
Eric Bailey 925a240ec4 Fork close logic for android to match previous usage (#7165) 2024-12-18 22:22:16 +00:00
Eric Bailey 62daf047ca Adjust height of radio (#7164) 2024-12-18 20:25:54 +00:00
Samuel Newman 674153c725 move header inside sticky area (#7163) 2024-12-18 20:15:05 +00:00
Eric Bailey c8e307b5cf Trending tracking 2 (#7162)
* Move

(cherry picked from commit bfb96f4ce2)

* Add to recommeded too

(cherry picked from commit e6844883a6)

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-18 19:55:59 +00:00
dan a7f763faf2 Add reply sorting in-thread (#7156)
* Add button

* Extract component

* Make it work

* Extract and use RadioCircle

* Add tree/list setting

* Prefer local state

* Factor out threadViewPrefs

* Fix optimistic stuff

* Revert RadioButton changes

* Tweak radio styles, add Menu.LabelText

* Labels

* Margins

* Update copy

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-18 19:50:37 +00:00
Samuel Newman 4097fe07c5 make trending buttons pressable scale (#7160) 2024-12-18 19:48:24 +00:00
Eric Bailey e7b015f53f Trending tracking (#7161)
* Add hide to Explore

* Event for show

* Add hide events to each location
2024-12-18 11:37:46 -08:00
Samuel Newman 05c43ed998 Better list empty state (#7157)
* render header conditionally, use modern footer

* move add button to empty state if empty

* center align empty state

* Tweak add people btn

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 11:03:53 -08:00
Hailey 5c4f870898 change stale time to three minutes (#7158) 2024-12-18 10:58:26 -08:00
Samuel Newman 3481d16577 Remove header subtitle from list-related screens (#7154)
* rm subtitle, add admonition

* rm top border from empty state

* Minimal approach

* Revert uneeded change

* Even more minimal

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-18 10:23:40 -08:00
Samuel Newman 2d827430ee Web sticky headers for most screens (#7153)
* web sticky headers, with opt-out for notifs

* rm from postthread

* Fix jump

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-18 16:58:20 +00:00
Paul Frazee 3262b83420 Fix tests 2024-12-17 21:29:45 -08:00
Paul Frazee ff02868afc Layout tweaks (#7150)
* Reduce weight of right sidebar active feed

* ProfileFeedHeader tweaks

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-17 19:50:59 -08:00
Eric Bailey a2019aceec Trending (Beta) (#7144)
* Add WIP UIs for trending topics and suggested starterpacks

* Disable SPs for now

* Improve explore treatment a bit, add some polish to cards

* Add tiny option in RightNav

* Add persisted option to hide trending from sidebar

* Add to settings, abstract state, not updating in tab

* Fix up hide/show toggle state, WITH broadcast hacK

* Clean up persisted code, add new setting

* Add new interstitial to Discover

* Exploration

* First hack at mute words

* Wire up interstitial and Explore page

* Align components

* Some skeleton UI

* Handle service config, enablement, load states, update lex contract

* Centralize mute word handling

* Stale time to 30m

* Cache enabled value for reloads, use real data for service config

* Remove broadcast hack

* Remove titleChild

* Gate settings too

* Update package, rm langs

* Add feature gate

* Only english during beta period

* Hook up real data

* Tweak config

* Straight passthrough links

* Hook up prod agent

* Fix no-show logic

* Up config query to 5 min

* Remove old file

* Remove comment

* Remove stray flex_1

* Make trending setting global

* Quick placeholder state

* Limit # in sidebar, tweak spacing

* Tweak gaps

* Handle hide/show of sidebar

* Simplify messages

* Remove interstitial

* Revert "Remove interstitial"

This reverts commit 1358ad47fd.

* Only show interstitial on mobile

* Fix gap

* Add explore page recommendations

* [topics] add topic screen (#7149)

* add topic screen

* decode

* fix search query

* decode

* add server route

* Fix potential bad destructure (undefined)

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-12-17 19:45:39 -08:00
Eric Bailey a07949ec8e Fix emoji picker position (#7146) 2024-12-17 21:12:53 -06:00
dan 65d4416f9e Tweak Follow dialog Search placeholder (#7147) 2024-12-18 02:53:42 +00:00
Samuel Newman 0cbb03cd14 New progress guide - 10 follows (#7128)
* new follow-10 progress guide

* find follows dialog

* wip tabs

* flatlist version with search

* hardcode out jake gold

* lazy load followup suggestions

* Update src/components/ProgressGuide/FollowDialog.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* comment out replacing, enable paging

* rm autofocus

* find shadow profiles in paginated search

* clear search when press tabs

* better tab a11y

* fix label

* adjust scroll indicator insets

* do the same scroll indicator adjustment for searchable people list

* hardcode jake to just be 'tech'

* Retain state on close/reopen

* only change follow btn color when not followed

* add guide to inside dialog

* fix task alignment

* Enable contextual suggestions

* WIP: show multiple suggestions

* Rework so it animates well

* Show more items

* remove card style

* move tabs to own component

* split out header top

* scroll active tab into view

* rm log

* Improve perf a bit

* boost popular interests over alphabetical ones

* scroll active tab into view

* revert back to round buttons

* Fix overrenders of the tab bar items

* Fix unintended animation

* Scroll initial into view if needed

* Unlift state, the dialog thing breaks lifting

* Persist simply

* Fix empty state

* Fix incorrect gate exposure

* Fix another bad useGate

* Nit

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-17 17:13:18 +00:00
dan 32611391a3 Pipe statsig events to logger (#7141)
* Pipe statsig events to logger

* Log rich objects to bitdrift

* Fix tests

* Consolidate mocks, fix tests

* Reduce log trash on native
2024-12-17 12:22:09 +00:00
dan 07b7250682 Fix notifications borders (#7140) 2024-12-17 11:22:49 +00:00
dan 31d2aa6716 Refetch empty feed on focus (#7139) 2024-12-17 11:09:06 +00:00
dan 20d4266e2f Read storage on window.onstorage (#7137) 2024-12-17 03:13:51 +00:00
dan c9e429760d [ELI5] Tweak wording on the signup screen (#7136)
* Tweak signup wordings

* Update translations
2024-12-17 00:11:21 +00:00
Samuel Newman be33c626b0 alf error screen (#7135) 2024-12-17 00:11:03 +00:00
Samuel Newman 1a160df396 add safe area view to profile error screen (#7134) 2024-12-17 00:02:56 +00:00
dan de97c07c63 Adjust gates (#7132)
* Remove dead gate

* Adjust gates

* No need to disable exposures
2024-12-16 22:26:40 +00:00
Samuel Newman c339dc5b05 disable automaticallAdjustsScrollIndicatorInsets (#7131) 2024-12-16 22:06:15 +00:00
dan 3ed237b629 Bump more native deps (#7129)
* Undo expo modules patch

* Upgrade expo modules release

* Patch facebook/react-native#46944

* Remove explicit prebuild config dep

* Bump to rm duplicates
2024-12-16 21:46:39 +00:00
dan 21c288272d Update more Expo packages (#7127)
* Bump Expo resolutions

* Bump packages

* Bumpy bump
2024-12-16 17:35:44 +00:00
Karol Stawowski c4fffba11b feat: widen recent search profile link for mobile devices (#7119)
* feat: widen recent search profile link for mobile devices

* chore: apply style to non-mobile screens
2024-12-16 16:53:00 +00:00
dan e4e5a589b1 Fix video uploads on native (#7126)
* Fix duplicate expo-modules-core

* Patch expo/expo#33621
2024-12-16 15:42:29 +00:00
Frudrax Cheng b1b6affb71 Fix post time localization on Android (#6742)
* Fix post time localization on native

* Fix timezone

* Revent time.ts

* Add time.android.ts

* Add missing 'an' and 'ast'

* Revent PostThreadItem.tsx

* Resolve duplicate versions in lockfile

* Move to time.native.ts

* Follow #7055 to upgrade intl-datetimeformat version

* Remove time.native.ts
2024-12-16 14:25:59 +00:00
dan 1ac307bc42 [Experiment] Remove "Load Latest" button (#7120)
* Remove "show latest" behind the gate

* Add HomeBadgeProvider

* Update provider state from home feed tabs

* Add Home badge to native

* Add Home badge to mobile web

* Add Home badge to desktop web
2024-12-15 20:30:17 +00:00
dan 80c0125d6b Fix image upload on native (#7121) 2024-12-15 17:42:45 +00:00
Eric Bailey c959dc351f ProfileFeed cleanups (#7115)
* Clean up feed load state

* Fix feed info dialog load state
2024-12-14 15:30:01 -06:00
Ben Harris b806f3e85d apply fonts to TextField (#6288)
system fonts were leaking. i'm sure there's a better way to apply this
without duplicating but idk it works
2024-12-14 03:02:12 +00:00
dan c5e60ba006 Fix posting images on web (#7105)
* Fix uploadBlob to handle blob: URI

* Patch expo-image-manipulator to support "compress" argument

* Narrow down the fix
2024-12-14 02:25:32 +00:00
dan 55222c5b0e Fix z-indexes to make tabbar scroll on Android (#7102) 2024-12-14 00:01:31 +00:00
Eric Bailey ca8ca903b2 Add some helper text for custom domains (#7103)
* Add some helper text for custom domains

* endsWith

* ope
2024-12-13 23:05:53 +00:00
dan da6bcc54cf Tweak ProfileList design (#7100)
* Remove "No description"

* Move Lists about into header

* Remove pager with one tab

* Layout tweaks
2024-12-13 21:38:43 +00:00
dan adbc27059a Add Emily to discover debug (#7101) 2024-12-13 21:16:25 +00:00
Eric Bailey ce69e052b7 Allow non-graph emoji to inherit parent color (#7096) 2024-12-13 12:36:00 -06:00
dan f6aecf5c28 Give minWidth to tab indicator only (#7095) 2024-12-13 18:20:48 +00:00
Eric Bailey 41228dce19 Better alignment on web (#7098) 2024-12-13 18:20:38 +00:00
dan 356dad1932 Remove the environment indirections (#7089)
* Use raw underlying globals for environment

* Set dev EXPO_PUBLIC_ENV by exclusion
2024-12-13 17:16:53 +00:00
dan e2a7965e43 Gate bitdrift integration (#7088)
* Move Statsig init call earlier

* Gate Bitdrift init call

* Remove IS_TEST env constant

* Mock statsig
2024-12-13 17:14:41 +00:00
Brad Estey 5655241bef Uppercase the auth factor token in input value to match the email casing. (#7094) 2024-12-13 17:14:31 +00:00
dan add7a91d54 Fix web Home header (#7086)
* Fix header disappearing on web

* Make border nicer
2024-12-12 21:57:26 +00:00
dan 8a790cdd7f Revert "Edit string to avoid churning translations (#6737)" (#7087)
This reverts commit 9d3bdbb2b9.
2024-12-12 21:52:51 +00:00
surfdude29 10dd0f76eb mark string for localization (#7083) 2024-12-12 21:50:30 +00:00
dan 6e20893a0c Fix double border due to progress guide (#7084) 2024-12-12 15:16:15 -06:00
Hailey 2276cb0e75 Fix share button not working for some users (#5849)
* fix share button

* Revert "fix share button"

This reverts commit 3521c241729dc9bbe3dd7b62fc6e3e61e011cdf9.

* tweak

* Clean up context

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-12 13:50:29 -06:00
Eric Bailey 2808f8b73d New profile feed header (#7056)
* Init hacking

* Lil baby button checkpoint

* Playing around

* Revert "Playing around"

This reverts commit f58a7fafa1.

* Mostly there

* Cleanups

* Cleanup

* Fix report dialog nesting

* Remove transform on native

* Rename header

* Fix layout, overflowing FAB buttons

* Remove hack

* Couple of fixes

* Keep Pin primary CTA (#7061)

* Update src/screens/Profile/components/ProfileFeedHeader.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Simplify, use old string

* Wrap Trans better

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-12 11:48:26 -06:00
Samuel Newman ffc63dc85f [Layout] Bleed profile banner into safe area (#6967)
* bleed profile banner into safe area

(cherry picked from commit 50b3a4d0c6fd94b583ffe4efa65de35c81ae7f4e)

* pointer events none when hidden

(cherry picked from commit bae2c7b2dd6d7f858a98812196628308c0877755)

* fix web

(cherry picked from commit e3f9597170375f2903b6e567b963f008ec95aed1)

* add status bar shadow

* rm log

* rm mini header

* speed up animation

* pass bool rather than int in light status bar
2024-12-12 17:46:19 +00:00
Samuel Newman 4b32b0a71b Increase scrubber height if touch device (#7081)
* further increase target area of scrubber

* make scrubber bigger if touch device

---------

Co-authored-by: Antonio Sarcevic <sarcevicantonio@gmail.com>
2024-12-12 17:42:36 +00:00
dan f8cdd6b9ae [Notifications] Add a Mentions tab (#7044)
* Split out NotificationsTab

* Remove unused route parameter

* Refine the split between components

* Hoist some logic out of NotificationFeed

* Remove unused option

* Add all|conversations to query, hardcode "all"

* Add a Conversations tab

* Rename to Mentions

* Bump packages

* Rename fields

* Fix oopsie

* Simplify header

* Track active tab

* Fix types

* Separate logic for tabs

* Better border for first unread

* Highlight unread for all only

* Fix spinner races

* Fix fetchPage races

* Fix bottom bar border being obscured by glimmer

* Remember last tab within the session

* One tab at a time

* Fix TS

* Handle all RQKEY usages

* Nit
2024-12-12 17:37:07 +00:00
Samuel Newman 10e241e7eb followersCount -> followsCount (#7080) 2024-12-12 17:21:28 +00:00
dan 88166926fa Make the pager take full width (#7066)
* Wide tabs for web

* Wide tabs on mobile

* Tweak min for profile

* Driveby border fix

* Fix single tab indicator
2024-12-12 15:35:56 +00:00
dan 704e36c280 Fix web build (#7069)
* Fix web build

* Fix circular deps

* Hoist log functions
2024-12-12 05:00:09 +00:00
Snow Pettersen 20ac42a5a3 configure the bitdrift Capture SDK (#6979)
* configure bitdrift Capture SDK

* remove console log

* use the new url

* add patch to fix devtool interaction

* update patches

* fix patch

* add BITDRIFT_API_KEY to .env.example
2024-12-12 04:28:15 +00:00
dan c8745a9ab0 Cache Reanimated worklets (#7068)
* Undo perf hackfix

* Bump Reanimated to include https://github.com/software-mansion/react-native-reanimated/pull/6758

* Bump to 3.17.0-nightly-20241211-17e89ca24
2024-12-12 04:20:22 +00:00
Minseo Lee 084905c146 refine plural marks (#7065) 2024-12-12 03:48:02 +00:00
Frudrax Cheng ddeadc21a0 Update PostRepostedBy.tsx (#7064) 2024-12-12 01:56:43 +00:00
Samuel Newman e49dad2889 Nicer app icon screen (#6972)
* wip exploration

* list format instead of grid

* fix normalising default name

* adjust margins

* Rework the app icon link

* Decrease app icon size

* Adjust some spacing

* Move some things around to fix web errors

* Fix pathname

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-11 22:33:45 +00:00
dan 69f22b9dba Point "Continue thread" at last shown post (#7060) 2024-12-11 22:29:57 +00:00
Samuel Newman 48346edde6 More exact counts (#7059)
* post liked by

* rm unnecessary layout.center

* do post quotes/reposts

* set height of header to prevent layout shifts
2024-12-11 22:24:22 +00:00
Samuel Newman 89c6ca94fe Followers/following exact count (#7057)
* followers exact count in heading

* exact count for following

* move files to new dir

* use <Plural>
2024-12-11 21:12:58 +00:00
dan 7db5882ea2 Merge pull request #7058 from bluesky-social/fix-profile-empty-space-nobio 2024-12-11 21:01:56 +00:00
Dan Abramov c55063d262 Reduce excessive empty space on profile with no bio 2024-12-11 20:35:13 +00:00
Samuel Newman b081f8f8d9 Remove rounding mode hack (#7055)
* bump formatjs and remove hack

* maybe fix tests?

* Revert "maybe fix tests?"

This reverts commit f1b448e5b8.

* rm test
2024-12-11 19:13:09 +00:00
かっこかり de15f8e2d3 feat(embed): Add support for dark mode (#6912)
* feat(embed): Support dark mode (wip)

* finishing up the implementation

* fix tailwind color selector

* tweak design

* refactor: unify types

* fix

* fix english grammar

* refactor: unify types

* tweak design

* remove the customization part
2024-12-11 16:31:29 +00:00
dan 48c5341644 Fix iOS build (#7042) 2024-12-10 22:17:27 +00:00
dan 86155986af Fix composer shortcut detaching a reply (#7041) 2024-12-10 21:19:53 +00:00
Barry Pollard bee50c3954 Font loading improvements (#6993)
* Font loading improvements

* Reconvert with missing files

* Update bskyweb/templates/base.html

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>

* Update bskyweb/templates/base.html

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>

* Run web-build to update hashes

* Revert Android to otf

* Use Inter woff2 files

---------

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>
2024-12-10 21:17:58 +00:00
rcombs 6308e91de6 LoginForm: enable autocomplete on 2FA code field (#7019)
This should (fingers crossed) work in Safari, at least.
2024-12-10 21:16:45 +00:00
Renan Mav b7ddb07d90 fix: typo in filename list-converations (#7036) 2024-12-10 20:59:35 +00:00
dan d00879e628 Disambiguate feed component naming (#7040)
* Rename posts/Feed* -> posts/PostFeed*

* Rename notifications/Feed* -> notifications/NotificationFeed*
2024-12-10 20:57:53 +00:00
Eric Bailey e052f5e198 Refactor sidebar (#6971)
* Refactor RightNav

(cherry picked from commit 96bb02acfd2d7452df18a0e7410e6a7169a583ed)

* Better gutter handling

* Clean up styles

* Memoize breakpoints

* Format

* Comment

* Loosen spacing, handle overflow, smaller text to match prod

* Fix circular imports on native

* Return 0 instead of undefined for easier calculations

* Re-assign

* Fix

* Port over fix from subs/base

* Space out right nav feeds, widen sidebar to match prod

* Fix lost padding on home header

* Fix perf by not actually linking to new URL

* Remove underline on focus

* Foramt

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-10 20:52:30 +00:00
dan f34e8d8cdf Limit feed prefetching to native (#7038) 2024-12-10 18:23:23 +00:00
dan 46e1e5cee6 Fix drawer swipe (#7007)
* Fix drawer swipe

* Remove existing setDrawerSwipeDisabled management

This is already pretty error-prone. And with tracking whether we're idle it's going to get more complicated. Let's pause and think.

* Move setDrawerSwipeDisabled logic into Pager

* Remove win/2 threshold

It feels super arbitrary and breaks muscle memory. If the gesture is reliable, we shouldn't need it.

* Maybe work around iOS freeze

* Tweak gestures, add comments

* Tune gestures
2024-12-10 04:40:40 +00:00
Dmitry Grachikov fec3352b68 Access content of extended block properly (block.Super instead of super()) (#7026) 2024-12-09 22:23:36 +00:00
Eric Bailey bc4b4a3cfe Add isSelfHosted to SessionAccount (#7028)
* Add isSelfHosted to SessionAccount

* Update snaps
2024-12-09 13:43:16 -06:00
Eric Bailey 63c0c7e621 Add back button to desktop threads (#7010) 2024-12-08 14:44:01 -06:00
dan ea6ac25684 Revert "[Video] Revert safari hackfix (#5367)" (#7001)
This reverts commit 94e7bfbe40.
2024-12-07 17:10:13 +00:00
Eric Bailey 296aab4736 Fix squashed content on mod screens (#7004)
* Fix squashed content on mod screens

* Fix lint
2024-12-07 17:09:46 +00:00
Samuel Newman 5297973f68 [ELI5] Change feed page copy (#6932) 2024-12-07 11:50:50 +00:00
Eric Bailey d05217e560 Immediately parse pre-filled links in composer state (#6974)
* Immediately parse pre-filled links in composer state

* Add hack to fix PasteInput height bug

* Parse out ext links separately from post links
2024-12-06 22:43:49 +00:00
Eric Bailey 8c68093d24 Add useFormatCurrency hook (#6978) 2024-12-06 16:29:34 -06:00
dan cd4c14e8db Update view shot (#6995) 2024-12-06 22:14:05 +00:00
dan d7b492e89a Remove icon (#6994)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-06 20:37:46 +00:00
Hailey 1f6acc11ab clean rn 0.76 upgrade (#6887)
* package upgrades

* upgrade system ui

* update patches

* rename patch

* rm

* use .set/.set

* resolve yarnlock

* fix accidentally removed package

* fix use permissions hook

* fix some type errors

* type fixes

* more tweaking

* clean

* Discard changes to src/screens/Onboarding/StepProfile/index.tsx

* oops

* fix splash

* use ios/android in config

* Fix tests

* add back patch

* add to rn patch

* fullscreen?

* Revert "add to rn patch"

This reverts commit 4716d2c643.

* try this

* test with revert

* test

* maybe this

* fix config

* Bump @react-native-picker/picker

* Bump some packages

* Rm unused

* Update lockfile

* Rename expo-notifications+0.29.8.patch.md to expo-notifications+0.29.10.patch.md

* Update react-native+0.76.3.patch.md

* Update react-native+0.76.3.patch.md

* Inline splash configs

Jumping around the file is annoying and makes it harder to understand how this is structured.

* Start fixing Android splash

* Downgrade compressor

This version isn't building for me due to https://github.com/numandev1/react-native-compressor/issues/322.

* Make Android splash empty for now

* Work around a bug

* Bump the compressor

* Bump again

* Include splash fixes

* Try updating

* No custom Android splash

* Revert to using icons

* welp

* Fix sizes

* Make sizing work

* Bump size

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-06 17:52:08 +00:00
Eric Bailey 3ab6c435df Trim back prefs exposure in NUXs, make naming more friendly (#6980) 2024-12-06 09:42:42 -06:00
Eric Bailey 143e2c802d [Layout] Base (#6907)
* Add common gutter styles as hook

* Add computed scrollbar gutter CSS vars

* Add new layout components

* Replace layout components in settings screens

* Remove old back button

* Invert web border logic for easier migration

* Clean up Slot API

* Port over FF handling of scrollbar offset

* Trade boilerplate for ease of use

* Limit to one line

* Allow two lines, fix wrapping

* Fix alignment

* sticky headers

* set max with on header and center

* [Layout] Notifications Header (#6910)

* Replace notifications screen header

* fix cropped indicator

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* Replace Hashtag header (#6928)

* [Layout] ChatList header (#6929)

* Replace ChatList header

* update chat settings as well

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* Add web borders to Chat settings

* Remove unused var

* Move ChatList header outside center

* Replace empty chat layout

* fix breakpoints

* [Layout] Scrollbar gutters (#6908)

* Fix sidebar alignment

* Make sure scrollbars don't hide

* Gift left nav more space

* Use stable one-edge, update logic in RightNav

* Ope

* Increase width

* Reset

* Add transform to sidebars

* Remove bg in sidebars

* Handle shifts in layout components

* Replace scroll-removal handling

* Make react-remove-scroll an explicit dep

* Remove unused script

* use correct scroll insets (#6950)

* [Layout] Feeds headers (#6913)

* Replace ViewHeader internals, duplicate old ViewHeader

* Replace Feeds header

* Replace SavedFeeds header

* Visual alignment

* Uglier but clear

* Use old ViewHeader for SavedFeeds

* use Layout.Center instead of Layout.Content

* use left-aligned header for feed edit

* delete unused old view header

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* [Layout] Every other screen (#6953)

* attempt to fix double borders on every other screen

* delete ListHeaderDesktop

* delete `SimpleViewHeader` and fix screens (#6956)

* Make Layout.Center not full height

* Refactor List to use Layout.Center, remove built-in borders

* Fix Home screen

* Refactor PagerWithHeader to use Layout components

* Replace components in ProfileFeed and ProfileList

* Borders on Profile

* Search screen replacements

* use new header for profile subpage header (#6958)

* Search AutocompleteResults

* use new header for starter pack wizard (#6957)

* Fix post thread

* Enable borders by default

* Moderation muted and blocked accounts

* Fix scrollbar offset on Labeler

* Remove ScrollView from Moderation

* Remove ScrollView from Deactivated

* Remove ScrollView from onboarding

* Remove ScrollView from SignupQueued

* Mark deprecations

* fix lint

* Fix double borders on profile load

* Remove unneeded CenteredView from noty Feed

* Remove double Center layout on Notifications screen

* Remove double Center layout on ChatList screen

* Handle scrollbar offset in chat

* Use new atom for other scrollbar offsets

* Remove borders from old views

* Better doc

* Remove temp migration prop

* Fix new atom usage on native

* Clean up Hashtag screen

* Layout docs

* Clarify usage in Pager

* Handle nested offset contexts

* Clean up Layout

* fix feeds page

* asymmetric header on native (#6969)

* Reusable header const

* Fix up home header

* Add back button to convo

* Add hitslop to header buttons

* Comment

* Better handling on native for new atom

* Format

* Fix nested flatlist on mod screens

* Use react-remove-scroll-bar directly

* Fix notification count overflow on web

* Clarify doc

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-12-05 18:59:26 -06:00
Eric Bailey 8467dfd452 Add some icons (#6976) 2024-12-05 18:15:30 -06:00
Foster 0ee20731d4 adjust feed scroll bar top offset (#6940)
Co-authored-by: skipness <ckhf@proton.me>
2024-12-04 21:42:15 +00:00
Laurence Gonsalves 4582a9cf1f Fix oEmbed provider_url and provider_name (#6942)
Fixes https://github.com/bluesky-social/social-app/issues/6941
2024-12-04 17:21:52 +00:00
Samuel Newman df3b43bb64 simplify date picker theme (#6926) 2024-12-03 23:57:26 +00:00
Paul Frazee 0c71f8196f Add link-click metrics (#6934)
* Add link-click metrics

* Fix conditional
2024-12-03 15:03:22 -08:00
Samuel Newman 79f807dc4f ALF TabBar (#6924)
* alf tabbar

* reduce indicator height
2024-12-03 18:03:43 +00:00
David Buchanan 3607cfb991 Update VideoClip icon - Fix pixel grid alignment (#6923)
* Update VideoClip.tsx

* minify path
2024-12-03 17:42:53 +00:00
Ryan McLeod 147efb628a Fix title/buttons in date picker not being visible on Android in dark mode (#6880) 2024-12-03 02:25:10 +00:00
dan 84f4afd3d7 Fix scroll gesture alignment (#6898) 2024-12-03 01:35:36 +00:00
dan cd811114ef [Nicer Tabs] New native pager (#6868)
* Remove tab bar autoscroll

This will be replaced by a different mechanism.

* Track pager drag gesture in a worklet

* Track pager state change in a worklet

* Track offset relative to current page

* Sync scroll to swipe

* Extract TabBarItem

* Sync scroll to swipe properly

* Implement all interactions

* Clarify more hacks

* Simplify the implementation

I was trying to be too smart and this was causing the current page event to lag behind if you continuously drag. Better to let the library do its job.

* Interpolate the indicator

* Fix an infinite swipe loop

* Add TODO

* Animate header color

* Respect initial page

* Keep layouts in a shared value

* Fix profile and types

* Fast path for initial styles

* Scroll to initial

* Factor out a helper

* Fix positioning

* Scroll into view on tap if needed

* Divide free space proportionally

* Scroll into view more aggressively

* Fix corner case

* Ignore spurious event on iOS

* Simplify the condition

Due to RN onLayout event ordering, we know that by now we'll have container and content sizes already.

* Change boolean state to enum

* Better syncing heuristic

* Rm extra return
2024-12-03 01:29:45 +00:00
dan 5a313c2d10 [Nicer Tabs] Fork TabBar, simplify Pager (#6762)
* Fork TabBar.web.tsx

* Trim dead code from both forks

* Remove onPageSelecting event

It's difficult to tell what exactly it's supposed to represent, and in practice it's not really used aside from logging. Let's rip it out for now to keep other changes simpler.

* Remove early onPageSelected call

It was added to try to do some work eagerly when we're sure which way the scroll is snapping. This is not necessarily a good idea though. It schedules a potentially expensive re-render right during the deceleration animation, which is not great. Whatever we're optimizing there, we should optimize smarter (e.g. prewarm just the network call). The other thing it used to help with is triggering the pager header autoscroll earlier. But we're going to rewrite that part differently anyway so that's not relevant either.

* Prune more dead code from the native version

We'll have to revisit this when adding tablet support but for now I'd prefer to remove a codepath that is not being tested or ever run.

* Use regular ScrollView on native

The Draggable thing was needed for web-only behavior so we can drop it in the native fork.
2024-12-03 01:12:58 +00:00
dan 996871d88b Prefetch adjacent Home pages (#6904) 2024-12-03 01:11:11 +00:00
Hailey 2f10be2cfe remove masked view dependency (#6886) 2024-12-02 16:16:39 -08:00
surfdude29 770eeb59ca Add new languages to CFBundleLocalizations key (#6835)
* Order tweak in lingui.config.js

* Add new languages to `CFBundleLocalizations` key

* Order tweak in dates.ts

* hyphen to en-dash

* change two `zh` tags to use script rather than region

* `zh_HK` ➡️ `yue-Hant`

* `pt` ➡️ `pt-BR`
2024-12-02 17:28:11 +00:00
dan 5f4a0f2881 "Contain" images with missing dimensions instead of cropping them (#6828)
* Show unknown aspect as "contain" for autosize

* Fix a flash of wrong position when opening in lightbox

* Fix last frame flash on Android
2024-11-28 23:29:45 +00:00
dan d08ce0d473 Fix stuck lightbox (#6816)
* Fix lightbox getting stuck by fixing rAF order

If you spam opening lightbox too fast, the effect that calls rAF will clean up and set up again midflight. Unfortunately, due to rAF order being unreliable, it may fire in reverse order, causing "open, open, close" instead of "open, close, open", so it would get stuck closed. This fixes the rAF order.

* Don't allow opening another lightbox while it's open
2024-11-28 16:55:05 +00:00
Samuel Newman 0aee6390fa ensure black root view on iOS (#6813) 2024-11-28 15:41:33 +00:00
Foster 84796c1bcf fix iOS language picker style in dark mode (#6804)
Co-authored-by: skipness <ckhf@proton.me>
2024-11-28 14:31:10 +00:00
dan 6a2067a761 Revert "Revert "bump version to 1.96 (#6781)" (#6790)" (#6794)
This reverts commit c9d86de152.
2024-11-27 22:05:31 +00:00
dan c9d86de152 Revert "bump version to 1.96 (#6781)" (#6790)
This reverts commit b2c232e9fd.
2024-11-27 19:21:08 +00:00
Samuel Newman 29b3b3db30 YT embed tweak (#6789)
* tweak css

* fix typo

* More tweak

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-27 19:19:36 +00:00
dan 47cbdfecb3 Fix web build by removing app icon settings (#6784) 2024-11-27 15:34:12 +00:00
dan 763a5d5ab5 Fix gap between Write Your Reply and bottom bar on web (#6783)
* Fix gap between Write Your Reply and bottom bar on web

* rm log
2024-11-27 14:54:09 +00:00
Samuel Newman 6a29296ae0 [Subs] Custom app icons (#6758)
* custom icons

* rm default

* clouds.jpg

* use cross-platform fork

* minor fixes for android

* update dynamic icon lib

* gate app icon settings behind discover debug dids

* rename clouds

* Bop it

* Update default ios icon as well

* Remove old icon

* Update logo placement

* update to latest expo-dynamic-app-icon

* fix android icon sizes

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-11-27 14:41:18 +00:00
Samuel Newman c7d57b6374 css color transitions on left nav (#6768) 2024-11-27 14:34:07 +00:00
Frudrax Cheng 91fffd3cd2 Fix ast (#6774) 2024-11-27 14:17:44 +00:00
Samuel Newman b2c232e9fd bump version to 1.96 (#6781) 2024-11-27 14:12:04 +00:00
Paul Frazee 2a575addba Fix import sort 2024-11-26 19:32:19 -08:00
Paul Frazee 6d290591da Release 1.95 take2 (#6771)
* Run intl extract

* Update join count
2024-11-26 19:27:44 -08:00
Softastur 1edebc5dc7 Add "ast" locale support (#6411)
* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" translations

This commit adds preliminary translation support for "ast" locale. Around 20% is translated.

* Update "ast" locale translations

* Update "ast" translations

Fixes minor spelling mistakes and translates many strings more

* Update messages.po

With this commit we reach the 55% of strings translated after the last code sync

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-11-26 19:14:43 -08:00
Juan Pablo Martínez 5929c2678c Add Aragonese language ('an') support and l10n (#6638)
* Update languages.ts

* Update i18n.web.ts

* Update i18n.ts

* Update helpers.ts

* Create messages.po

* Update lingui.config.js

* Update dates.ts

* Add files via upload

* Update src/components/hooks/dates.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/components/hooks/dates.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update i18n.ts

* Update messages.po

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-26 19:06:47 -08:00
Ivan Beà 8cbe68306d Update catalan messages.po (#6682)
* Update catalan messages.po

Back to 100% translated.
Applied pending corrections by @darcio and @jordimas https://static.softcatala.org/quality/bluesky_social_app.html

Please take a look at it @ivanbea @jordimas @darccio @surfdude29 @rortan134 @magarcia

* Update catalan messages.po

Change all "arxiu" to "fitxer" as suggested by @jordimas

* Update catalan messages.po

Suggestions by @aryiu
2024-11-26 19:03:19 -08:00
Michele Locati 95e1b21788 Update Italian translations (#6717) 2024-11-26 19:02:09 -08:00
Guido Leenders b9db950d52 Informal tone and other improvements to Dutch (#6724)
* Informal tone [ER].

* More improvements [ER].

* Improvements by Flitskikker [ER].
2024-11-26 19:01:02 -08:00
Nando eb9dfba9f4 Improve German translation (#6750) 2024-11-26 18:54:18 -08:00
Frudrax Cheng 7860b790dc Update Chinese & Cantonese localization (#6754)
* Update translates from crowdin

* zh-CN: Re-translate 'Welcome, friend!'

* zh-CN: Improved translations

* Fix translate 'Threaded'

* zh-CN: Improve spelling and grammar

* Translated 'Allow quote posts'

* zh-CN: Better translation of 'from'

* zh-CN: Improved quantifiers

* zh-CN: Improved translations

* Update translates from crowdin

* Update translates from crowdin

* Improved translation
2024-11-26 18:53:44 -08:00
Samuel Newman 8825d6b1a7 Lightbox status bar behaviour (#6637)
* lightbox status bar

* add hideTransitionAnimation="slide"

* move navigation bar logic to util
2024-11-26 23:59:31 +00:00
dan 2c2d12b394 Fix stutter when swiping feeds on Android (#6765) 2024-11-26 23:56:57 +00:00
Samuel Newman 736ea3f49d Fix Android keyboard bug when opening a sheet (#6739)
* reimplement KeyboardStickyView

* fix missing arg
2024-11-26 15:57:21 +00:00
Samuel Newman ce1b04b925 Fix <List> types (#6756)
* fix List and ScrollView types

* add comment

* rm omitting ref
2024-11-26 15:55:27 +00:00
rshigg 56a88098d2 focus search input on soft reset in mobile (#5732) 2024-11-25 22:04:06 +00:00
dan 61e97d6962 Fix camera orientation on Android (#6729) 2024-11-25 21:08:14 +00:00
dan 9d3bdbb2b9 Edit string to avoid churning translations (#6737) 2024-11-25 20:49:43 +00:00
dan c6c6c91d7b Revert "Pass referrer on native (with an opt out) (#6648)" (#6732)
This reverts commit ac5b2cf31f.
2024-11-25 20:30:33 +00:00
Samuel Newman b0c36383a9 Ensure react-native-keyboard-controller enabled state doesn't get overwritten (#6727)
* revert to prev state instead of false

* add dep array

* use ref counting approach

* patch keyboard controller to allow changing the enabled prop

* remove state from patch

* change patched prop name

* remove Math.max check, log if < 0

* use noop provider

* rm patch, use `useRef`

* Style nits

* Rm on web

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-25 20:30:15 +00:00
Adam Rowe 6c81090021 Dismiss keyboard on drag in starter pack screens (#6537) 2024-11-25 19:04:28 +00:00
Kirill Zyusko 723bbfc58a fix: keyboard handler memoization (#6719)
* fix: keyboard handler memoization

* fix: return missing dependency
2024-11-25 15:03:55 +00:00
Evan 5164ca6288 Make quote post enabled switch label text static (#6720)
* Make quote post enabled switch label text static

* Update PostInteractionSettingsDialog.tsx

* meh this is better

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-25 13:24:00 +00:00
dan b9406aa011 Don't re-sort already fetched post thread items (#6698)
* Don't reorder already seen posts in PostThread

* Add sorting by generation

* Rip out stable order cache

It doesn't make sense because sort() doesn't call the callback for all A/B pairs, and the server returning a different ordering will cause cache misses which means there'll be no stability anyway.

* Make hotness deterministic per fetched at

* Cache random scores while in thread

* Reorder for clarity
2024-11-24 19:10:54 +00:00
surfdude29 371e6ad333 Fix glitches in gl/messages.po (#6702)
* fix glitches in gl/messages.po

* Fix italian

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-24 17:41:36 +00:00
dan a21e2b45db Fix format number polyfill for gl locale (#6680) 2024-11-24 17:15:08 +00:00
Paul Frazee 8c43acc1d3 Run intl:extract (#6678) 2024-11-23 16:42:43 -08:00
Paul Frazee 7782517a91 Merge branch 'monty241-main' into main 2024-11-23 16:34:31 -08:00
Paul Frazee a55444a53a Add 'nl' to lingui config 2024-11-23 16:34:11 -08:00
Paul Frazee 8fc4f68e69 Update src/locale/i18n.ts 2024-11-23 16:21:36 -08:00
Paul Frazee 32bf8122e8 Merge branch 'main' into main 2024-11-23 16:20:24 -08:00
Gonzalo Riestra b4d07c4112 Improve spanish translation of repost (#6395)
Use "republicar" instead of "volver a publicar"
2024-11-23 15:57:54 -08:00
Claudiu Cristea 1e168fd1e1 There’s no Moldavian/Moldovan language (#6427) 2024-11-23 15:56:21 -08:00
xurxogp 7e7910edf7 Added Galician language localization (#6463)
* Update languages.ts

added galician language

* Update i18n.web.ts

added import of galician translations file

* Update i18n.ts

added galician language

* Update helpers.ts

added galician to sanitizeLanguage function

* galician messages

First commit

* Second commit

* Third commit

* fourth commit

* fifth commit

* Update lingui.config.js

change to make available Galician language

* galician translation by Carlos Vieito and Alexandre Espinosa

---------

Co-authored-by: Alexandre Espinosa Menor <aemenor@gmail.com>
2024-11-23 15:54:59 -08:00
Martin Garcia af4db872b5 Update catalan messages.po (#6485)
* Update catalan messages.po

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-23 15:53:38 -08:00
Michele Locati 54d52b8172 Update Italian translations (#6487)
* Update Italian translations

* Fix typo

* Update messages.po

* yarn intl:extract

* Update italian translation

* Fix typo

* In Italy we almost never use Title Case

* @marcomaroni-github suggestions

* Add more strings, remove "per favore"

* Update narrow "# hours"

* Fix plural rules, translate remaining strings

* Update translations with @arestifop suggestions

* Update translations

* Update translations

---------

Co-authored-by: Lucaterzo <49860098+Lucaterzo@users.noreply.github.com>
Co-authored-by: Alessio <alessio.restifo@gmail.com>
2024-11-23 15:51:57 -08:00
Minseo Lee 1059088cf1 Update Korean localization (#6523)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-11-23 15:51:00 -08:00
Quang Phan 796d04b59f Vietnamese Localization (Continued from #2524) (#6564)
* Add Vietnamese localization

* Complete Vietnamese Translations

* Add date localization for Vietnamese

* Fix typos and wording in Vietnamese translation

* Update Vietnamese translation

* Add @vinhphm to Vietnamese translator list

---------

Co-authored-by: CromNguyen <nguyenthietmanh98@gmail.com>
2024-11-23 15:50:32 -08:00
FalKoopa 9bf7e278e7 Updated Hindi UI for Version 1.94 (#6566)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-11-23 15:49:39 -08:00
cereza d0089a9335 updated & added missing strings in FR locale (#6596)
* updated FR locale

* removed my name from Language-Team

i'm not sure if this is a list of every translation contributors or if this is the main people who handle translations, so i've decided to remove it for the time being

* replaced "fil d'actu Following" with "fil des abonnements"

i thought i did that already oops

* fixed DID mistranslation

i thought it stood for Direct Inward Dialing

* applied suggestions from @signez

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* replaced spaces to non breaking spaces where necessary

might have some missing, i'll patch these up while fixing apostrophes

* fixed apostrophes

i also swapped "Changer l'e-mail" with "Changer votre e-mail", thought since it was an account-related thing, IIRC most of the account settings (handle, password, etc.) are possessive towards the user so i thought it'd be better to keep it consistent

* removed the period at the start

why is that here get that outta here

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* applied suggestions from @surfdude29

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Fix the remaning 'like' mentions in French

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-23 15:48:52 -08:00
codehead 21a5140704 Translate missing strings. (#6599)
Co-authored-by: Javier Arturo Rodriguez <javier@rodriguez.org.mx>
2024-11-23 15:47:42 -08:00
Luan 468de4c6db Update Portuguese localization (#6603)
* Update PT-BR messages.po

* Apply suggestions from code review

Co-authored-by: Paul Frazee <pfrazee@gmail.com>

* Apply suggestions from code review

* Apply suggestions from code review

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-11-23 15:46:38 -08:00
Frudrax Cheng 260eb59530 Update Chinese & Cantonese localization (#6626)
* Update translates from crowdin

* Completed the translations for video and HTTP referer control

* Improved translation

* Fix several translation issues

* Improved Cantonese translations
2024-11-23 15:14:53 -08:00
Kevin Scannell 69e5174057 Update Irish translation (#6668) 2024-11-23 15:12:22 -08:00
dan 9f070834dd Fix skeleton alignment (#6676) 2024-11-23 22:10:53 +00:00
dan aa58216b6d Fix jumpy web animation for modal backdrop (#6673) 2024-11-23 21:36:35 +00:00
Nick Perez fdc3f0f17d perf: optimizations for composer with Tiptap (#6315)
* chore: update tiptap packages

* perf: reduce number of re-renders

* refactor: apply min height without a layout effect

* Remove stale zeed-dom resolution

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 21:07:37 +00:00
Khuddite 0395ba3e79 derive bottom padding from header height for profiles list (#6152) 2024-11-23 20:20:09 +00:00
Bas van den Wollenberg b892d8be08 Fix media query used to prevent enter sending DM on mobile web (#6669) 2024-11-23 20:11:13 +00:00
Luke Lucas 9663b3e855 fix: nothing selected bug (#6260)
* fix: nothing selected bug

* fix: consolidate related logic for audience settings

* simplify

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 20:07:44 +00:00
Khuddite f802f81fa6 Fix broken pagination for lists tab on profile page (#6221)
* set onEndReachedThreshold to 2 for ProfileLists

* Add a footer for ProfileLists component for consistency

* Remove logs

* Revert onEndReachedThreshold change on Feed component

* Fix threshold defaults to match native

* Align lists and feedgens

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 19:52:36 +00:00
Roland Crosby 30af267bb4 Fix hovered repost button styling when logged out (#6222) 2024-11-23 19:17:29 +00:00
dan b1c1c49897 Fix avi button hitslops (#6662)
* Remove web hack from non-web file

* Remove hitSlop on the wrong Pressable

It is not doing anything useful.

* Extend avi column to prevent hit rect clipping

You can't click outside the parent on Android.

* Bump pressed opacity to .8

* Slightly reduce avi button hitslops

* Asymmetric hit slop
2024-11-23 19:13:17 +00:00
Khuddite e428474478 Fix inconsistent number formatting between mobile and web (#6384)
* Manual truncation & identify factor points for each lang

* Reduce indirection

* Add test

Co-authored-by: khuddite <biliie811028@hotmail.com>

* Handle big numbers, clarify special case

* Clarify the reason

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 19:12:25 +00:00
Horus Lugo 4dd62e24ea Fix Newline handling in Web's Composer (#6658) 2024-11-23 17:34:16 +00:00
Frudrax Cheng d29599fa6c Fix translate button not working (#6657)
* Update PostThreadItem.tsx

* Fix in-app browser usage

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 17:25:14 +00:00
Trivikram Kamat e9a792e4c1 Bump @atproto/dev-env to align with @atproto/api (#6652) 2024-11-23 14:01:05 +00:00
dan 631277dc3d Add a hotness thread sort (#6649)
* Add a hotness thread sort

* Bump @atproto/api
2024-11-23 03:27:17 +00:00
dan ac5b2cf31f Pass referrer on native (with an opt out) (#6648)
* Pass referer on native

* Add ChainLink3

* Add an opt out for sending utm

* Remove noreferrer on links

We do have <meta name="referrer" content="origin-when-cross-origin"> in HTML, should be sufficient.

* Narrow down the condition slightly

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-11-22 23:28:45 +00:00
dan fee2f5daa2 Remove indirection, insert between slices (#6645) 2024-11-22 22:01:52 +00:00
dan ba04bb58cd Fix leaking background (#6642) 2024-11-22 19:51:36 +00:00
dan 7fa47ef3c9 Simplify play icon shadow (#6641)
* Simplify play icon shadow

* Make it consistent across themes
2024-11-22 19:43:32 +00:00
rshigg ced67876cc Add ability to block account from post dropdown menu (#6091)
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2024-11-22 11:36:00 -08:00
Samuel Newman 247bc100cb Bump Typescript version to 5.7 (#6640) 2024-11-22 19:27:30 +00:00
Samuel Newman bc2a3aee0c fix avi follow deadzone (#6639) 2024-11-22 18:56:07 +00:00
Samuel Newman 3781074921 Add gif support to web (#6433)
* add gif support to web

* rm set dimensions

* rm effect from preview

* rm log

* rm use of {cause: error}

* fix lint
2024-11-22 17:58:29 +00:00
Samuel Newman 76ca72cf72 Dismissable toasts (#6345)
* dismissable toast

* adjust top offset

* improve a11y

* stretchy pull-down

* Dismiss web on tap

* Simplify code

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-22 16:11:59 +00:00
Samuel Newman 5d4aaa5b5f [a11y] Video - fix labels and make more detailed (#6635)
* fix labels and make more detailed

* move overall label to parent
2024-11-22 15:23:24 +00:00
Paul Coroneos 437bdcf9a9 Remove unnecessary lint rule suppression (#6544)
* ▫️remove deprecated react native eslint package. add react hooks and modern native eslint package. fix bugs

* in retrospect lets just remove the async from uselocalelanguage

* finally clean it all up

* revert yarn.lock

* restore logic
2024-11-22 15:22:48 +00:00
Samuel Newman d9ba324d7f Use android native animations (#6562) 2024-11-22 14:56:13 +00:00
Eric Bailey 72326844cd Improve error name and message for signed-in only feeds (#6577)
* Improve error name and message for logged-in only feeds

* Revert msg edit

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-22 14:45:59 +00:00
Samuel Newman a5dbb35237 Use outline style for repost cancel button (#6509)
* use outline style for repost cancel button

* use trans macro in JSX
2024-11-22 13:41:24 +00:00
dan a0acd514ab [Lightbox] Fix jump when zooming out on iOS (#6633) 2024-11-22 13:34:16 +00:00
Paul Coroneos 5028753367 Fix lightbox spinner (#6561)
* refactor imageitem useanimatedreaction logic

* revert copy/paste fix

* revert last commit

* Fix conditions

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-22 11:59:47 +00:00
surfdude29 058a29c6e3 Add CFBundleLocalizations key to Info.plist (#6567) 2024-11-22 11:34:37 +00:00
Frudrax Cheng 09ce65b24e Fix display language not switching correctly to Chinese on native. (#6621)
* Update deviceLocales.ts

* Update deviceLocales.ts
2024-11-22 11:32:25 +00:00
dan c858700c17 [Android] Lower Feed maxRenderPerBatch (#6624) 2024-11-22 04:35:53 +00:00
dan 625459add6 Fix some overdraw (#6617) 2024-11-21 23:40:37 +00:00
dan 391e0c4c18 Fix embeder (#6616) 2024-11-21 22:52:28 +00:00
dan dc3a42edb1 Reduce <Text> nesting (#6615)
* Move isOnlyEmoji out of RichText

To fix Fast Refresh.

* Make renderChildrenWithEmoji work with any children

* Always go through UITextView for consistency

It already contains the `selectable` and `iOS` checks inside.

* Move `emoji` check into `renderChildrenWithEmoji`

* Remove unnecessary intermediate UITextView nodes

* Make childHasEmoji check recursive

It didn't handle nested arrays etc correctly before.

* Remove the "children must be string" limitation

Should not be necessary now that we correctly handle nested arrays etc.

* Fix unnecessary regex reallocation

This doesn't have a global flag so it's okay to reuse.

* Remove unnecessary <Text> wrapper in RichText
2024-11-21 22:52:16 +00:00
dan 84724bb940 [Android] Patch react-native-svg to cache parsed paths (#6583) 2024-11-21 22:32:49 +00:00
Samuel Newman 9f1e648686 Fix overflow issue on iOS autocomplete, among other things (#6611)
* stop using ref in render

* fix display name fallback on web

* use unicode ellipsis for useGrapheme

* fix overflow issue

* sanitize handle/displayname on web
2024-11-21 22:32:32 +00:00
Aditya Mathur f67e00a85c fix: reused getRkey function in embed component (#6591) 2024-11-21 21:10:19 +00:00
jviide 48cda1350e Dedup zod versions in bskyembed/yarn.lock (#6610) 2024-11-21 20:45:40 +00:00
dan cc60566cde Fix Fast Refresh in <Text> files (#6609)
* Separate non-components from components

* Mark old Text as deprecated

* Move emoji utilities to non-React file

* Fix type

* Fix import
2024-11-21 20:44:40 +00:00
dan ff23ddb556 Don't underline links on native hover (#6588) 2024-11-21 19:20:46 +00:00
lauren dff11fc076 Pin exact version of React Compiler packages (#6607)
This PR pins the various React Compiler packages to their exact
versions. While it is typically safe to upgrade the compiler, we
recommend manual upgrades because changes in memoization may or may not
be unexpected.

In the near future we will open source an upgrade script that automates
comparing the current compiled output with the upgraded output and
prints a diff for human confirmation prior to committing the upgrade.
2024-11-21 17:40:39 +00:00
dan ad83b8303e Remove unused RN.Animated code (#6584)
* Remove unused RN.Animated code

* Rm more dead code
2024-11-21 12:10:34 +00:00
dan 6438ec6d28 Disable vertical scrollbars on Android only (#6586) 2024-11-21 12:10:16 +00:00
Samuel Newman 97a4ff1a4c Bump 1.95.0 (#6530) 2024-11-21 01:25:25 +00:00
Horus Lugo 6605970fcf Prevent ProfileHeaderHandle from breaking out of its parent view (#6574) 2024-11-20 21:47:06 +00:00
Samuel Newman 202df845f3 rm unused type lib (#6546) 2024-11-20 16:21:18 +00:00
Samuel Newman 0e4f6717ce fix change handle dialog on android (#6563) 2024-11-20 13:26:23 +00:00
Trivikram Kamat f1c221ed28 Bump typescript-eslint to 7.x (#6525)
* chore(deps-dev): bump typescript-eslint to 6.x

* chore(deps-dev): switch to @react-native/eslint-config

* chore(deps-dev): bump typescript-eslint to 7.x
2024-11-20 02:23:26 +00:00
Andrew Aquino 78e34c8d35 preserve video's last known time when scrolling away (#6239) 2024-11-19 22:42:25 +00:00
axiand f882cf9737 Implement Polish translation (#6283)
* Initial polish translation sweep

* rewrite feeds page flavor text

* bring up to date with dev branch, revisit some strings

* redoing some more...

* bring up to date

* rm dead strings, try out a different phrasing for threaded mode str

prev translation was nonsensical - we're already calling threads "wątki". let's try "recursive tree" instead to describe what threaded mode does

* tweaks here and there

* more tweaks. sign translation file

TL note: trying a new space-saving translation for send via direct message, old one made the context menu stretch

* space-saving translations for profile tabs

* up to date

* tl latest changes

* some small fixes

* few more tweaks around profile editing strings

* i dislike gendered languages

* yet more tweaks

* Update dates.ts

* Review suggestions (1)

* tiny fixes

* Review suggestions (2)

* Review suggestions (3)

* Review suggestions (4)

* "Anuluj wyciszenie"

* A few new strings

* Remove dead strings again

* Review suggestions (5)

* te -> to

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
2024-11-19 12:24:18 -08:00
smileyhead c0c8a192ce Update Hungarian translation for 1.94 (#6186) 2024-11-19 12:17:10 -08:00
Evan 3c33e42d35 Fix post interaction selectable text being cut off (#6527) 2024-11-19 19:07:27 +00:00
Paul Coroneos 5d7cfa0206 Remove aria-pressed attr from button. Closes #6325 (#6402) 2024-11-19 19:07:13 +00:00
Samuel Newman 103dfe2145 add back expo-system-ui (#6529) 2024-11-19 19:02:28 +00:00
dan 31b0d7cede Render post menu items lazily (take two) (#6473)
* Revert "Revert "Render dropdown menu items lazily (#6437)" (#6470)"

This reverts commit 0b38c77faa.

* Lazily initialize menu items

* Split in two files

* Make it work on mobile

This is wonky because our useMenuDialog abstraction only has `isOpen` on web. I couldn't figure out a way to make it work xplat so I'm just tracking it myself manually.

* Fix typo in comment
2024-11-19 18:27:56 +00:00
Trivikram Kamat 39c9f7248e Remove usused direct dependencies on 'webpack' (#6466)
* Remove usused direct dependencies on 'webpack'

* Remove direct dependency on 'babel-plugin-react-native-web'
2024-11-19 15:45:09 +00:00
Trivikram Kamat 2b30b0f7c6 Remove unused 'lodash' dependencies (#6472) 2024-11-19 15:35:16 +00:00
Paul Coroneos ff5ad38253 Leverage jsx transform to remove unnecessary react imports and update eslint config (#6516)
* update eslint config with jsx runtime

* leverage jsx transform to remove unnecessary react imports and update eslint config

* run yarn lint --fix to remove eslint disables related to react/prop-types that is now disabled
2024-11-19 15:33:07 +00:00
dan cfc653a5f4 Split FeedSlice into FlatList rows (#6507) 2024-11-19 15:24:08 +00:00
Samuel Newman 8d5e61e1e5 Use native modal for signup queue screen (#6392)
* fix top inset for signup queue

* use native modal for queue screen

* spacing for if text is super large

* don't allow scroll bounce
2024-11-19 14:43:40 +00:00
Samuel Newman ea3fe93be9 Attempted video perf improvements (#6519)
* remove layout animations from video

* only show button/spinner when necessary

* use native activityindicator rather than loader
2024-11-19 12:50:06 +00:00
dan 9a57d2a538 Add Profiler build for Android (#6510) 2024-11-19 02:20:58 +00:00
dan 7b6c182723 Add useHandleRef as a lighter alternative for useAnimatedRef (#6500) 2024-11-18 22:21:47 +00:00
dan 4f0f9eb413 Fix TagMenu initial render perf (#6483)
* Split tag menu dialog content

* Log the actual error please

* Fix it on native
2024-11-18 22:05:51 +00:00
Martin Pittenauer 1486e5cc5a Help Siri to correctly pronounce Blue Sky. (#6496)
* Add CFBundleSpokenName

Help Siri to correctly pronounce Blue Sky. Instead of pronouncing it like “Lebowski”.

* Format

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-18 21:55:35 +00:00
dan ee49ca7a3d Hardcode Giphy embed height (#6475) 2024-11-18 21:55:20 +00:00
dan b87c94e6d9 Extract RepostButton inner dialog (#6498)
* Extract RepostButton inner dialog

* use `useDialogContext` instead of passing prop

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-11-18 21:51:23 +00:00
dan ec97352201 Fix layout jumps for images (#6474) 2024-11-18 21:42:32 +00:00
dan 924f1e0e7f Optimize ContentHider (#6501) 2024-11-18 17:44:45 +00:00
Guido Leenders 523d1f01a5 Change translation of "appeal" [ER]. 2024-11-18 15:07:04 +01:00
dan 0b38c77faa Revert "Render dropdown menu items lazily (#6437)" (#6470)
This reverts commit e9fe8d90ef.
2024-11-17 21:06:22 +00:00
Guido Leenders 93dec879ad Included review remarks by SleeplessByte [ER]. 2024-11-17 21:10:49 +01:00
dan 2f74a8dbe9 Upgrade React Compiler (take two) (#6460)
* Revert "Revert "React compiler beta and reenable rule (#5898)" (#6071)"

This reverts commit 7111e38cd4.

* Update the compiler

* Don't inline compiler runtime import
2024-11-17 18:50:28 +00:00
dan dd9a2f60dd Fix build (#6459) 2024-11-17 17:26:45 +00:00
dan 474c4eff29 Use compiler-safe Reanimated get/set APIs (#6391)
* Convert lightbox to get/set

* Work around software-mansion/react-native-reanimated#6613

* Use get/set in more places

* Port MainScrollProvider to get/set

* Port more to get/set

* Port composer to get/set

* Remove unnecessary thread hops in composer

* Port more things to get/set

* Convert more to get/set, remove redundant runOnJS

* Convert remaining cases to get/set
2024-11-17 15:06:28 +00:00
Trivikram Kamat d575a2fdaa Remove unused 'react-scripts' devDependency (#6441) 2024-11-17 14:57:01 +00:00
Samuel Newman 8d1c93efc8 fix video thumb cleanup (#6431) 2024-11-17 14:56:15 +00:00
dan e9fe8d90ef Render dropdown menu items lazily (#6437) 2024-11-17 03:15:03 +00:00
dan ddf2a64a72 [Web] Clicking root link twice refreshes the screen (#6434)
* [Web] Clicking root link twice refreshes the screen

* Scope it to navigation action

In practice this means -- just for the bottom mobile web tab bar.
2024-11-17 00:37:34 +00:00
Paul Frazee 3c30bb1d35 Release 1.94 (#6430)
* Fix errors in hindi .po

* Run intl extract

* Update join count
2024-11-16 15:12:06 -08:00
dan 965bcc44dc Sort pins last in thread view (#6426) 2024-11-16 22:02:33 +00:00
dan edaf230612 Remove typography NUX and consistently call upsertProfile (#6424)
* Make profile upsert unconditional

* Remove Typography NUX

* Early exit NUXes on unknown creation date

* Clarify via comment
2024-11-16 21:39:47 +00:00
Hailey 9bbea3f33a Email verification tweaks (date) (#6416) 2024-11-16 13:34:30 -08:00
Luan 43d6c15e88 Update PT-BR messages.po (#6284)
* Update PT-BR translation

* Update PT-BR translation

* Update messages.po

* Update PT-BR translation for consistent usage of "postagem"

* Update messages.po

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gildásio Filho <gildasiogx@gmail.com>

* Update src/locale/locales/pt-BR/messages.po

* Update src/locale/locales/pt-BR/messages.po

* Update src/locale/locales/pt-BR/messages.po

* Update src/locale/locales/pt-BR/messages.po

* Apply suggestions from code review

Co-authored-by: Gildásio Filho <gildasiogx@gmail.com>

---------

Co-authored-by: Gildásio Filho <gildasiogx@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-11-16 12:44:11 -08:00
CanGiante 4e1ec0db86 Fix the translation of the adjective "open" (#6206) 2024-11-16 12:27:06 -08:00
Elena Torró d8e2a90dd7 Fix minor localization issues in Spanish: (#6094)
* Fix minor localization issues in Spanish:

- Use 'pack de inicio' instead of 'paquete de inicio'
- Use 'Inténtalo' instead of 'Intenta'
- Fix 'Por favor'
- Do not use 'una' as article for 'posts'
- Use 'Eliminado' instead of 'Removido'

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Use 'paquete de inicio' and fix typos

---------

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>
2024-11-16 12:15:42 -08:00
Kevin Scannell 1f9c94a3cc Update Irish localization to 100% (#6387) 2024-11-16 12:13:27 -08:00
Stanislas Signoud 8e40b1147a Update French translations (November 9th, 2024) (#6190)
* Remove legacy strings in FR localisation file

* Update French translations

* Fix typos and inconsistent French translations

* Get rid of a few 'Veuillez' in French locale to appear less formal
2024-11-16 12:08:59 -08:00
Marco Maroni 0fd6eeb025 Update italian translation (#6188)
* Updated and added missing italian translation

* Resolved conflicts

* Fix conflict

* Fix some translation

* Update messages.po

Some other fixes
2024-11-16 12:08:22 -08:00
FalKoopa 330ed124d6 Big update of the Hindi translation (#6077)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Resolve conflicts

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po based on feedback

* Update messages.po

* Update messages.po
2024-11-16 12:08:02 -08:00
Ivan Beà 01469b092f Update catalan messages.po (#6030)
* Update catalan messages.po

back to 100%
Please have a look at it @jordimas @darccio @surfdude29 @rortan134

* Update catalan messages.po

aplying @jordimas corrections

* Update messages.po
2024-11-16 12:07:17 -08:00
Samuel Newman c81e149749 use IAB for translate (#6421) 2024-11-16 20:06:24 +00:00
Samuel Newman ebdbf55d14 manually implement drawertype logic (#6419) 2024-11-16 20:06:11 +00:00
Frudrax Cheng 6aa14f3203 Update Chinese & Cantonese localization (#6020)
* New translations messages.po (Chinese Simplified)

* New translations messages.po (Chinese Traditional)

* New translations messages.po (Chinese Traditional, Hong Kong)

* Update translates from crowdin

* Run intl:extract

* Update translates from crowdin

* Update translates from crowdin

* zh-CN: Fix typo

* zh-HK: Update translates

* Update translates by notlin4

* Update translates from crowdin

* Update translates from crowdin

* zh-CN: Clarify description text

* Update translates from crowdin

* zh-HK: Update translates

* zh-CN: Re-translate 'Feed'

* zh-HK: Update Translates

* Update translates from crowdin

* CN & TW: Consistency fixes

* Update translates from crowdin

* Update translates from crowdin

* Unify the translation of 'Yes'

* Update translates from crowdin

* Update translates from crowdin

* zh-CN: Optimize media tag translates

* CN & HK: Update translates from crowdin

* Improved 'starter pack' translations

* CN & HK: Improved onboard translations

* zh-CN: Improved translation

* Update translates from crowdin

* zh-HK: Improved translation

* Remove extra spaces before the time

* Update Translates from crowdin

* Update translates from crowdin

* zh-CN: Improved translation

* CN: Fix 'mute for everyone' translates

* Retranslate 'self-labels'

* Retranslate 'self-labels' again

* CN & HK: Improved translation

* CN & HK: Improved translation#2

* CN: Improved translation

* Rollback 'report' translation

* Hot fix

* CN: Clarify label annotations

* TW: Improved translation

* Update translates from crowdin

* Translated email verification dialog & Fix HK typo
2024-11-16 12:05:30 -08:00
Minseo Lee 0f1abfa9d4 Update Korean localization (#6014)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-11-16 12:04:59 -08:00
Takayuki KUSANO 71d5dc0885 Update Japanese translation (#6013)
* Update translations

* Remove obsoleted messages

* Fix the msg pointed out by Hima-Zinn

* Update translation

* Update translation

* Applied suggested fixes by Hima-Zinn

* Translate 1 message and apply middlingphys' suggesstion

* Translate unread related msgs, etc.

* Update translation

* Translate 2 new msgs, remove obsolete msgs

* Translate 1 message

* translate backdated info

* Update translation
2024-11-16 12:04:36 -08:00
Hailey c0fb5245f1 Tweak email verification dialog (#6397) 2024-11-15 17:32:28 -08:00
Samuel Newman a9cacbf265 Better error message (+ translations!) (#6349)
* clean network errors for new common eerors

* translate errors
2024-11-15 22:16:57 +00:00
Hailey 3bd1437133 [Statsig] Remove client downsampling (#6153) 2024-11-15 11:40:43 -08:00
Eric Bailey 400c432283 Reduce calls to getLogs (#6381) 2024-11-15 11:43:21 -06:00
Eric Bailey db39f3e98a Reduce listConvos requests (#6378)
* Reduce page size for request

* Remove refetch interval entirely

* Add comment

* Optimistically mark as read

* Drop default active poll interval to 60s from 5min

* Only optimistically update unread count if success
2024-11-15 11:34:31 -06:00
dan 18aaa19b97 [Lightbox] Make the animation faster (#6382)
* [Lightbox] Make the animation faster

* Make it faster on Android too
2024-11-15 17:32:25 +00:00
Marc Rousavy 05312cce33 feat: Tweak shared element animation to make it much smoother (#6336) 2024-11-14 19:37:41 +00:00
Bartosz Kaszubowski 7d34f6bb5c NewChatDialog: remove extra padding on web (#6333) 2024-11-14 17:56:33 +00:00
Guido Leenders f139bcbcd4 Fix typo [PR]. 2024-11-14 10:52:08 +01:00
Guido Leenders 2cb6e713bb First completion [ER]. 2024-11-14 10:49:23 +01:00
Guido Leenders 6aa44d681d More Dutch translations [ER]. 2024-11-14 10:05:30 +01:00
Guido Leenders 1b87351d38 More Dutch translations [ER]. 2024-11-13 23:48:45 +01:00
Eric Bailey 5f7caf3010 Make ToggleButton full width everywhere (#6302)
* Fix 'Show badge' button label being cut off (#6215)

* Make em full width

---------

Co-authored-by: Khuddite <62555977+khuddite@users.noreply.github.com>
2024-11-13 21:55:19 +00:00
Paul Frazee 9640f08b8d Modify self labels for clarity 2024-11-13 21:54:24 +00:00
Paul Frazee ea0a1c3200 Test fixes 2024-11-13 21:54:24 +00:00
dan 4ca5267b98 [Lightbox] Small tweaks (#6301)
* Tweak lightbox springs

* Speed up dismiss speed

* Don't scroll to top while active lightbox

* Make Android a bit faster
2024-11-13 21:13:07 +00:00
dan 3bab7f7540 Patch RCTScrollView to fix centerContent (#6298) 2024-11-13 16:34:24 +00:00
Guido Leenders ef14faaa58 More Dutch translations [ER]. 2024-11-13 17:23:04 +01:00
Samuel Newman 017b7647b1 Add subtle web hover to treeview replies (#6142)
* add subtle web hover to treeview replies

* don't highlight indentation

* adjust position

* clean up some styles
2024-11-13 14:25:56 +00:00
Guido Leenders 54a4a6c161 More Dutch translations [ER]. 2024-11-13 14:17:36 +01:00
Guido Leenders 8754527aa6 More Dutch translations [ER]. 2024-11-13 12:15:15 +01:00
Khuddite aa55798e55 Upgrade react-native-drawer-layout version to v4.0.1 (#6274) 2024-11-12 23:47:28 +00:00
Samuel Newman 6471e809aa Add backdated post indicator (#6156)
* add backdate indicator

* pill style

* add indexedAt

* update indicator - new copy, date in pill

* complete alf migration

* accidentally committed the missing indexedAt *again*!

* copy tweak
2024-11-12 21:02:41 +00:00
Samuel Newman f2916ce528 Slightly reduce rerenders in drawer (#6270)
* slightly reduce renders in drawer

* fix missing hook
2024-11-12 20:44:13 +00:00
Hailey 427f3a8bd7 Add email verification prompts throughout the app (#6174) 2024-11-12 11:18:53 -08:00
Samuel Newman dd8d14e133 dedupe date parsing (#6267) 2024-11-12 18:50:37 +00:00
Guido Leenders be429d5750 More translations [ER]. 2024-11-12 19:48:17 +01:00
Samuel Newman df3f71286d add subtle web hover to "View full thread" (#6256) 2024-11-12 17:49:49 +00:00
Samuel Newman b60629aff8 use hairline for feedlike (#6257) 2024-11-12 17:49:14 +00:00
Khuddite ae97032c41 Increase bottom padding for mobile login/signup footer (#6254) 2024-11-12 17:26:13 +00:00
dan b2e11d3171 Reduce Reanimated serialization traffic (#6219) 2024-11-12 17:19:52 +00:00
devin ivy d7841037f1 Embedr: fix build / node version (#6265)
* embedr: increase rate limits

* update embedr node version, build

* tidy
2024-11-12 12:14:47 -05:00
devin ivy af31ceb2b3 embedr: increase rate limits (#6255) 2024-11-12 10:37:33 -05:00
Guido Leenders 874a624e25 Add first translation of Dutch [ER]. 2024-11-12 16:19:30 +01:00
Guido Leenders 5910f78329 Revert changes to packages.json [PR]. 2024-11-12 10:00:01 +01:00
Guido Leenders b6fdde2f04 Allow use of Dutch translations [ER]. 2024-11-12 09:45:10 +01:00
Khuddite 5ee809e421 Update error component of lists to take up the full height instead of its content height (#6236)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-11-11 23:21:07 +00:00
Trivikram Kamat 7008f61ea4 Update Node.js to 20.x in Dockerfile (#6099)
* Update Node.js to 20.x in Dockerfile

* Update Node.js types and engines entry to 20.x

* Update Node.js version in .nvmrc

* Use node version from .nvmrc in linting job

* Use Type Assertion for clearTimeout
2024-11-11 18:58:22 +00:00
Minseo Lee 9e1a16686a deleted account (#6224) 2024-11-11 18:34:09 +00:00
JustSNguyen 2728de03d3 Fix unscrollable body when returning to desktop mode from mobile mode with navigation drawer open. (#6201)
* fix: only lock body when drawer is opened and not in desktop mode

* Reuse variable

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-11 18:33:47 +00:00
Samuel Newman b85a7da26b fix error screen (#6235) 2024-11-11 18:13:05 +00:00
Khuddite 57464a8fe0 Increase copied animation lingering time for reduced motion (#6220)
* increase copied animation lingering time for reduced motion

* flip the condition

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-11 10:40:47 +00:00
dan 9247407c70 Don't render unnecessary <Portal> instances (#6217) 2024-11-10 23:03:55 +00:00
Hazem Ali 9a10af7117 Fix Retain Cycles in SheetViewController (#6202)
* Fix retain cycle in SheetViewController.swift

* Fix retain cycles
2024-11-10 22:10:09 +00:00
dan b4412f3333 Fix render loop on Android (#6213) 2024-11-10 20:30:31 +00:00
Hailey 89c93313a3 android scroll performance fixes pt. 1 (#6196) 2024-11-09 16:24:51 -08:00
dan 3aeee1e4aa Fix web image layout (#6195) 2024-11-09 15:15:20 -08:00
dan 42abd97f61 [Lightbox] Always rely on Expo Image cache (#6189)
* Inline useImageAspectRatio

* Switch AutoSizedImage to read dimensions from Expo Image cache

* Include thumbnail dimensions in image data

* Use dims from Expo Image cache in lightbox

* Fix wiring so all thumbnails get dimensions

* Fix type

* Oops
2024-11-09 22:41:14 +00:00
dan 2d73c5a24c [Lightbox] Open animation (#6159)
* Measure all rects for embeds

* Measure avi rects too

* Animate lightbox in and out

* Account for safe area in the animation

* Tune spring times

* Remove null checks for measurements

* Remove superfluous view

* Block swipe while opening

* Interpolate width/height on native side for Android

* Make it fast by animating only affine transforms

* Fix tall image final state

The initial animation frame is still off on both platforms.

* Try to squeeze perf

* Avoid blank images during animation on iOS

* Fix bad rebase

* Fix a huge memory issue due to expo/expo#24894

* Fix last frame flash

* Fix thum dim calculation for tall images
2024-11-09 22:34:46 +00:00
Trivikram Kamat e73d5c6c20 Use ENV key=value in Dockerfile (#6100) 2024-11-09 13:24:48 -08:00
surfdude29 bf0a847ffe Tiny tweak to Thread Preferences string (#6177) 2024-11-08 23:28:23 -08:00
khuddite a6d009d06b set includeFontPadding false for fixed TextInput height on Android (#6170) 2024-11-09 00:10:04 +00:00
dan a908308810 Revert "Revert "Increase memory on iOS (#6141)" (#6165)" (#6176)
This reverts commit 7c45f7dcc7.
2024-11-09 00:08:00 +00:00
Samuel Newman 5da3f29498 [Settings] Ungate, and remove old settings (#6144)
* move export car dialog

* move disableemail2fadialog

* delete old settings screens

* fix type error

* Update Navigation.tsx

* Delete AccountDropdownBtn.tsx

* remove old change handle modal

* delete add app paswords

* forgot to actually delete the change handle modal
2024-11-08 22:42:18 +00:00
Hailey e8a03058bb options to checkbox (#6175) 2024-11-08 14:28:52 -08:00
Samuel Newman 7b5e8ae5ce [Settings] Improved account switcher (#6131)
* move out avatarstack to own file

* improved settings switch

* prefix with @

* fix types

* up chevron

* respect reduced motion setting

* respect reduced motion in other place
2024-11-08 19:04:18 +00:00
Samuel Newman e9d7c444ce fix 3 image grid in DMs (#6163) 2024-11-08 18:00:39 +00:00
dan ce8d62f8c9 Fix stuck lightbox (#6166)
* Add early exit guards once the gesture is over

* Work around the Reanimated bug

* Move derived reaction upwards to avoid duplicating it
2024-11-08 17:48:01 +00:00
dan 7c45f7dcc7 Revert "Increase memory on iOS (#6141)" (#6165)
This reverts commit 6570f56d8e.
2024-11-08 16:24:03 +00:00
gpp-0 6b1ffffce9 Fix non-home screen soft resetting when feed is selected from right nav (#6158) 2024-11-08 04:19:52 +00:00
Samuel Newman 468c4b8f5a Improve chat performance (#6157)
* fix worklet funcs on gestures

* don't access .value in render
2024-11-08 03:38:32 +00:00
dan 22dd4947f7 [Lightbox] Add border radius to avatars (#6136)
* Preserve shape in lightbox

* Rename shapes to semantic meanings

It looks like after all I do want to fork based on those.

* Round avatars on the web

* Oops
2024-11-08 02:52:03 +00:00
dan 5d0610d419 [Lightbox] New dismiss gesture (#6135)
* Make iOS scrollview bounded to the image

I've had to remove the dismiss handling because the scroll view no longer scrolls at rest.

* Fix double-tap not working right after a vertical swipe

It seems like for some reason the vertical swipe is still being handled by the scroll view, so double tap gets eaten while it's "coming back". But you don't really see it moving. Weird.

* Add an intermediate LightboxImage component

* Hoist useImageDimensions up

* Implement xplat dismiss gesture

This is now shared between platforms, letting us animate the backdrop and add a consistent "fly away" behavior.

* Optimize Android compositing perf

* Fix supertall images

For example, https://bsky.app/profile/schlagteslinks.bsky.social/post/3l7y4l6yur72e

* Fix oopsie
2024-11-08 02:49:32 +00:00
Samuel Newman 6570f56d8e Increase memory on iOS (#6141)
* increase memory on ios

* add extended-virtual-addressing
2024-11-07 13:21:05 +00:00
dan d666a2d7c3 [Lightbox] Set 2 as minimal allowed zoom level (#6132)
* [Lightbox] Set 2 as minimal allowed zoom level on iOS

* Fix both Android and iOS
2024-11-06 20:38:22 +00:00
Samuel Newman 27bbf8b67a dev options in new settings (#6128) 2024-11-06 17:59:22 +00:00
Samuel Newman 325bf1988a link up verify email dialog (#6042) 2024-11-06 17:55:10 +00:00
Hailey 324c5a44a5 fix prop names (#6130) 2024-11-06 17:47:51 +00:00
khuddite f95acdc836 Fix thin red circle around Like button on iOS (#6123)
* remove animation UI from DOM tree when not animated

* improve naming of vars

* more var changes

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-11-06 12:36:31 +00:00
dan 206df2ab80 Remove SCREEN from lightbox layout (#6124)
* Assign an ID to lightbox and use it as a key

* Consolidate lightbox props into an object

* Remove unused prop

* Move SafeAreaView declaration

* Keep SafeAreaView always mounted

When exploring Android animation, I noticed its content jumps on the first frame. I think this should help prevent that.

* Pass safe area down for measurement

* Remove dependency on SCREEN in Android event handlers

* Remove dependency on SCREEN in iOS event handlers

* Remove dependency on SCREEN on iOS

* Remove dependency on SCREEN on Android

* Remove dependency on JS calc in controls

* Use flex for iOS layout
2024-11-06 00:21:35 +00:00
dan 6b826fb88d Lower feedfeedback seen threshold to 0.5s (#6127) 2024-11-05 22:27:48 +00:00
dan 84fb1b7f97 Update Reanimated (#6126)
* Update Reanimated

* Fix types

* Fix Reanimated value access warnings

* Fix types
2024-11-05 22:27:36 +00:00
Samuel Newman b0c5a37daa Improve accessibility for navigation on web (#6120)
* improve accessibility for bottom bar tabs

* improve a11y for left nav

* group main content into <main>

* use flex_1 rather than absoluteFill
2024-11-05 16:48:36 +00:00
Rohit Bansal 9772116343 Fixed issue 5845 (#6085) 2024-11-05 16:27:30 +00:00
Samuel Newman b0b00c9c7a use megabytes rather than mebibytes for video limit (#6117) 2024-11-05 16:00:30 +00:00
Bartosz Kaszubowski a78179aab3 StarterPack: fix "Follow All" processing layout (#6111) 2024-11-05 15:14:15 +00:00
Lars Kappert f8fb6cb9b3 Fix start value in youtube embed by removing "s" from url param (#6113) 2024-11-05 12:43:20 +00:00
Samuel Newman ab4e36115b return to using whitespace (#6109) 2024-11-04 21:47:35 +00:00
Samuel Newman 86840f2785 translate sort replies (#6110) 2024-11-04 21:47:21 +00:00
dan 26c48373e2 Refactor lightbox prop drilling (#6073)
* Refactor lightbox footer to render prop

* Unify lightbox types

* Unindent

* Refactor LightboxFooter props

* Move LightboxFooter into the implementation file
2024-11-04 21:31:21 +00:00
dan 174988bc5a Unify dimensions cache between lightbox and feed (#6047)
* Remove useless memo

* Use explicit values when useImageAspectRatio doesn't know

It's not very good that you can't distingiush when we haven't loaded vs when we're certain. This shifts the burden of dealing with missing values to the caller.

* Check cache early

* Handle src change

* Rewrite image-sizes.fetch to avoid mixing async styles

* Make image-sizes LRU

Code is copy paste from useImageDimensions.ts

* Rm unused fields

* Derive aspect on the fly

* Factor useImageDimensions out of useImageAspectRatio

* Move useImageDimensions into image-sizes

* Make lightbox use the same cache

* Wire up known dimensions to the lightbox

* Handle division by zero in the hook

* Use safe aspect for lightbox calculations
2024-11-04 21:28:27 +00:00
Cynthia ac9d910e1e fix(a11y): avoid plain divs as button or tabs (#6084)
Co-authored-by: Hailey <me@haileyok.com>
2024-11-03 09:18:27 -08:00
Yaël Guilloux c580f20b53 Improve focus-visible outlines in navigation (#6061)
* feat add focus_visible atom

* feat use focus_visible atom in Button.tsx style

* Tweak

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-01 23:18:19 +00:00
dan 7111e38cd4 Revert "React compiler beta and reenable rule (#5898)" (#6071)
This reverts commit 1fc684aaef.
2024-11-01 22:17:05 +00:00
dan 3eb531b000 Composer UI fixes (#6065)
* Fix close button overlap

* Make footer actually sticky on web

* Special toast for thread

* Only stick to bottom for last post
2024-11-01 22:02:39 +00:00
dan 46004fb2d0 Fix duplicates in thread composer (#6068) 2024-11-01 21:55:37 +00:00
Samuel Newman d33ce1dea1 change language for autoplay setting (#6069) 2024-11-01 21:10:25 +00:00
dan ff01ffe35f Fix some images getting squished on Android due to EXIF tags (#6058) 2024-11-01 19:25:31 +00:00
Ben Harris 5c5fc3230b fix text clipping around external embed's domain (#6012) 2024-11-01 12:15:44 -07:00
dan 2398b84d17 Change post Follow button color on toggle (#6059) 2024-11-01 19:09:28 +00:00
Hailey fb4210b36c Add dids for discover debug (#6063)
* add dids

* keep is_internal
2024-11-01 19:09:13 +00:00
dan 8d5b551ed6 Hook debugTopics to override X-Bsky-Topics (#6060) 2024-11-01 18:28:54 +00:00
dan 125ac5049a [Statsig] Track threads (#6057)
* [Statsig] Send thread length

* Split events
2024-11-01 16:21:18 +00:00
dan 1c2186bc03 Fix character count with intent (#6056) 2024-11-01 16:21:10 +00:00
dan 21b82fa19c Fixes for thread composer on Android (#6045)
* Extract function to read contentHeight later

* Remove autoscroll to bottom

We're going to implement this in the UI layer instead.

* Remove worklet from non-worklets to avoid confusion

* Rename and invert hasScrolled* variables

Their naming was too ambiguous (they used to represent "has scrolled _away_ from X"). I inverted them and clarified the naming. No functional changes.

* This should not be necessary

It's already called not just from UI thread. And it only sets shared values, which can be done from either thread.

* Make hasScrolledTo* derived values

It wasn't always correct to derive them manually because reading from .value is stale on JS thread. We could fix that by using the local variables but it makes more conceptualy sense to treat these as derived anyway.

* Reimplement autoscroll-to-bottom in UI layer

Doing it here ensures we also do it when you add an image at the end of the thread. Otherwise it's very confusing where it went.

* Use fancy ScrollView

This seems to fix ScrollView getting stuck after inserting images at the thread end on Android.

* More aggressive scroll-to-bottom

* "Fix" cursor getting stuck on Android

* Revert "Use fancy ScrollView"

This reverts commit 04e34a54e3b75f8a77de5062bff5fe6e76420bbb.
2024-11-01 03:47:53 +00:00
dan 7a08d61d88 Thread composer UI (#6050)
* Basic adding of posts

* Switch active post on focus

* Conditionally show plus button

* Insert posts midthread

* Track active/inactive post

* Delete posts in a thread

* Focus after deletion

* Tweak empty post detection

* Mix height for active only

* Move toolbar with post on web

* Fix footer positioning

* Post All button

* Fix reply to positioning

* Improve memoization

* Improve memoization for clearVideo

* Remove unnecessary argument

* Add some manual memoization to fix re-renders

* Scroll to bottom on add new

* Fix opacity on Android

* Add backdrop

* Fix videos

* Check alt for video too

* Clear pending publish on error

* Fork alt message by type

* Separate placeholder for next posts

* Limit hitslop to avoid clashes
2024-11-01 03:45:55 +00:00
dan 01c9ac0e13 Implement posting threads (#6049)
* Implement posting a thread

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>

* Fix native build

* Remove dependency on web crypto API

* Fix unrelated TS error (wtf)

---------

Co-authored-by: Mary <148872143+mary-ext@users.noreply.github.com>
2024-11-01 03:42:38 +00:00
dan 4c31403330 Check video state for the entire thread (#5957)
* Switch to using post ID for post actions

* Pass post-bound dispatch to ComposerPost

* Check video state for entire thread

* Always bind post actions to an ID

* Rename variable for consistency

* Fix clashing keys
2024-11-01 03:37:30 +00:00
charlotte ✨ 68bb451051 Link to app.bsky.actor.profile record in link rel=alternate (#6046)
This disambiguates ATProto identities from Bluesky profiles
2024-11-01 01:56:25 +00:00
Tom Sherman 193954d401 Add AT URIs as alternate links (#6033) 2024-11-01 00:31:29 +00:00
Samuel Newman 1b69ecb57a Tweak 2FA enabled state (#6043)
* tweak 2fa presentation

* tweak dialog text style
2024-11-01 00:30:42 +00:00
Samuel Newman 3b68dfeb3b allow emoji in link facets (#6039) 2024-10-31 21:51:58 +00:00
devin ivy d5f8d8224f bskyweb: fix post text expansion (#6016)
Co-authored-by: Hailey <me@haileyok.com>
2024-10-31 14:24:56 -07:00
Samuel Newman aa6aad652e [Settings] Thread prefs revamp (#5772)
* thread preferences screen

* minor tweaks

* more spacing

* replace gate with IS_INTERNAL

* [Settings] Following feed prefs revamp (#5773)

* gated new settings screen

* Following feed prefs

* Update src/screens/Settings/FollowingFeedPreferences.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/screens/Settings/FollowingFeedPreferences.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* replace pref following feed gate

* Update src/screens/Settings/FollowingFeedPreferences.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* use "Experimental" as the header

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* [Settings] External media prefs revamp (#5774)

* gated new settings screen

* external media prefs revamp

* replace gate ext media embeds

* Update src/screens/Settings/ExternalMediaPreferences.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* add imports for translation

* alternate list style on native

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* [Settings] Languages revamp (partial) (#5775)

* language settings (lazy restyle)

* replace gate

* fix text determining flex space

* [Settings] App passwords revamp (#5777)

* rework app passwords screen

* Apply surfdude's copy changes

Thanks @surfdude29!

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* format

* replace gate

* use admonition for input error and animate

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* [Settings] Change handle dialog (#5781)

* new change handle dialog

* animations native only

* overflow hidden on togglebutton animation

* add a low-contrast border

* extract out copybutton

* finish change handle dialog

* invalidate query on success

* web fixes

* error message for rate limit exceeded

* typo

* em dash!

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* another em dash

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* set maxwidth of suffixtext

* Copy tweak

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* [Settings] Notifs settings revamp (#5884)

* rename, move, and restyle notif settings

* bold "experimental:"

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-10-31 20:45:34 +00:00
dan d85dcc3dd0 Explicitly mark lightbox worklets (#6038) 2024-10-31 17:34:33 +00:00
Eric Bailey 41452de165 Improve notification localization (#5550)
* Improve notification localization (#3911)

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update PostMeta.tsx

* Update RightNav.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* a11y

* Update FeedItem.tsx

* Update PostThreadItem.tsx

* Update PostThreadItem.tsx

* revert

* Update FeedItem.tsx

* Update FeedItem.tsx

* Update FeedItem.tsx

* Revert "Merge remote-tracking branch 'upstream/main' into Improve-notification-localization"

This reverts commit f435d1e7ed, reversing
changes made to dae2aee676.

* Reapply "Merge remote-tracking branch 'upstream/main' into Improve-notification-localization"

This reverts commit c93ac19048.

* Update ThreadgateBtn.tsx

* Rm import edits for now

* Cleanups

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2024-10-31 12:11:54 -05:00
dan 1e32327de0 Measure tapped image coordinates before opening lightbox (#6001)
* Measure image on press

* Pass dimensions to the lightbox component
2024-10-31 16:24:15 +00:00
Eric Bailey 6f4703e814 Fix width handling for deactivated screen (#5810) 2024-10-31 10:42:35 -05:00
Nawapon Boonjua 9a82d20bd9 add Thai Language translation support (#5879)
* add Thai Language support

* Update lingui.config.js

* Update dates.ts

* Update helpers.ts

* Update i18n.ts

* Update i18n.web.ts

* Update languages.ts

* Update messages.po

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-10-30 12:13:08 -07:00
Ben Harris e9f6a8e58d fix warning on labeler profile: emoji detected but emoji not enabled (#6011) 2024-10-30 12:14:34 +00:00
brian 21ba1fad55 Added blur to search's onPressMenu (#6017) 2024-10-30 12:13:52 +00:00
Samuel Newman 1fc684aaef React compiler beta and reenable rule (#5898)
* use react compiler beta and reenable rule

* use react-compiler-runtime

* error -> warn

* move runtime out of dev deps
2024-10-30 02:47:39 +00:00
dan a22685c345 Sort imports (#6009)
* Mark import sort/order/style rules as error

* npm run lint -- --fix
2024-10-29 23:02:48 +00:00
dan 0ae64a1e0a Clarify build instructions (#6008)
To address http://localhost:19006/profile/danabra.mov/post/3l7opdotmoc2u.
2024-10-29 23:02:12 +00:00
Eric Bailey aa07ed6174 Upgrade all tiptap deps to latest (#5232) 2024-10-29 22:31:01 +00:00
Samuel Newman c92f6d5f88 width full on text container (#6007) 2024-10-29 22:19:28 +00:00
Hailey d74aaf904b Bump 1.94.0 (#6006) 2024-10-29 14:46:21 -07:00
dan ba802eb0f2 Add subtle web hover to interactive rows (#5989)
* Add subtle web hover to interactive rows

* Adjust numbers

* Ignore touch devices
2024-10-29 21:42:37 +00:00
Samuel Newman c8f264b78b Settings revamp (#5745)
* start building storybook

* add title

* add some styles

* try out new icons

* more settings list component parts

* make text do the spacing

* clean up storybook

* gated new settings screen

* switch account

* add current profile

* use Layout.Screen

* Layout.Header and Layout.Content

* translate helpdesk text

thanks @surfdude29!

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* add account settings

* undo changes to export car dialog

* privacy and security screen

* Translate protect account stuff

Thanks @surfdude29!

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* content and media settings

* about settings

* 2fa copy

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* a11y and appearance

* use new components for appearance settings

* redesign accessibility settings

* Update ContentAndMediaSettings.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* add divider

* remove a11y and appearance middleman screen

* fix web settingslist styles

* new SettingsList.Group component

* explain how portal magic works

* hide pwioptout in old location

* Update Settings.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* replace gate with `IS_INTERNAL`

* add IS_INTERNAL to app-info.web

* fix profile area growing

* add close button to switch account

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-10-29 21:14:54 +00:00
dan ab492cd77a Show almost-instant preview when opening lightbox (#6000)
* Plumb thumbUri down to the lightbox

* Remove onLoad tracking from lightbox

* Hook up placeholder URI to the image

* Fix NaN causing crash on double tap while offline

* Protect against NaNs in the future
2024-10-29 21:00:28 +00:00
dan 339f45ccbb Refactor lightbox model to plain object (#5999)
* Refactor lightbox model to plain object

* Rename name to type
2024-10-29 20:58:38 +00:00
Samuel Newman 1cfcffd79e temp revert to old modal (#6005) 2024-10-29 20:55:30 +00:00
dan 27ff85433b Extend composer checks to all posts in a thread (#5955)
* Check all posts in a thread

* Use thread for more checks
2024-10-29 20:31:04 +00:00
dan 96ba6456e7 Remove indirection when rendering composer state (#5954)
* Simplify onPressCancel dismiss condition

* Remove alias variables

* Move grapheme length calculation to reducer
2024-10-29 20:29:38 +00:00
dan bab44a5a13 Refactor composer state for threads (#5945)
* Refactor composer state for threads

* Remove unnecessary default case

TS can see it's exhaustive.
2024-10-29 20:27:44 +00:00
dan 3bf91eb814 Disable Post button when empty (#5953)
* Disable Post button when empty

* Use regular disabled button

* Disable post on video error until cleared
2024-10-29 20:23:02 +00:00
Samuel Newman 9c27d83d4b fix splash screen (#5997) 2024-10-29 14:17:51 +00:00
Samuel Newman d1355d52fc Fix video quality for short videos (#5996)
* remove auto level capping

* flush first fragment on loop
2024-10-29 13:35:43 +00:00
Samuel Newman 80c5f23da2 Fix double padding in Dialog.InnerFlatList on web (#5986)
* remove extra padding on web

* pass prop
2024-10-29 12:32:10 +00:00
Eric Bailey 2502c91dee Fix drawer icon alignment (#5991) 2024-10-28 18:18:54 -07:00
Paul Frazee b4fcbad643 Release 1.93 (#5990)
* Run intl:extract

* Update joined_this_week
2024-10-28 17:49:57 -07:00
Paul Frazee 7942c684bf Merge branch 'main' of github.com:bluesky-social/social-app into main 2024-10-28 17:21:24 -07:00
Paul Frazee 39381e60e7 Fix to ES locale 2024-10-28 17:21:16 -07:00
Samuel Newman 5e947e5a8f fix starterpack wizard screen (#5987) 2024-10-29 00:07:07 +00:00
Samuel Newman 5e18b6f09f fix alt position (#5985) 2024-10-28 23:43:41 +00:00
RomanPro100 30e0cc2430 Update Russian localization (#5344)
* Added translations for new strings

* Fixed some translations: made them more natural and consistent

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-10-28 16:39:18 -07:00
Luan 6764da47fa Update messages.po (#5375)
* Update messages.po

Change text to be more natural

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

---------

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
2024-10-28 16:28:55 -07:00
Ivan Beà 32f62acf40 Update catalan messages.po (#5735)
* Update catalana messages.po

Just a few lines, including pending corrections from @surfdude29
Please have a look at it @jordimas @darccio @surfdude29 @rortan134

* Update messages.po

correct typo

* Update messages.po

little typo
2024-10-28 16:27:41 -07:00
Takayuki KUSANO ad97ea8d24 Updated Japanese translation (#5759)
* Updated translation

* Use full-width char for single-digit num

* Update translation

* Update translation

* Corrected translations (thanks to Hima-Zinn)

* Update translation

* Update translation

* Unified the translation of "browser" (by reindex-ot)

* Update translation

* Updated translation
2024-10-28 16:27:16 -07:00
Frudrax Cheng eadef58d82 Update Chinese and Cantonese localization (#5698)
* Both: Run intl:extract

* HK: Hot fix

* Both: Fix dms time string

* HK: Update Translates

* Both: Remove superseded strings

* Both: Run intl:extract

* CN: Update Translates

* TW: Update Translates

* HK: Update Translates

* Both: Run intl:extract

* Both: Update Translates and remove superseded strings

* Both: Run intl:extract

* CN: Update Translates

* CN: Remove superseded strings

* HK: Update translates & remove superseded strings

* CN: Update Translates

* TW: Update Translates

* CN: Improved translation

* HK: Update Translates

* CN: Update Translates

* CN: Improved translation

* TW: Update Translates

* HK: Update Translates

* Both: Run intl:extract & remove 'Chats'

* Both: Translated 'LOGO by...'

* Both: Update translation to remove double 'an'

* Both: Translated 'ago' in time

* CN & HK: Improved translation

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Modify according to review suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN & HK: Improved translation

* CN: Improve the translation of 'Say hello'

* Both: Translated self-labels

* CN: Add the missing period

* CN: Improved labels translation

* HK: Re-translate 'Feed'

* HK: Re-translate 'Feedback'

* HK: Re-translate 'Follow by..'

* Both: Re-translate 'Follow by..'

* HK: Improved translation

* HK: Improved translation

* CN: Improved translation

* CN & HK: Improved translation

* CN: Improved translation 'Followed you back'

* TW: Update Translates

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN: Update Translates

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN & HK: Update Translates

* HK: Update Translates

* Both: Improve translation of 'starter pack'

* CN: Update Translates by reviewer

* TW & HK: Update Translates

* CN: Update 'Display Name' Translates

* TW & HK: Update 'Display Name' Translates

* HK: Fix typo

* HK: Update Translates

* HK: Re-translate 'Feed'

* HK: Fix typo

* TW & CN: Fix incorrect tag syntax for "Moderation list by"

* TW: Update Translates

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN & HK: Update Translate 'Blocked'

* TW: Re-translation 'dialog'

---------

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-10-28 16:26:41 -07:00
Minseo Lee 7147c9bc42 Update Korean localization (#5736)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-10-28 16:26:08 -07:00
Hailey bdb5722640 hailey/filter dupe labels (#5984) 2024-10-28 16:23:38 -07:00
madKoding 93a53162e8 [Translations] Complete Update - Spanish 100% (#5842)
* Update spanish translations

* Update translated messages from line 1500-2000

* Updated messages from 2500-3000

* Update messages 3000-4000

* Update from 4000 to 5000

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Fix feeds translation

* Updated close messages

* Missing accent

* Replaced debug translation

* Fix debug translations

* Replaced unmuted sentence

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Accesibility fix likes

* Fix translations

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Updated translations

* Completed translation

* Fix unmuted account

* Fix to add feed message

* Fix message

* Fixed unmuted list

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

* Explore fix

* Update src/locale/locales/es/messages.po

Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: oledfish <88390729+oledfish@users.noreply.github.com>
2024-10-28 16:22:34 -07:00
smileyhead 7755a167ec Add Hungarian localisation (#5902)
* Add 'hu' to lingui.config.js

* Add 'hu' to dates.ts

* Add 'hu' to helpers.ts

* Add 'hu' to i18n.ts

* Add 'hu' to i18n.web.ts

* Add 'hu' to languages.ts

* Create messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Minor fixes

Reworded some things in the hashtag context menu.

* Some tweaks

Shortened Media tab title
Added spaces to the short timestamps (mp, p, ó, n, hó)

* Hopefully fix the removing of plural strings

* Update Hungarian localisation

* Fixed some things

* Fixed typo

* Further small fixes

* Update src/locale/locales/hu/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/hu/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/hu/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/hu/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/hu/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/hu/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update src/locale/locales/hu/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Apply fixes after proofreading session

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Frudrax Cheng <i@cynosura.one>
2024-10-28 16:19:26 -07:00
Takayuki KUSANO 0689360b8b Clean up English messages.po (#5908) 2024-10-28 16:16:33 -07:00
Nando 1b1eb3e962 Update German translation (#5922) 2024-10-28 16:13:48 -07:00
surfdude29 498b83ae79 Add en-GB localisation (#5952)
* Create blank en-GB/messages.po

* localise certain strings for en-GB

* Update lingui.config.js

* Update dates.ts

* Update helpers.ts

* Update i18n.ts

* Update i18n.web.ts

* Update languages.ts

* Update i18n.ts
2024-10-28 16:12:21 -07:00
kodebanget cd6fc13e4b Update Indonesian translation (#5868)
* Update Indonesian translation

* Update messages.po

---------

Co-authored-by: Indonesian <github-actions@github.com>
2024-10-28 16:06:59 -07:00
Hailey 3244e1c468 More e2e test fixes (#5982)
* fix feed reorder test

* fix feed reorder test pt 2

* fix edit profile test

* fix mod list test

* fix fab

* add assert

* one more assertVisible

* fix search test

* tap now now if it shows up
2024-10-28 15:55:17 -07:00
Hailey 84db1f997b Fix E2E tests (#5980) 2024-10-28 13:31:24 -07:00
Samuel Newman 0f3fa06c3e One more haptic tweak (#5979)
* remove 10ms delay and make light

* make like haptic light

* same for PostThreadComposePrompt
2024-10-28 20:30:59 +00:00
Samuel Newman d050a78a2d Tweak haptics, add to post controls (#5977)
* change timing to 10ms, make ios only

* add haptics to post controls

* rm from like button
2024-10-28 20:03:08 +00:00
dan dcc5405e8a Make composer min height conditional and align attachments (#5976)
* Make web composer min height condiitonal

* Fix alignment

* Fix alignment on mobile
2024-10-28 19:12:15 +00:00
Samuel Newman 5bce043e1e FAB - delay followup haptic (#5974) 2024-10-28 21:02:38 +02:00
Hailey 2e3844c7b4 Don't render ComposerPills when unnecessary (#5975) 2024-10-28 11:07:22 -07:00
Hailey 8650d17958 Bump video to 0.2.3 (#5943) 2024-10-28 10:16:51 -07:00
Hailey e1796d7afd Limit number of lines in starter pack card (#5973) 2024-10-28 09:54:18 -07:00
Samuel Newman d19c505d81 drawer border (#5893) 2024-10-28 16:50:28 +00:00
Samuel Newman 1c992beff6 flex_1 text container (#5891) 2024-10-28 16:28:54 +00:00
Samuel Newman e652b2d7b1 Fix clipping issue with 2 image grid (#5744)
* don't set aspect ratio for 2 images

* let -> const
2024-10-28 15:52:07 +00:00
dan 2b53ef2541 Fix missing style (#5944) 2024-10-25 23:04:54 +01:00
Hailey e05b4a910f Conditionally render labels button when media exists in post (#5942)
* conditionally render button

* update labels on remove

* tweak
2024-10-25 22:52:37 +01:00
dan d520dd95b9 Split composer into smaller components (#5941)
* Extract ComposerTopBar

* Rename state variables to align with props

* Extract ComposerEmbeds

* Extract ComposerPills

* Extract ComposerFooter

* Tweak condition to be simpler

* Extract ComposerPost
2024-10-25 21:36:54 +01:00
dan a729efc3b6 Remove waterfalls from posting (#5931)
* Extract resolveRT, resolveReply

* Parallelize waterfalls
2024-10-25 00:00:07 +01:00
Mary 52f05424bf Make use of applyWrites when publishing posts (#5809)
* make use of applywrites

* Explicit $type

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-10-24 21:37:35 +01:00
dan 0ecc98d0de Display non-post embeds in composer preview (#5647)
* Display non-post embeds in composer preview

* Remove starter pack special case from ExternalLinkEmbed

This should not be needed because starter pack composer preview now goes through the record preview codepath, just like in the feed/post view.

* Hide record ext links if quote is present

* Align remove buttons

Remove the implicit top padding in record embeds and make it conditional, which is similar to how we treat external link embeds. This makes the X button appear in the same place for record embeds as with links.
2024-10-24 20:44:24 +01:00
dan 3327c47957 Include hydrated responses for other records (#5646)
* Include hydrated responses for other records

* Rename meta -> view

This is actually all it is now.
2024-10-24 20:43:00 +01:00
dan e8a53dcea8 Refactor post meta to return PostView (#5645) 2024-10-24 20:41:50 +01:00
Eric Bailey fa4cca11fe Put ExternalEmbedRemoveBtn on top (#5887) 2024-10-24 20:02:42 +01:00
Samuel Newman 090ac041c3 tweak hover state (#5892) 2024-10-21 21:21:08 +03:00
Samuel Newman f6649e22a7 double haptic (#5886) 2024-10-21 19:20:36 +03:00
Eric Bailey 24679d5fe3 Fix NavSignupCard on web (#5813) 2024-10-21 10:56:54 -05:00
Eric Bailey 1e723f177f Add back borders to feed liked-by screen (#5811) 2024-10-21 09:44:58 -05:00
Hailey 72270fd505 tweak downsample rate to 1% (#5836)
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-10-18 12:23:55 -07:00
Hailey fd2e94f353 Fix dragging up in flat list dialogs on Android (#5817) 2024-10-17 14:28:38 -07:00
Ben Harris 92ef756943 remove font for ProseMirror (#5726) 2024-10-17 15:35:08 -05:00
Eric Bailey 05ca979518 Apply labelers and handle language for PWI home (#5816) 2024-10-17 15:28:52 -05:00
Hailey e9be8f4574 Disable feed debug gate due to EME (#5815) 2024-10-17 12:54:05 -07:00
Eric Bailey 0d5af050d3 Remove BaseLink component (#5682)
* Remove BaseLink component

* Fix StarterPackCard Link component

* Rm flex_1 causing overflow

* Make newskie usage full width
2024-10-17 14:35:45 -05:00
Eric Bailey 7ca1789d6f Fix font display on Android (#5776)
* Fix font display on Android

* Format

* Split out fake fonts hook for platforms
2024-10-17 14:32:53 -05:00
Hailey 834beac58c Temporarily disable window gate during EME (#5814) 2024-10-17 12:21:07 -07:00
Eric Bailey 1c6cee7a0d Add DE labeler (#5675) 2024-10-17 13:48:02 -05:00
Samuel Newman c5e40d6695 new platform util (#5791) 2024-10-17 11:43:49 -05:00
surfdude29 be725f79ba Update de/messages.po (#5795) 2024-10-17 11:43:36 -05:00
Hailey c3e5107882 Move self-label button (#5780)
* move self label button?

* rm

* make sure its usable on large font sizes

* tweak wording

* update icon

* tweaks

* change button label and change opacity when no media (#5794)

* Tweak it moar (#5807)

* Tweak it moar

* Pluralize

* Labels

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-17 11:42:19 -05:00
Samuel Newman 59f9cd916e Fix PageWithHeader header leaking into safe area (#5792)
* fix header leaking out of safe area

* make fix native-only
2024-10-17 11:16:42 -05:00
Samuel Newman 74b0929e4d Logged out improvments (#5771)
* fetch all accounts in one go

* delete unused component

* add safeareaview to logged out layout

* add safe area insets to LoggedOut view

* add safe area insets to the error boundary

* sanitize displaynames/handles

* use button for X

* increase spacing
2024-10-17 18:48:38 +03:00
Brian Olson 9a91746fbb Merge pull request #5800 from brianolson/ipcc-client-fix
one http.Client for server instead of new per /ipcc
2024-10-17 11:05:45 -04:00
Eric Bailey 444c6e6a9f Fix up drawer background (#5785) 2024-10-17 09:35:33 -05:00
Brian Olson 22e1914f58 one http.Client for server instead of new per /ipcc 2024-10-17 10:17:17 -04:00
surfdude29 34f1e4d71c Remove double an from error message strings (#5782)
* Update ProfileHeaderLabeler.tsx

* Update FeedErrorMessage.tsx

* Update FeedShutdownMsg.tsx

* Update ProfileFeed.tsx
2024-10-17 12:37:32 +03:00
Frudrax Cheng 7e4ecc6860 Unified 'Chats' in drawers into 'Chat' (#5790) 2024-10-17 11:03:42 +03:00
Takayuki KUSANO eaba68ee20 Mark "Logo by ..." in RightNav translatable like it in Drawer (#5788) 2024-10-17 10:47:11 +03:00
Hailey 2e74f98392 Add graphic media self label (#5758)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-10-16 19:17:22 -07:00
Eric Bailey 3d9663db1e Ensure all configured appLabelers are applied for logged out users (#5784)
* Ensure all configured appLabelers are applied for logged out users

* Formatting
2024-10-16 21:06:00 -05:00
Samuel Newman 21542c4a77 Clean up drawer (#5761)
* clean up drawer

* add a lil bit of padding

* Drawer nits (#5778)

* Avi stuff

* Rm SafeAreaView, not working on Android

* Dividers and spacing

* Fix count on android, ended up refactoring the whole MenuItem

* Litttttle more space

* Improve NavSignupCard

* format nit

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-16 19:43:10 -05:00
Samuel Newman 6bc00f8d71 Composer - Self label dialog ALF rewrite (#4354) 2024-10-16 08:52:14 -07:00
Samuel Newman c3d0cc55d9 Edit profile dialog ALF refresh (#5633) 2024-10-15 21:57:28 +03:00
Eric Bailey fe5eb507ca Support params-only searches (#5767) 2024-10-15 12:39:38 -05:00
surfdude29 53b6d16b51 translate video state strings (#5762) 2024-10-15 19:21:37 +03:00
Eric Bailey 4c3c10d7f8 Link cards (#5677)
* New link card styles

* Cleanup of consituent parts, add hover state

* Fix gif alt text view

* Fix alt text view more

* Remove dupe

* Update remove button

* Remove added margin on gif
2024-10-14 16:06:23 -05:00
Samuel Newman 2d88463453 Remove top padding from shell, move down into individual screens (#5548) 2024-10-14 22:09:47 +03:00
surfdude29 0f40013963 Translate strings in src/lib/api/index.ts (#5750) 2024-10-14 21:47:17 +03:00
Samuel Newman ef5bc5243e Use admonitions in settings screens (#5741) 2024-10-14 21:45:47 +03:00
gpp-0 240535fd8b Move the back-button in front of banner (#5748) 2024-10-14 11:21:05 -05:00
Eric Bailey 0b4dc64c63 Add util for link static clicks (#5683)
* Add util for link static clicks

* Format

* Update copy
2024-10-14 10:44:04 -05:00
Samuel Newman a445489b53 Translate some missing strings via global i18n instance (#5740) 2024-10-14 18:19:30 +03:00
Eric Bailey db7b875c52 Update web font families def (#5749) 2024-10-14 10:11:36 -05:00
Hailey 432dc867f8 Fix keyboard hiding alt text input after viewing DMs on iOS (#5739) 2024-10-14 08:02:16 -07:00
Eric Bailey 830b4bee9c Add Admonition component (#5680)
* Add Admonition component

* Tweak mobile padding

* Format
2024-10-14 12:06:07 +03:00
Paul Frazee 7f3b5366e6 Run intl extract (#5733) 2024-10-11 17:05:56 -07:00
Ivan Beà 8311a7a3d4 Update catalan messages.po (#5717)
* Update catalan messages.po

Here we go again, just a few lines, if you would be so kind as to take a look @jordimas @darccio @surfdude29 @rortan134

* Update messages.po

@jordimas corrections
2024-10-11 16:47:43 -07:00
Takayuki KUSANO b75c9d2ef6 Update Japanese translation (#5715)
* Remove the obsoleted entry

* Update translation
2024-10-11 16:47:14 -07:00
f e l p s f40b8ac80c PT-BR Translation update (#5699)
* More translations updated

* More tr

* fix typo

* PT-BR Translation update

* PT-BR Translation update
2024-10-11 16:45:10 -07:00
Samuel Newman d6322477fe Present in-app browser as sheet (#5718)
* use page sheet presentation

* move to its own file rather than sitting in prefs

* whoops, missed one
2024-10-11 16:42:58 -07:00
Hailey 8e16427497 Move composer open shortcut to shell (#5723)
* move composer shortcut hook

* put intent handler in same place

* dont allow shortcuts if no session

* revert change
2024-10-11 16:42:43 -07:00
Hailey eaba658419 Remove autofocus from alt text input (#5727)
* remove autofocus from alt text input

* open to full height
2024-10-11 16:32:31 -07:00
Hailey 0f7cd2b74d ext gif check (#5725) 2024-10-11 16:25:28 -07:00
Hailey 907b8d17f5 shift hitslop of avi follow button (#5730)
* shift the hitslop of the follow button

* increase slop
2024-10-11 16:24:22 -07:00
Paul Frazee e53b972957 Make default search language 'all languages' (#5731) 2024-10-11 16:23:30 -07:00
Paul Frazee 157011efe3 Fix performance of feed reordering and add layout animations (#5714)
* Rework SavedFeeds editor to make changes transactionally

* Fix hit slops

* Add layout animations

* Fix: dont let down go too far down

* Speed up layout transitions
2024-10-11 16:12:14 -07:00
Paul Frazee f7852d02ba Protect against zero-width chars in display name sanitation (see https://github.com/bluesky-social/social-app/pull/5703#issuecomment-2407459187) (#5729) 2024-10-11 14:41:12 -07:00
Hailey 7e5c522718 Move intent handler to a child of InnerApp (#5695) 2024-10-11 09:30:30 -07:00
Hailey 8c6384175c Fix dropdown shift on web (#5710) 2024-10-11 08:35:53 -07:00
Paul Frazee 5ebb630c9d Improve sort & filter of language options in search (#5709) 2024-10-10 22:15:28 -07:00
Paul Frazee 9a769b9a03 Always show search options (#5706) 2024-10-10 22:15:09 -07:00
Paul Frazee 7677bb3f0a Sanitize multiple spaces in display names to protect against some security concerns (#5703) 2024-10-10 22:14:50 -07:00
Hailey a8fb8dc6b2 GIF dialog is scrollable on web (#5704) 2024-10-10 20:27:31 -07:00
Eric Bailey f9b01e9eac Type tweaks (#5696)
* Allow system font option to revert to previous letter spacing

* Use correct types
2024-10-10 22:18:05 -05:00
Hailey 5da0bcaec2 Persist taps in the dialog scrollview (#5701) 2024-10-10 19:49:21 -07:00
Hailey 34d3e2b127 one line btn (#5700) 2024-10-10 19:44:09 -07:00
Hailey 9176a8ff64 dont scale in pressable w/ reduced motion (#5697) 2024-10-10 19:21:04 -07:00
Paul Frazee 32bf38940d Tweak threadgate button sizing in the composer on Web (#5692)
* Adjust threadgate btn sizing in composer

* Tweak threadgate button size on web
2024-10-10 19:07:55 -07:00
Hailey 88f326b37f Fix sheets to work nicely on ios 15 (#5685) 2024-10-10 18:16:25 -07:00
Hailey 34a0007679 Move setup for Android sheet (#5684) 2024-10-10 17:52:19 -07:00
Minseo Lee 2a3f9b38e6 Update fonts.ts (#5694) 2024-10-10 19:50:43 -05:00
Eric Bailey 2fc1f9ca65 Bump icon size for small size buttons (#5687) 2024-10-10 16:50:19 -07:00
Hailey e1a696bcbb More clip stuff for Apple (#5672) 2024-10-10 15:11:43 -07:00
Hailey 528e601f4b Bump 1.93.0 (#5679) 2024-10-10 15:11:35 -07:00
Hailey 2ebe8f435b Update the email verification dialog (#5663) 2024-10-10 15:02:36 -07:00
Hailey 912b4450b9 Fix Text emoji type (make emoji optional) (#5678) 2024-10-10 14:18:07 -07:00
Eric Bailey c4a2958539 Make default banner more palatable (#5676) 2024-10-10 15:35:41 -05:00
Eric Bailey 3b44ea203c Invert non config filtering (#5674)
* Invert filtering logic

* Rename

* Rm comment
2024-10-10 10:04:23 -07:00
Eric Bailey 96cc31babc Include non-configurable in defs query (#5673) 2024-10-10 09:59:29 -07:00
Eric Bailey 509e3d9c85 Filter out non-configrable mod authorities from report dialog (#5670) 2024-10-10 09:47:12 -07:00
Hailey 676e6269e7 Show download button for Apple (#5671) 2024-10-10 09:15:24 -07:00
Hailey 2841944789 Ensure app clip works even with starter-pack (#5664) 2024-10-09 15:29:25 -07:00
Hailey 9f070cd9cd Cleanup unused props from dialogs (#5665) 2024-10-09 14:50:54 -07:00
Hailey 86b0d3b498 Add missing web component (for native view manager) (#5662) 2024-10-09 12:09:16 -07:00
Samuel Newman cca344a3d1 Allow nested sheets without boilerplate (#5660)
Co-authored-by: Hailey <me@haileyok.com>
2024-10-09 11:30:42 -07:00
Paul Frazee b3ade19bbe Update joined_this_week 2024-10-09 11:08:12 -07:00
Paul Frazee da28c5690a Release 1.92 (#5658)
* Fix tests

* intl extract
2024-10-08 19:46:24 -07:00
Hailey f52be63358 Fix layout bugs in appeals dialog (#5657) 2024-10-08 17:59:30 -07:00
Eric Bailey 857b20b2a8 Make 'em round (#5654) 2024-10-08 14:47:09 -07:00
Eric Bailey 8fe242728e Downgrade Radix packages for type compat (#5653) 2024-10-08 13:04:42 -07:00
Eric Bailey 2bb1f4abb8 Merge fontVariant defs (#5652) 2024-10-08 12:02:53 -07:00
Hailey 3da4f9b170 fix clear button in input (#5650)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-08 11:45:04 -07:00
Hailey 2ab95124dd Bump 1.92.0 (#5641) 2024-10-08 11:38:05 -07:00
Eric Bailey 1db39ed1d1 Filter posts containing mute words from search and notifications (#5599)
* Filter mute words from search

* Filter mute words from notifications

* Do no filter search if using from filter
2024-10-08 13:22:37 -05:00
Samuel Newman fc82d2f6d5 Move Dialogs to Radix (#5648)
* Use Redix FocusTrap (#5638)

* Use Redix FocusTrap

* force resolutions on radix libs

* add focus guards

* use @radix-ui/dismissable-layer for escape handling

* fix banner menu keypress by using `Pressable`

* add menu in dialog example to storybook

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* use DismissableLayer/FocusScope for composer

* fix storybook dialog

* thread Portal through Prompt and avatar/banner

* fix dialog style regression

* remove tamagui

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-08 20:00:49 +03:00
dan efcf8a6ae5 Nicer error message for disabled quotes (#5644) 2024-10-08 14:46:15 +09:00
Eric Bailey db76452822 Update neue nux date (#5643) 2024-10-07 19:43:55 -05:00
Hailey ab9c4acc5b Make alt text scrollable on native (#5642) 2024-10-07 17:07:50 -07:00
dan e1ca3ae40e Move remaining composer state into reducer (#5623)
Co-authored-by: Mary <git@mary.my.id>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-10-07 17:07:40 -07:00
dan c06040cc20 Fetch link previews from RQ (#5608)
Co-authored-by: Mary <git@mary.my.id>
Co-authored-by: Hailey <me@haileyok.com>
2024-10-07 17:02:58 -07:00
dan dd8be2e939 Use composer state as source of truth for embeds/links on publish (#5606)
Co-authored-by: Mary <git@mary.my.id>
Co-authored-by: Hailey <me@haileyok.com>
2024-10-07 16:58:42 -07:00
Fathia e564fe9cc6 Update Indonesian translation (#5316)
Co-authored-by: Indonesian <github-actions@github.com>
2024-10-07 16:15:46 -07:00
Hailey 80e25b3d9f [Video] Add dimension info to share intent pt.2 (#5640) 2024-10-07 15:32:26 -07:00
Hailey 509b37fafa [Video] Prevent screen from dimming while in full screen (#5637) 2024-10-07 14:12:17 -07:00
Hailey ee25b89801 [Video] Add dimension info to share intent (#5639) 2024-10-07 14:09:47 -07:00
Samuel Newman 94e7bfbe40 [Video] Revert safari hackfix (#5367) 2024-10-07 12:55:03 -07:00
Hailey 58b1d9326d Swipeable to delete chat, custom swipeable (#5614)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-10-07 11:15:17 -07:00
Samuel Newman 8d80f1344d equal spacing on displayname/handle (#5636) 2024-10-07 21:12:05 +03:00
Takayuki KUSANO c365096200 Update Japanese translation (#5374)
* Update translation

* Fixed

* Update translation

* Update translation

* Update translation

* Update translation

* Suggested fix by Hima-Zinn

* Update translation

* Update translation

* Update translation

* Translate "pinned"

* Update translation

* Refactor video uploads (#5570)

* Remove unused video field

* Stop exposing video dispatch

* Move cancellation out of the reducer

* Make useUploadStatusQuery controlled by jobId

* Rename SetStatus to SetProcessing

This action only has one callsite and it's always passing "processing".

* Move jobId into video reducer state

* Make cancellation scoped

* Inline useCompressVideoMutation

* Move processVideo down the file

* Extract getErrorMessage

* useServiceAuthToken -> getServiceAuthToken

* useVideoAgent -> createVideoAgent

* useVideoUploadLimits -> getVideoUploadLimits

* useUploadVideoMutation -> uploadVideo

* Use async/await in processVideo

* Inline onVideoCompressed into processVideo

* Use async/await for uploadVideo

* Factor out error messages

* Guard dispatch with signal

This lets us remove the scattered signal checks around dispatch.

* Move job polling out of RQ

* Handle poll failures

* Remove unnecessary guards

* Slightly more accurate condition

* Move initVideoUri handling out of the hook

* Remove dead argument

It wasn't being used before either.

* Remove unused detailed status

This isn't being used because we're only respecting that state variable when isProcessing=true, but isProcessing is always false during video upload.

If we want to re-add this later, it should really just be derived from the reducer state.

* Harden the video reducer

* Tie all spawned work to a signal

* Preserve asset/media for nicer error state

* Rename actions to match states

* Inline useUploadVideo

This abstraction is getting in the way of some future work.

* Move MIME check to the only place that handles it

* Manage video reducer from composer reducer (#5573)

* Move video state into composer state

* Represent video as embed

This is slightly broken. In particular, we can't remove video yet because there's no action that results in video embed being removed.

* Properly represent video as embed

This aligns the video state lifetime with the embed lifetime. Video can now be properly added and removed.

* Disable Add Video when we have images

* Ignore empty image pick

* Rename some files and variables (#5587)

* Move composer reducers together

* videoUploadState -> videoState

* Inline videoDispatch

* 🪵📌 (#5594)

* [🐴] Reduce amount that message sent date is shown (#4228)

* Fix profile header buttons (#5558)

* Fix profile header buttons

* Adjust labeler buttons too

* Fix load state jumps

* Small tweak for web

* Remove log

* Update

* Revert "Update"

This reverts commit b073c04830.

* Revert "Fix profile header buttons (#5558)"

This reverts commit c00c5fa495.

* Revert "[🐴] Reduce amount that message sent date is shown (#4228)"

This reverts commit af8e3422a6.

* Revert "🪵📌 (#5594)"

This reverts commit 3ab5190aca.

* Revert "Rename some files and variables (#5587)"

This reverts commit 475708ea30.

* Revert "Manage video reducer from composer reducer (#5573)"

This reverts commit 59589e34a3.

* Revert "Refactor video uploads (#5570)"

This reverts commit f74f9bc1d9.

* Update translation

* Update translation

* Delete unused entries

* Restored the trailing dot by #5622

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-07 11:45:21 -05:00
Ivan Beà e523066588 Update catalana messages.po (#5380)
100% translated again, take a look please @jordimas @darccio @surfdude29 @rortan134
2024-10-07 11:42:48 -05:00
f e l p s bba4a40a47 Update and inconsistency fixes to pt-br translation (#5436)
* Update and inconsistency fixes to pt-br translation

* Update and inconsistency fixes to pt-br translation

Updated last translator

* More tr

* More translations updated
2024-10-07 11:35:26 -05:00
Eric Bailey f5094240e7 Tweak #5522 (#5635)
* Reduce post reason icon size & offset (#5522)

* Make x margin within pin icon the same

* Reduce post reason icon size and offset

* Use existing pin

---------

Co-authored-by: futur <me@futuristick.ca>
2024-10-07 11:28:54 -05:00
Minseo Lee c5fef1b9b5 Update Korean localization (#5401)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-10-07 11:27:11 -05:00
Frudrax Cheng 11bd2e8952 Update Chinese localization (#5433)
* CN: Update Translates

* CN: Remove superseded strings

* CN: Update Translates

* CN: Update Translates

* TW: Update and clean

* Both: Update Translates

* CN: Update Translates

* CN: Remove superseded strings

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN: Update Translates

* CN: Remove superseded strings

* CN: Remove extra spaces

* CN: Make some translations more localized

* CN: Make some translations more localized#2

* CN: Update Translates

* CN: Update Translates

* CN: Remove superseded strings

* CN: Update Translates

* TW: Run intl:extract

* TW: Update Translates

* TW: Remove superseded strings

* TW: Improve translation

* Both: Run intl:extract

* CN: Update Translates

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Both: Run intl:extract

* CN: Update Translates

* TW: Update Translates

* Both: Fix typo

* Both: Run intl:extract

* CN: Update Translates

* TW: Update Translates

* Both: Run intl:extract

* Both: Update Translates

* Both: Update Translates

* Both: Run intl:extract

* Both: Update Translates

* Both: Correct some grammar of words

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Both: Update Translates

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-10-07 11:21:43 -05:00
Frudrax Cheng d28186ac62 Add Cantonese Localization (#5479)
* Add zh-HK localization

* Update dates.ts

* HK: Update Translates

* HK: Fix typo

* HK: Fix wrong language code

* HK: Update Translates

* HK: Update Translates

* rename 'Chinese (Hong Kong)' to 'Cantonese'

* HK: Update Translates

* Update languages.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* HK: Update Translates by reviewers

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-10-07 11:20:06 -05:00
surfdude29 ff70b8ff61 use tabular numbers in CharProgress (#5631) 2024-10-07 09:45:05 -05:00
surfdude29 f050c51f11 Remove line breaks in intro text in issue templates (#5632)
* remove line breaks in bug_report.yml

* remove line breaks in bug_report_fabric.yml

* remove line breaks in feature_request.yml
2024-10-07 09:39:19 -05:00
Takayuki KUSANO 140f720fac Restored the dot in the message displayed in the moderation details dialog (#5622) 2024-10-07 15:53:38 +03:00
Hailey 686dfa5f78 Fix bounce when expanding sheet on ios (#5627) 2024-10-06 12:03:06 -07:00
Hailey 0ebf636652 Fix padding in repost dialog (#5626) 2024-10-06 11:41:45 -07:00
Hailey b52f8ced56 Fix composer char progress layout (#5620)
* fix composer

* more fixes
2024-10-06 14:42:52 +09:00
Minseo Lee 25e3c93e1e Improve localization of {els} string on Create Account page (#3912)
Co-authored-by: Hailey <me@haileyok.com>
2024-10-05 16:22:00 -07:00
Takayuki KUSANO 1118fd6883 Enclose the entire message in Trans tags for translation (#5616) 2024-10-05 16:12:30 -07:00
Eric Bailey 76d63f9967 Add alt text limit to image dialog (#5611)
* Add alt text limit to image dialog

* GIF alt text too

* Fix

* tweaks, save alt on dialog dismiss

* simplify close behavior

* use state in gif alt

* state

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-10-05 19:58:04 +09:00
Jaz 6dfd57e621 Merge pull request #5610 from bluesky-social/static_asset_cdn
Serve static assets from a CDN host if provided
2024-10-04 14:39:43 -07:00
Jaz Volpert 795e2c0629 New assets to static CDN 2024-10-04 14:31:37 -07:00
Jaz Volpert 5f3c4c60db Merge branch 'main' into static_asset_cdn 2024-10-04 14:28:52 -07:00
Eric Bailey 3fb14d184a Move font-face defs into HTML for CDN (#5612) 2024-10-04 16:28:05 -05:00
Jaz Volpert 0d99b8b055 Consistent spacing for variable handlebars 2024-10-04 13:49:59 -07:00
Jaz Volpert eb5a6c8911 Propagate env var and trim trailing slash 2024-10-04 13:43:15 -07:00
Jaz Volpert b0fe2c6c9a Serve static assets from a CDN host if provided 2024-10-04 13:40:45 -07:00
Eric Bailey 1cedd4a3c4 Post alignment (#5580)
Co-authored-by: Hailey <me@haileyok.com>
2024-10-04 13:33:17 -07:00
Eric Bailey d17da8474b Emoji handling nested (#5609) 2024-10-04 13:31:40 -07:00
Hailey 00486e9499 [Sheets] [Pt. 1] Root PR (#5557)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-10-04 13:24:12 -07:00
Hailey 9802ebe20d Properly patch React Native to fix iOS RefreshControl bug (#5605) 2024-10-04 13:17:57 -07:00
dan 09caf327d9 Make composer reducer source of truth for images/video when publishing (#5595)
* Move caption and altText state into video reducer

* Make composer state source of truth for images and video publish
2024-10-05 03:45:34 +09:00
dan 282db85c06 Track links and embeds in the composer reducer (#5593)
* Scaffold embed draft types

These don't map 1:1 to the record structure. Rather, we select data from the draft on posting.

* Prefill initial quote

* Implement the reducer
2024-10-05 03:39:33 +09:00
Eric Bailey 6382fe4535 Bump SDK (#5602) 2024-10-04 09:34:03 -05:00
Eric Bailey 54ca816536 Update built asset caching (#5601) 2024-10-04 09:33:32 -05:00
Hailey 48241cb2b6 Downgrade sentry to recommended 5.24.3 (#5604) 2024-10-04 01:28:26 -07:00
Eric Bailey 3f66531e83 Add option to search in any language (#5598) 2024-10-03 20:23:07 -05:00
Eric Bailey ce53b3a264 Font tweaks (#5597)
* Increase fontWeight on android

* Use atoms for a couple stray fontWeights

* Rm unused file
2024-10-03 20:22:54 -05:00
Eric Bailey eb3b01d0ad Fix profile header buttons (#5558)
* Fix profile header buttons

* Adjust labeler buttons too

* Fix load state jumps

* Small tweak for web

* Remove log
2024-10-03 10:45:01 -05:00
Samuel Newman 7e79c7f768 [🐴] Reduce amount that message sent date is shown (#4228) 2024-10-03 18:19:38 +03:00
Samuel Newman 523a9a48c2 🪵📌 (#5594) 2024-10-03 17:28:13 +03:00
dan 2aa365b5b6 Rename some files and variables (#5587)
* Move composer reducers together

* videoUploadState -> videoState

* Inline videoDispatch
2024-10-03 14:57:48 +09:00
dan 03704e2b48 Manage video reducer from composer reducer (#5573)
* Move video state into composer state

* Represent video as embed

This is slightly broken. In particular, we can't remove video yet because there's no action that results in video embed being removed.

* Properly represent video as embed

This aligns the video state lifetime with the embed lifetime. Video can now be properly added and removed.

* Disable Add Video when we have images

* Ignore empty image pick
2024-10-03 14:26:38 +09:00
dan d2392d2d64 Refactor video uploads (#5570)
* Remove unused video field

* Stop exposing video dispatch

* Move cancellation out of the reducer

* Make useUploadStatusQuery controlled by jobId

* Rename SetStatus to SetProcessing

This action only has one callsite and it's always passing "processing".

* Move jobId into video reducer state

* Make cancellation scoped

* Inline useCompressVideoMutation

* Move processVideo down the file

* Extract getErrorMessage

* useServiceAuthToken -> getServiceAuthToken

* useVideoAgent -> createVideoAgent

* useVideoUploadLimits -> getVideoUploadLimits

* useUploadVideoMutation -> uploadVideo

* Use async/await in processVideo

* Inline onVideoCompressed into processVideo

* Use async/await for uploadVideo

* Factor out error messages

* Guard dispatch with signal

This lets us remove the scattered signal checks around dispatch.

* Move job polling out of RQ

* Handle poll failures

* Remove unnecessary guards

* Slightly more accurate condition

* Move initVideoUri handling out of the hook

* Remove dead argument

It wasn't being used before either.

* Remove unused detailed status

This isn't being used because we're only respecting that state variable when isProcessing=true, but isProcessing is always false during video upload.

If we want to re-add this later, it should really just be derived from the reducer state.

* Harden the video reducer

* Tie all spawned work to a signal

* Preserve asset/media for nicer error state

* Rename actions to match states

* Inline useUploadVideo

This abstraction is getting in the way of some future work.

* Move MIME check to the only place that handles it
2024-10-03 11:41:23 +09:00
Samuel Newman c2dac855cc Delete messages NUX (#5574) 2024-10-02 22:23:11 +03:00
Samuel Newman 13c9c79aee move files around (#5576) 2024-10-02 22:21:59 +03:00
Samuel Newman 405966830c Make reply prompt more subtle on desktop (#5569)
* make reply prompt more subtle on desktop

* fix alignment

* Tweak transition timing

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-10-02 11:40:18 -05:00
Eric Bailey 3972d3d4c3 Ignore built files (#5572) 2024-10-02 11:18:15 -05:00
Hailey a444fc53a0 import order (#5571) 2024-10-02 11:09:54 -05:00
Eric Bailey 1a7885b921 Add suspense boundary in onboarding (#5556) 2024-10-02 10:55:06 -05:00
Eric Bailey 3569873123 Tweak verify email dialog (#5555)
* Add intent/verify-email to go server

* Tweak verify intent dialog
2024-10-02 10:54:51 -05:00
Eric Bailey f251a43dd6 Add intent/verify-email to go server (#5554) 2024-10-02 10:54:25 -05:00
Eric Bailey 5a98ea684d Include ghost hook to statically export fonts (#5553) 2024-10-01 15:57:49 -05:00
dan e33b2b1bee Handle /starter-pack-short/:code in Go (#5546) 2024-10-02 00:09:21 +09:00
dan d2fd5589dc Introduce a composer reducer and move image state there (#5547)
* Add composer reducer

* Support adding images

Co-authored-by: Mary <git@mary.my.id>

* Support updating and deleting images

Co-authored-by: Mary <git@mary.my.id>

* Derive images state from composer state

Co-authored-by: Mary <git@mary.my.id>

---------

Co-authored-by: Mary <git@mary.my.id>
2024-10-02 00:08:46 +09:00
dan a7ee561e40 Paralellize image uploads (#5535)
* Remove unsafe type coercions from posting embed

* Extract resolveEmbed into a separate function

* Refactor to if-else because these are mutually exclusive

* Refactor resolveEmbed to early returns

* Separate resolving embed and media

* Parallelize image upload

* Prioritize not dropping media
2024-10-02 00:03:27 +09:00
Eric Bailey b59d6dfbb5 Remove local file check (#5544) 2024-09-30 17:43:14 -05:00
Samuel Newman 2129f69fa0 ALF text input for generic search input (#5511)
* alf text input for generic search input

* clearer ref naming

* Adjust props and definition

* Migrate props

* Migrate props

* Migrate props

* Replace on search screen

* rm old props

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-09-30 16:53:11 -05:00
Eric Bailey b4941d8556 Use Inter variable font (#5540) 2024-09-30 16:04:19 -05:00
Hailey adaa79a461 Fix name in feature_request.yml (#5542) 2024-09-30 14:04:10 -07:00
Eric Bailey 26c09ff107 Fix sticky offset, gear color (#5537) 2024-09-30 16:04:04 -05:00
Hailey 669cdf222c Move email test to root tests dir (#5527) 2024-09-30 13:56:49 -07:00
Hailey 66f3068c58 revamp issue templates, add new arch template (#5532) 2024-09-30 13:55:21 -07:00
Samuel Newman 9ca2928aac use PressableScale for animation (#5541) 2024-09-30 21:49:53 +03:00
Hailey 587c0c6257 Rework native autocomplete (#5521)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-27 15:26:28 -07:00
Samuel Newman 4b5d6e6efb Pinned posts (#5055)
* add to dropdown menu

* use normal profile mutation hook

* add pin as reason

* request pins

* shadow update

* rm logs

* get prev pinned from getProfile

* fix toasts

* invalidate after appview ready

* don't mutate params

* rm log

* use checkCommited rather than manual whenAppViewReady

* move to mutation

* even more optimistic optimistic update

* allow pins in `posts_and_author_threads`

* update @atproto/api

* add reasonPin type

* fix strange type error in unrelated query

* another missing type
2024-09-28 00:50:32 +03:00
Hailey f68b15219f Remove Segment (#5518) 2024-09-27 14:01:57 -07:00
Hailey bcd096b85a Fix alignment of cancel button on search (#5520) 2024-09-27 09:55:47 -07:00
Hailey d8f72c1ee1 [Share Extension] Support on Android for sharing videos to app (#5466) 2024-09-27 09:54:37 -07:00
Samuel Newman 4553e6b649 Ignore bogus onScroll values (#5499) 2024-09-27 10:09:00 +01:00
Hailey dd2fedb2e6 add podcasts to spotify embeds (#5514) 2024-09-27 16:19:12 +09:00
Hailey c7b48cbdca Tweak font size of "Write your reply" (#5513) 2024-09-26 21:01:57 -07:00
Hailey 389e6f1509 Lazy load ViewShot (#5517)
* lazy one spot

* lazy signup

* fix type

* tweak type, fix missing viewshot type

* only import type oops
2024-09-27 12:52:32 +09:00
Hailey dd1944e9b8 [Share Extension] Support images/movies from other apps like iMessage (#5515) 2024-09-26 19:57:16 -07:00
Samuel Newman 77c4a9922f tab change on press rather than pressIn (#5508) 2024-09-26 21:05:12 +01:00
Hailey a61b75be57 Add margin to bottom of search input (#5510) 2024-09-26 12:57:54 -07:00
Hailey 7ee67e4e7e [Share Extension] Move away from deprecated API, implement JS side of things (#5509) 2024-09-26 12:37:51 -07:00
Eric Bailey 175df72972 Fix weird button wrapping on splash (#5507)
* Fix weird button wrapping on splash

* Web
2024-09-26 12:58:47 -05:00
Hailey 863764b3fe [Share Extension] Use the proper identifier for if statement on iOS (#5505) 2024-09-26 10:51:22 -07:00
Eric Bailey 702dfa8536 Fix handle collapse on Android (#5504) 2024-09-26 12:47:27 -05:00
Eric Bailey 1ae7fa6363 Adjust header offset (#5501) 2024-09-27 01:59:04 +09:00
Eric Bailey 960f4450ee Adjust dialog timing (#5502) 2024-09-27 01:58:47 +09:00
Eric Bailey 5a142161cb Remove 10milly dialog, revert header logo changes (#5503) 2024-09-26 11:47:13 -05:00
Eric Bailey 27e09e7adc Fix font loading (#5500) 2024-09-27 01:30:00 +09:00
Eric Bailey 23dd638f6a Clean up left nav on web (#5488)
* Tweak nav item count style

* Fix nav item icon width and alignment

* Just refactor the thing

* New compose button

* Z index

* Rounded

* Tweak gradient

* Tweak gradient

* Tweak gradient

* Solid

* Adjust position of counter

* Always a circle
2024-09-26 10:57:45 -05:00
Eric Bailey 1895ae2e69 Adjust line height to not cut off emoji (#5496) 2024-09-26 23:59:47 +09:00
Eric Bailey 179a913f20 Emoji in account list (#5497) 2024-09-26 23:59:32 +09:00
Igor Adrov 625d7460d8 Make the counter more rounded (#5083) 2024-09-26 09:48:12 -05:00
Samuel Newman f2a69c4528 add emoji prop to composer reply to text (#5495) 2024-09-26 14:18:48 +01:00
Samuel Newman a9765fd23f Fix banner height in edit profile modal (#5494)
* fix banner height

* fix user banner, it's not edit profile's fault
2024-09-26 22:09:02 +09:00
Samuel Newman 78fb666020 Messages list - make avatars link to profile (#5484) 2024-09-26 01:32:54 +01:00
Eric Bailey 2e5f95c8dd Add back empty placeholder (#5489) 2024-09-25 17:41:03 -05:00
Hailey 58036ffb52 Filter errors that get sent to Sentry (#5247) 2024-09-25 15:05:33 -07:00
Eric Bailey b1ca2503de Add language filtering UI to search (#5459)
* Use new TextField for search bar

* Add lang dropdown

* Dialog

* Revert "Dialog"

This reverts commit 257573cd9c.

* Extract util, test, cleanup

* Fix formatting

* Pass through other params

* Fix sticky header

* Fix stale data, hide/show

* Improve query parsing

* Replace memo

* Couple tweaks

* Revert cancel change

* Remove unused placeholder
2024-09-25 15:54:43 -05:00
Eric Bailey 6bc001a30e Support emojis in settings account cards (#5487) 2024-09-25 15:48:40 -05:00
Eric Bailey fd15bfec40 Ensure notifications align with new post alignment (#5486) 2024-09-25 15:39:03 -05:00
Samuel Newman f54241c4cf constrain blur (#5485) 2024-09-25 19:42:33 +01:00
Samuel Newman 498f957a1d Use scale animation for tabs (#5483)
* fix passing PressableScale oPressIn prop

* use PressableScale for tabs
2024-09-25 18:28:10 +01:00
Hailey 47301661f7 [Video] use dynamic import for hls.js (#5429)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 09:51:51 -07:00
Samuel Newman 60b7443535 show a toast when a haptic is meant to fire while using simulator (#5481)
buzzz!
2024-09-25 17:13:23 +01:00
Samuel Newman 3293c5e0e0 Reduce display name size (#5482)
* reduce displayname size

* only apply to small screens
2024-09-25 17:13:03 +01:00
Eric Bailey 224ff42c23 Add gate to increase post-feed page size (#5473)
* Add gate to increase post-feed page size

* Exclude Discover

* Remove exception

* Clarify intent

* Let gate cache
2024-09-25 10:38:32 -05:00
Hailey be3c6ab93a Improve style of reply bar (#5447)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-25 08:32:58 -07:00
Samuel Newman 2296ea338e subtle avatar grow animation (#5480) 2024-09-25 15:02:29 +01:00
Samuel Newman f7a2368100 Header blurred banner on overscroll (take 2) (#5474)
* grow banner when overscrolling

* add blurview

* make backdrop blur as it scrolls

* add activity indicator

* use rotated spinner instead of arrow

* persist position of back button

* make back button prettier

* make blur less jarring

* Unify effects

* Tweak impl

* determine if should animate based on scroll amount

* sign comment

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 15:01:25 +01:00
Samuel Newman bd393b1b38 Allow profile header to overscroll (#5457)
* add allowoverscroll prop

* ensure spinner is visible

* more generic prop for `<List>`

* rename to allowHeaderOverScroll
2024-09-25 14:58:53 +01:00
noriaki watanabe 850cfc1cd5 delete extractHtmlMeta (#5478) 2024-09-25 20:28:16 +09:00
Eric Bailey b38d4697b7 [Neue] Post avi, PostMeta cleanup (#5450)
* Support emoji in text with custom font

* Add emoji support to elements that need it

* Remove unused file causing lint failure

* Add web only link variant

* Refactor PostMeta

* Reduce avi size in feeds

* Fix alignment, emoji, in PostMeta

* Smaller avis in notifications

* Shrink post placeholder avi

* Handle the handle again

* Link cleanup

* Cleanup unused props

* Fix text wrapping in timestamp

* Fix underline color

* Tighten up spacing

* Web only whiteSpace
2024-09-24 20:10:13 -05:00
Eric Bailey 2429d5d1ae Fix composer jumpiness on native (#5476) 2024-09-24 18:10:32 -05:00
Hailey f231da0cd9 Tweak RN patch (#5477) 2024-09-24 15:24:56 -07:00
dan ddaf2c62bd [Video] Refactor HLS logic (#5468)
* Extract HLS interop into useHLS

* Rename variable

* Move flushing outside an effect

* use continue instead of return

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-24 21:47:09 +01:00
Samuel Newman 4f0217403d add a bunch of settings-related icons (#5471) 2024-09-24 21:26:48 +01:00
Hailey 6338083a73 [React Native] Patch RCTFileReaderModule readAsDataURL to prevent crash when type is nil (#5475) 2024-09-24 13:25:05 -07:00
Hailey ea43d20c61 Remove image resizer (#5464) 2024-09-24 10:15:33 -07:00
Hailey d2fae81b33 Remove react-native-fs (#5463)
* remove rnfs

* tweak e2e

* log

* use `safeDeleteAsync`
2024-09-25 01:28:12 +09:00
Mary b9516202fa Revamp image editor (#5462)
* new image editor

* Rm react-avatar-editor

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 01:27:40 +09:00
Mary ed512d6dc5 Revamp edit image alt text dialog (#5461)
* revamp alt dialog

* readd the limit check

don't trim with enforceLen, it ruins copy-pasting long text and it's overall annoying behavior

* Update src/view/com/composer/photos/ImageAltTextDialog.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-09-25 01:21:06 +09:00
Mary 8ea89469ef MobX removal take 2 (#5381)
* mobx removal take 2

* Actually rm mobx

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 01:14:15 +09:00
Eric Bailey dbe1df7ac7 Edit self hosting copy (#5469)
* Edit self hosting copy

* Tweak

* Tweak
2024-09-25 00:45:56 +09:00
Samuel Newman b626b93417 Automatically optimise SVG assets (#5467)
* add svgo as dev dep

* prefer viewbox

* manual config

* fix config param names

* align config with svgomg

* add lint-staged svgo hook

* edit hook

* add trailing whitespace plugin

* run svgo on existing assets
2024-09-24 15:31:41 +01:00
Hailey a1e212ab59 [Share Extension] Update to support video (#5385) 2024-09-24 01:02:58 -07:00
Hailey b57ddd0968 Revert change in FAB animation (#5465) 2024-09-24 00:44:47 -07:00
Hailey 53b095adeb Improvements to NSE (#4992) 2024-09-23 18:48:48 -07:00
Eric Bailey e93cbbd56a Don't use flex on inputs (#5458) 2024-09-23 16:34:59 -05:00
Eric Bailey e1ee95a719 Fix web splash (#5456)
* Fix web splash

* Untangle base styles

* Fix id name, remove log
2024-09-23 15:21:32 -05:00
Hailey b77031a074 invert the fab animation, play a haptic (#4309) 2024-09-23 13:06:22 -07:00
Samuel Newman 0f36ffdc43 add sideborders to <ProfileHeaderLoading> (#4995) 2024-09-23 21:05:23 +01:00
Samuel Newman 91853ed538 [Video] Flush low quality segments once focused (#5430)
* Update VideoEmbedInnerWeb.tsx

* keep proper track and flush properly

* consistent current

* use current in listener

* manually loop
2024-09-23 20:30:34 +01:00
Eric Bailey 5eb294488f [Neue] Handle emoji within custom font (#5449)
* Support emoji in text with custom font

* Add emoji support to elements that need it

* Remove unused file causing lint failure

* Fix a few more emoji locations

* Couple more

* No throw
2024-09-24 00:40:37 +09:00
Samuel Newman 443f3a6406 Use pressable for video controls (#5452)
* use pressable for video controls

* add `as any` to preexisiting bad type

* stop mutating prop
2024-09-23 16:35:16 +01:00
Eric Bailey 5e333d4dfc Resolve source files for fonts, remove hack (#5454)
* Resolve source files for fonts, remove hack

* Prettier

* Prettier, add to hook

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-24 00:35:07 +09:00
whey.party 87d601e68d changed white (gray_0) text to offwhite (gray_25) (#5453) 2024-09-23 10:24:36 -05:00
Mary 4e8d86db31 Let Expo/Webpack handle CSS assets (#3942)
* chore: handle built css assets

* chore: let prettier handle css code

* refactor: let webpack build css assets

* chore: prettier on bskyembed

* chore: touch empty.txt on css directory

* chore: do the same to the workflow
2024-09-23 23:38:04 +09:00
Eric Bailey 7e2456b906 [Neue] Font weights (#5442)
* Align all font weights

* Only load necessary fonts

* Also comment out from hook
2024-09-20 17:29:58 -05:00
Eric Bailey 4161e23320 Fix spacing (#5444) 2024-09-20 17:25:28 -05:00
Hailey c88b555410 Validate TLD in signup (#5426)
* add lib

* add validation

* log

* add some common typos

* add tests

* reset hasWarned state on edit

* shorten path

* Move test file, adjust regex, add test

* Get real nit picky

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-09-20 16:10:34 -05:00
Wesley e07f5d5980 Fixing extra spacing in notification text (#5396) 2024-09-20 15:06:31 -05:00
Wesley 5be5f96faa Fixing hover card for labeler accounts (#5414)
* Fixing hover card for labeler account

* removing memo
2024-09-20 14:49:23 -05:00
Samuel Newman 79a2f8d528 Increase rounding for all embeds (#5421)
* tweak image styles

* fix reply image preview and covert to atoms

* increase rounding on media inset border

* decrease gap on desktop

* fix inset styles

* increase rounding on embeds to `md`

* Couple edge cases

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-09-20 14:47:28 -05:00
Eric Bailey c85a271ef6 Additional moderation (#5172)
* Set up additional mod authorities

* Filter out non-configurable mod authorities

* WIP

* Working

* Cleanup, add mod

* Cleanup

* Add more debug logs

* Tweak logs

* Filter out imperative labels from typeaheads

* Filter hideable content from notifications

* Add api

* Fall back in dev

* Remove space

* Use prod endpoint

* Add tiny notice

* Add notice to labeler card, show all labelers
2024-09-20 14:16:23 -05:00
Samuel Newman 395edfe78f patch expo modules again (#5441) 2024-09-20 20:14:53 +01:00
Eric Bailey 0eed1cfec1 [Neue] Buttons (#5406)
* Re-align button sizing

(cherry picked from commit bcec243bb59dfe468313d98ba61f464d9750feec)

* Use large, small, tiny

(cherry picked from commit 1dc333c2993ab7f2e0ac750c0670dcec9a7069d0)

* Tweaks
2024-09-20 11:38:51 -05:00
Eric Bailey 27cceb96f3 Add explicit non-handling of detached quotes in embed (#5156) 2024-09-20 11:28:25 -05:00
Eric Bailey fa6f6f9e47 Language fixes (#5384)
* Add some comments

* Decouple language settings

* Normalize on read/write

* Refactor

* Support device locale on app startup

* Cleanup, port to web

* Clean up comments

* Comment

* Try not to mutate

* Protect util handling, update test

* Dedupe array values
2024-09-20 10:50:33 -05:00
futur cd88cbeab8 Add border to menu on web (#5439) 2024-09-20 10:09:55 -05:00
Samuel Newman f42d44112d Add eslint rule to fix imports without the #/ path alias (#5175) 2024-09-20 09:11:29 +01:00
Eric Bailey 22410a3cee [Neue] Parallel font loading on web (#5411)
* Parallel font loading

(cherry picked from commit 10e2b05b575bbbf8b0ca5b4a336817cd902d712b)

* Handle failures

* Rely on font-face and preload tags for font loading (#5431)

* Cache fonts for a year
2024-09-19 17:57:15 -05:00
Eric Bailey c8184e823d Adjust toggle components sizing (#5408)
(cherry picked from commit a9cbd23fcdcbacbdd2ca5f6bbe0bc7161e6591e3)
2024-09-19 16:02:47 -05:00
Eric Bailey c0cb5936f5 [Neue] Copy and spacing tweaks (#5428)
* Copy and spacing tweaks

* Copy tweaks
2024-09-19 16:02:29 -05:00
Eric Bailey 8a7fc9ad3f [Neue] Ligatures & composer (#5427)
* Disable contextual ligatures

* Ensure new type styles are applied to the composer

* Clean up using real devices

* Feedback
2024-09-19 14:41:31 -05:00
Eric Bailey 1523160467 Remove expo/vector-icons from EditImage modal (#5422) 2024-09-19 11:54:39 -05:00
Eric Bailey 24adcb48b7 Revert provider stacking changes (#5423) 2024-09-19 11:54:29 -05:00
Samuel Newman 8fde02fabc Fix ext embeds in DMs (#5419)
* fix ext embeds in DMs

* undo acciental rounding change
2024-09-19 15:32:12 +01:00
Eric Bailey bda355fd58 Fix font loading on web (#5412)
* Copy font files during build

* Fall back if error loading fonts
2024-09-18 20:22:03 -05:00
Eric Bailey cbc7cd0808 [Neue] Base (#5395)
* Add fontScale, gate it, fix some computes

* Add inter, integrate

* Clean up

* Apply to old Text component

* Use numeric weight

* Cleanup

* Clean up appearance settings

* Global tracking

* Fix regular italic variant

* Refactor settings and fontScale values

* Remove flags

* Get rid of lower weight font usage

* Remove gate from settings

* Refactor appearance settings for reuse

* Add neue type nux

* Update defaults

* Load fonts, add fallback families

* Load fonts via plugin in production

* Fixes

* Fix for web

* Nits

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-18 19:35:34 -05:00
Hailey fb3be79820 Update sentry sourcemaps upload (#5409) 2024-09-18 14:51:14 -07:00
Eric Bailey 6c8ef69654 Fix for undefined ref on hot reload on web (#5407) 2024-09-18 15:45:20 -05:00
Hailey 41d4b2c7ef remove expo-sentry (#5405) 2024-09-18 09:34:29 -07:00
Hailey f45f7148ee Revert unneeded changes to expo-modules-core patch (#5393) 2024-09-18 08:42:42 -07:00
Hailey 8d560de44b Temporary Sentry hack patch for iOS 18 (#5400) 2024-09-18 11:25:32 +01:00
Samuel Newman 67895f7f99 Make it work with Xcode 16 (#5386) 2024-09-17 12:27:22 -07:00
Eric Bailey b2b5be542a Fix border radius on avatars (#5392) 2024-09-17 12:07:19 -07:00
Roscoe Rubin-Rottenberg 751375ce3c Make like animation on web same speed as mobile (#5391) 2024-09-17 12:07:09 -07:00
Eric Bailey 2745cba3ea Pre-fill alt text with 10-million card post (#5389)
* Pre-fill alt text with 10-million card post (#5377)

* Clean up type

* Tweak alt copy

* Add pt translation, fix typo

---------

Co-authored-by: Calvin <clavin@users.noreply.github.com>
2024-09-17 13:55:19 -05:00
surfdude29 8f98d6b12f Tweak pt-BR string (#5372) 2024-09-17 11:34:48 -07:00
Hailey 342919bc4e Bump 1.91.2 (#5387) 2024-09-17 10:00:31 -07:00
Hailey 0414b95c58 [Video] Additional android fixes (#5373)
* rm unused code

* bump lib

* invert bool
2024-09-17 14:04:59 +09:00
Eric Bailey b69fd23456 Milly tweaks (#5365)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-16 14:52:28 -07:00
Samuel Newman 8daf6b7868 [Video] Fix safari showing spinner (#5364) 2024-09-16 14:22:22 -07:00
Samuel Newman 8241747fc2 [Video] Volume controls on web (#5363)
* split up VideoWebControls

* add basic slider

* logarithmic volume

* integrate mute state

* fix typo

* shared video volume

* rm log

* animate in/out

* disable for touch devices

* remove flicker on touch devices

* more detailed comment

* move into correct context provider

* add minHeight

* hack

* bettern umber

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-16 21:37:33 +01:00
Kevin Scannell 38c8f01594 Updates to Irish translation, back to 100% (#5345) 2024-09-16 12:08:26 -07:00
Ivan Beà b5d8ce114d Update catalan messages.po (#5223)
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: gsmt <samaritanojr006@gmail.com>
2024-09-16 12:00:26 -07:00
Takayuki KUSANO 4a0e2e3a05 Update Japanese translation (#5217) 2024-09-16 11:59:40 -07:00
Minseo Lee 7dfbd5d7d3 Update Korean localization (#5254) 2024-09-16 11:47:26 -07:00
Frudrax Cheng 08003a09ec Update Chinese localization (#5291)
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-09-16 11:46:54 -07:00
surfdude29 c371b70722 Update French localization (#5227)
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-09-16 11:44:42 -07:00
surfdude29 06f0785a8c Update Portuguese localization (#5256)
Co-authored-by: Henrique Marques <hfvmarques@gmail.com>
Co-authored-by: Arthur Tavares <arthurabreu00@gmail.com>
2024-09-16 11:36:39 -07:00
Samuel Newman 75e3f51c10 [Video] Fix scrubber tap target (#5360)
* put padding on correct element

* clear timeout on down
2024-09-16 18:15:07 +01:00
Samuel Newman d62e14eca1 loosen checks on vtt file (#5359) 2024-09-16 17:29:34 +01:00
Eric Bailey 0681727b64 Remove overflow hidden from external link outer el (#5356)
* Remove overflow hidden

* Borders when no thumb

* Fix overflow, add bg to no-thumb state

* Cleanup
2024-09-15 15:42:45 -05:00
Eric Bailey 42b28fec9d Disallow some font scaling 2024-09-15 15:11:04 -05:00
Eric Bailey 61deab7051 Nux after onboarding (#5357)
* Don't show nux dialogs until post-onboarding

* Don't show if over 10M
2024-09-15 14:58:10 -05:00
dan d6c11a7231 Fix wrong empty state for liked by (#5343) 2024-09-15 12:14:46 -07:00
Hailey 55da2704d8 [UITextView] Add background color support to iOS selectable text (#5335) 2024-09-15 12:11:55 -07:00
surfdude29 2a344d8f12 Add context to Unmute and Mute strings (#5340)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-15 12:11:44 -07:00
Hailey f8658f0795 bump (#5348) 2024-09-14 19:38:51 +01:00
Paul Frazee 701ddfb171 Release 1.91.1 prep (#5339)
* Fixes to tests

* intl extract
2024-09-13 16:55:01 -07:00
Hailey d8b80309bd [Video] Fix regression on audio session at launch (#5338) 2024-09-13 16:48:17 -07:00
Eric Bailey e767c50f65 Don't open composer via hotkey if other dialog is already open (#5334)
* Don't open composer via hotkey if other dialog is already open

* Check for lightbox also

* Check for drawer
2024-09-13 18:14:46 -05:00
Eric Bailey d76f9abdd7 "N" keyboard shortcut to open a new post modal (#5197)
* feat: Add hook on web app to open composer with 'N' keyboard shortcut

* Extract, don't fire open composer if already open

* Ignore interactive elements

---------

Co-authored-by: João Gabriel <joaog@nocorp.io>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-13 16:48:28 -05:00
Hailey cac43127f0 [Video] Bump video (#5333) 2024-09-13 14:46:02 -07:00
dan ce3893d816 Apply Following settings to Lists (#5313)
* Apply Following settings to Lists

* Remove dead code
2024-09-13 22:30:09 +01:00
Eric Bailey 88813f57c9 Always display next button on login page (#5326)
Co-authored-by: Vinícius Souza <39967235+vinifsouza@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-13 14:21:45 -07:00
Hailey 533382173c [Video] Don't require email verification on self-host (#5332) 2024-09-13 14:08:45 -07:00
Hailey 843f9925f5 [Video] Remember mute state while scrolling (#5331) 2024-09-13 14:07:13 -07:00
dan 791bc7afbe Fix lexicon validation in PWI Discover (#5329) 2024-09-13 21:11:17 +01:00
Hailey 26508cfe6a [Video] Remove expo-video, use bluesky-video (#5282)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-13 12:44:42 -07:00
Eric Bailey 78a531f5ff Disable pointer events on media border (#5327) 2024-09-13 19:02:47 +01:00
Paul Frazee 9163f676f5 Merge branch 'events' into main 2024-09-13 10:30:55 -07:00
Eric Bailey 08ac3a27c2 Add events 2024-09-13 12:05:15 -05:00
Eric Bailey b3381da1c1 Image/video border + tweaks (#5324)
* Image/video border (#5253)

* Update AutoSizedImage.tsx

* Update AutoSizedImage.tsx

* Update Gallery.tsx

* Update ExternalLinkEmbed.tsx

* Update MediaPreview.tsx

* Update UserAvatar.tsx

* Update ExternalLinkEmbed.tsx

* Update ExternalPlayerEmbed.tsx

* Update ExternalGifEmbed.tsx

* Update GifEmbed.tsx

* Update ExternalGifEmbed.tsx

* Update GifEmbed.tsx

* Update UserAvatar.tsx

* Update ExternalPlayerEmbed.tsx

* Update ExternalPlayerEmbed.tsx

* video

* Update QuoteEmbed.tsx

* Tweaks, abstract components

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2024-09-13 18:02:58 +01:00
Paul Frazee c7231537f1 Merge branch 'ten-milly' into main 2024-09-13 08:57:41 -07:00
dan 1dc7ef137c Fix notification->post jump for real (#5314)
* Revert "Fix notification scroll jump (#5297)"

This reverts commit e0d9e75407.

* Query notifications first
2024-09-13 15:01:09 +01:00
Eric Bailey 0315814edd Separate alt/crop, use new icon (#5321) 2024-09-13 14:56:54 +01:00
Eric Bailey b47bac965f Merge remote-tracking branch 'origin/ten-milly-android-save' into ten-milly
* origin/ten-milly-android-save:
  On android, change ten milly nux secondary action to save instead of share
2024-09-12 21:24:57 -05:00
Eric Bailey 4637c66390 Let display name wrap 2024-09-12 21:24:32 -05:00
Eric Bailey 003f9e06d4 Fallback snoozing 2024-09-12 21:24:32 -05:00
dan fddb1255ec Enable video_upload gate (#5311) 2024-09-12 17:37:07 -07:00
Eric Bailey 47d99b8712 Adjust image sizing (#5302) 2024-09-12 22:35:59 +01:00
Eric Bailey d60a8f26c4 Suggested follows by actor (on profiles) updates (#5243)
* If fallback, return nothing

* Compress size a bit

* Hide on own profile

* Match load state

* Remove gcTime

* Filter out followed users

* Feedback
2024-09-12 22:34:10 +01:00
Paul Frazee 36ac551347 Add ja and pt-BR translations 2024-09-12 13:11:30 -07:00
Paul Frazee 7acf0e1284 On android, change ten milly nux secondary action to save instead of share 2024-09-12 12:57:08 -07:00
Eric Bailey cc8e7b5ae5 Handle display name 2024-09-12 13:56:25 -05:00
Eric Bailey 1f2e4b26c0 Handle overflow of bottom text 2024-09-12 13:54:20 -05:00
Eric Bailey 7bba213e1a Add retry 2024-09-12 13:45:58 -05:00
Eric Bailey bd79ce7ea0 Ensure dialog shows for all accounts without snoozing 2024-09-12 13:45:06 -05:00
Eric Bailey 46402fd010 Add gate 2024-09-12 13:14:51 -05:00
Paul Frazee 47bea32061 Add a hard-coded redirect for lulaoficial.bsky.social (#5303) 2024-09-12 11:09:58 -07:00
dan 897d8ba744 Revert "Show some known OP replies in Following (#5049)" (#5301)
This reverts commit bff6aedecf.
2024-09-12 18:45:19 +01:00
Wesley 86abeb80b9 Renaming the Follow button to "Follow back" when followed by user (#5281)
* Renaming the follow button to follow back when followed by user

* Fixing conditions and reusing existing translation
2024-09-12 15:59:12 +01:00
dan e0d9e75407 Fix notification scroll jump (#5297) 2024-09-12 15:39:04 +01:00
Minseo Lee 4d22adbcf6 Tabular numbers to video timestamp (#5293) 2024-09-12 15:30:57 +01:00
Samuel Newman 7da3ddbe24 [Video] speculative .vtt file selection fix (#5296)
* speculative vtt fix

* add logging
2024-09-12 15:16:38 +01:00
Eric Bailey 63f85f6493 Copy 2024-09-12 08:03:58 -05:00
Eric Bailey c99e43d6c6 Protect against other exit methods, protect against multiple fetches 2024-09-11 21:56:20 -05:00
Eric Bailey 45c8d89d92 Protect against 3p PDSs and bad responses 2024-09-11 21:52:26 -05:00
Eric Bailey 6e78ce53d7 Dev helpers, string cleanup 2024-09-11 21:47:25 -05:00
Eric Bailey c8b133863d Fix some nux types 2024-09-11 21:28:34 -05:00
Eric Bailey 9bb385a4dd Refactor, integrate nux, snoozing 2024-09-11 21:20:39 -05:00
Eric Bailey 63444052e8 Rename 2024-09-11 20:01:27 -05:00
Eric Bailey 77d60a5b80 Hook up data 2024-09-11 19:58:17 -05:00
Eric Bailey f8edd11bc5 Don't open for logged out users 2024-09-11 19:58:17 -05:00
Eric Bailey 2ee68e4f4d Copy 2024-09-11 19:58:16 -05:00
Eric Bailey 11ecea22d4 Add badges, clean up spacing 2024-09-11 19:58:16 -05:00
Eric Bailey f7db14f32f Disable avi 2024-09-11 19:58:16 -05:00
Eric Bailey eaf0081623 WIP, avi not working on web 2024-09-11 19:58:16 -05:00
Eric Bailey 3c8b3b4782 Progress on desktoip 2024-09-11 19:58:16 -05:00
Eric Bailey 76c584d981 WIP 2024-09-11 19:58:16 -05:00
Eric Bailey ae71f5ce84 NUX API (#5278)
* Set up nux API

* Bump SDK

* Naming

* Imports
2024-09-11 19:56:00 -05:00
Eduardo Tachotte cff7cbb4aa Add autoCapitalize to password field (#5216) 2024-09-12 00:28:23 +01:00
Gargaj 67f56af6d4 remove double closing tag (#5257) 2024-09-11 23:42:21 +01:00
Samuel Newman 8a6d83de3b make container relative (#5280) 2024-09-11 23:04:40 +01:00
Samuel Newman 991202966e [Video] Fix web autoplay (#5274) 2024-09-11 11:36:54 -07:00
Hailey dd2d0e6233 add (#5273) 2024-09-11 18:57:58 +01:00
Samuel Newman f943239894 fix min size for compression (#5272) 2024-09-11 18:50:36 +01:00
Samuel Newman 24b07c6cf4 [Video] Cap duration (#5270) 2024-09-11 10:33:57 -07:00
Samuel Newman a19c91d90e [Video] TEMP disable skip compression (#5271) 2024-09-11 10:33:10 -07:00
Samuel Newman 580b67ba37 disable autoplay within messages and trim feelers (#5260) 2024-09-11 16:20:32 +01:00
Samuel Newman b04ecbe54d hls buffering tweaks (#5266) 2024-09-11 16:20:20 +01:00
Samuel Newman db38438549 increase target area of scrubber (#5265) 2024-09-11 16:20:08 +01:00
Samuel Newman fc25992070 [Video] make hover state stick around if tapped (#5259) 2024-09-10 20:19:37 -07:00
Samuel Newman c22492147b remove scrollbar-gutter in fullscreen (#5258) 2024-09-10 23:18:08 +01:00
Hailey b37b64fb49 Verify Identical Domains Emit Origin (#5255) 2024-09-10 08:16:41 -07:00
Samuel Newman 08f5f37b34 [Video] Allow drag-and-drop & pasting video (#5252)
* allow DnD/pasting video

* rm await
2024-09-10 16:14:28 +01:00
Samuel Newman 6bc5a05f4b [Video] Much simpler fix to fullscreen bug (#5251)
* much simpler fix

* allow old behaviour on firefox

* rm logs
2024-09-10 16:10:13 +01:00
Frudrax Cheng db9cf92d87 Adjust the translated strings to the correct max size. (#5248)
* Update pt-BR localization

* Update ru localization
2024-09-10 11:21:28 +01:00
Samuel Newman 66239ba11d [Video] Fix fullscreen on Chrome (#5246) 2024-09-09 22:37:57 -07:00
Samuel Newman 0f6be244a6 max 1 subtitle file (#5244) 2024-09-10 02:02:53 +01:00
Samuel Newman 436e30fded [Video] use correct max size (#5245)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-09 17:01:40 -07:00
Hailey 723a5e488e [Video] Add a string for localization (#5240) 2024-09-09 12:44:41 -07:00
Jaz 9e1eb1f9f1 Add CORS to bskyweb (#5221) 2024-09-09 18:39:28 +01:00
surfdude29 f240893980 Add context to Mute and Unmute labels on video control (#5234)
Co-authored-by: Marco Buono <thecoreh@gmail.com>
2024-09-09 09:29:14 -07:00
Samuel Newman 44f1cd9fb5 [Video] Media preview improvements (#5229)
* background color for images that haven't loaded

* fix recordwithmedia not appearing
2024-09-09 16:41:27 +01:00
Samuel Newman 6c6a76b193 [Video] Upload tweaks (#5228)
* use correct mime type

* fix wheel progress
2024-09-08 08:27:50 -07:00
surfdude29 95aee146b6 Update dates.ts (#5220) 2024-09-07 21:23:51 -07:00
Paul Frazee a6a3d203fd Release 1.91 prep (#5215)
* Run intl:extract

* Test fixes

* Update pt-BR translations for video
2024-09-07 13:52:00 -07:00
Kirill 63ab16a62d Add Russian translation (#3875)
* Add Russian translation

* Update messages.po

* Update messages.po (draft)

* Добавлены новые строки для перевода

В ручную объеденил исправленный RU с самым новым EN. Могут быть ошибки но быстрый тест проблем не выявил.

* Переведены не переведенные строки, некоторые исправления перевода.

* Еще небольшие правки

* Update messages.po (draft)

* Update messages.po (stage)

* Update messages.po

* Init lingui compiling ru language

* Update messages.po

* Update messages.po (clear)

* Update messages.po

* Update messages.po

* change await import to await Promise.all

* Update messages.po

* Update messages.po (clear)

---------

Co-authored-by: DearFox <59219907+DearFox@users.noreply.github.com>
2024-09-07 13:50:18 -07:00
Hailey 9b8d62ca25 [Video] Tweak order of elements in composer (#5213) 2024-09-07 13:29:27 -07:00
Hailey f1877e44f2 [Video] Fix type on web (#5211) 2024-09-07 13:03:53 -07:00
Takayuki KUSANO 0a61b06580 Update Japanese Translation (#5031)
* Update translation

* Update translation

* Fixed wording

* Change the translation of QRcode of starterpack

* Update translation

* Update translation

* Update translation

* Update translation
2024-09-07 12:29:37 -07:00
Minseo Lee 4037e7a50d Update Korean localization (#5035)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-09-07 12:29:08 -07:00
Frudrax Cheng 373735ac49 Update Chinese Localization (#5036)
* CN: Update Translates

* CN: Remove superseded strings

* CN: Update Translates#1

* TW: Update Translates & Remove superseded strings

* CN: Update Translates#2

* TW: Update and clean

* CN: Update Translates

* Both: Run intl:extract

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN: Fix typos

* Update Translates

* TW: Update Translates

* CN: Update Translates

* CN: Update Translates

* CN: Remove superseded strings

* TW: Update and clean

* CN: Update Translates

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-09-07 12:28:36 -07:00
miyun 665766b0d5 Overhaul IT locale (#5069)
* Overhaul IT locale

* Various corrections to the IT locale (thanks to surfdude29!)
2024-09-07 12:25:07 -07:00
Ivan Beà 2a7b333553 Update catalan messages.po (#5067)
* Update catalan messages.po

Another batch, take a look please @jordimas @darccio @surfdude29 @rortan134

* Update catalan messages.po

apply @jordimas corrections

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update messages.po

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-09-07 12:23:50 -07:00
Samuel Newman 1b4fee3e43 [Video] Open the floodgates (partially) (#5208) 2024-09-07 12:15:15 -07:00
Hailey 51259e7c42 Revert "[Video] Ensure loop doesn't stop" (#5209) 2024-09-07 12:11:18 -07:00
Hailey 10cdc436b8 [Video] Ensure loop doesn't stop (#5207) 2024-09-07 11:54:51 -07:00
Hailey 2842f661db Add intent for verifying email (#5120) 2024-09-07 11:54:39 -07:00
Samuel Newman 45a719b256 [Video] Check upload limits before uploading (#5153)
* DRY up video service auth code

* throw error if over upload limits

* use token

* xmark on toast

* errors with nice translatable error messages

* Update src/state/queries/video/video.ts

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 19:27:32 +01:00
Samuel Newman b7d78fe59b [Video] Only compress if >25mb or unknown format (#5187)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 11:22:44 -07:00
dan 42fb92064a Set onboarding_minimum_interests to false (#5204)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 11:22:34 -07:00
dan 292117804f Set show_follow_suggestions_in_profile to true (#5205) 2024-09-07 17:08:19 +02:00
dan 7d7431d14e Set fixed_bottom_bar to true (#5203) 2024-09-07 17:07:30 +02:00
Hailey c8be9b78c6 [Statsig] Add more events to downsample, increase downsample rate (#5198)
* add some events for sampling

* include downsample rate in metadata

* fix metadata logic

* uncomment debug
2024-09-07 13:13:51 +02:00
jlca adef9cff10 fix: remove duplicate style rounded_sm (#5201) 2024-09-06 22:29:36 -07:00
nicofercavv 275f2bb004 Add cursor pointer to 'New post' button (#5109) 2024-09-06 18:18:31 -05:00
Eric Bailey 543be17674 Add emoji picker to chat composer (#5196)
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Adrov Igor <nucleartux@gmail.com>
2024-09-06 15:58:47 -07:00
Jaz 30d2ab8dd3 Merge pull request #5195 from brianolson/ipcc-handler
quick integration of ipcc service
2024-09-06 15:21:27 -07:00
Hailey 7e4f8cabd3 [Video] Handle push/pop on Android for autoplay (#5194) 2024-09-06 15:01:05 -07:00
Jaz dc6b04b66f nvm 2024-09-06 15:00:13 -07:00
Jaz 6620ee421b fix action 2024-09-06 14:59:02 -07:00
Jaz d41a00b373 Trigger a build maybe 2024-09-06 14:58:19 -07:00
Igor Adrov 00ce95893d Fix starter packs scroll (#5190) 2024-09-06 16:32:58 -05:00
Eric Bailey c5faa60344 Redesign play button (#5192) 2024-09-06 21:55:23 +01:00
Brian Olson eec93c4e74 cleanup 2024-09-06 16:34:57 -04:00
Brian Olson 6d4ae3d719 quick integration of ipcc service 2024-09-06 16:19:55 -04:00
Eric Bailey cd9c3bf498 Bump joined stat (#5188)
* Bump joined stat

* Ope, actually more
2024-09-06 12:34:51 -05:00
Hailey 60182cd874 [Video] Add disable autoplay for native, more tweaking (#5178) 2024-09-06 09:31:01 -07:00
Eric Bailey bdff8752fb Add support for autofill of one-time-code for email verification (#5186) 2024-09-06 11:22:29 -05:00
Hailey a1969faf8e [Video] Fix alt text dialog on iOS and Android (#5177)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-06 08:26:37 -07:00
Eric Bailey 64b50ba69a Go full width on native and mobile web (#5184) 2024-09-06 17:19:29 +02:00
Eric Bailey b90cd68359 Remove record-with-media side-by-side layout (#5182) 2024-09-06 09:58:27 -05:00
Samuel Newman 55468595d0 [Video] Error banner improvements (#5163) 2024-09-05 21:25:56 -07:00
Hailey 18133483fe [Video] Bump expo-video (#5173) 2024-09-05 15:13:53 -07:00
Hailey 6eabedd037 [Video] More adjustments for loading state jank (#5171) 2024-09-05 14:54:09 -07:00
Hailey 7eb4cd89c5 Downgrade MMKV to 2.x (#5170) 2024-09-05 12:55:10 -07:00
Eric Bailey 8a66883df8 Add MMKV interface (#5169) 2024-09-05 12:31:24 -07:00
Eric Bailey 2265fedd2a Constrain image heights in feeds and threads (#5129)
* Limit height of images within posts

* Add some future-proofness

* Comments, improve a11y

* Adjust ALT, add crop icon

* Fix disableCrop in record-with-media posts

* Clean up aspect ratios, handle very tall images

* Handle record-with-media separately, clarify intent using enums

* Adjust spacing

* Adjust rwm embed image size on mobile

* Only do reduced layout if images embed

* Adjust gap in small embed variant

* Clean up grid layout

* Hide badge on small variant with one image

* Remove crop icon from image grid, leave on single image

* Fix sizing in Firefox

* Fix fullBleed variant
2024-09-05 13:45:13 -05:00
Samuel Newman 117926357d [Video] require email to post videos (#5152)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-05 11:36:19 -07:00
Hailey 91c3dbd812 [Video] Fix CI (#5168) 2024-09-05 10:21:52 -07:00
Marco Buono 824206b95f Load number formatting data when activating locales (#5128) 2024-09-05 10:34:24 -05:00
Hailey 93c171b403 [Video] Use expo-video from fork (#5159) 2024-09-05 08:27:28 -07:00
Marco Buono 6d8ed5c3c8 Add quick access to quote action on long press (#5123) 2024-09-05 10:14:04 -05:00
Samuel Newman 4e6b6740f7 [Video] Enter/exit animations for video in composer (#5164)
* enter/exit animations for video in composer

* use zoom out animation

* unify margin between different steps

* skip animation when posting
2024-09-05 16:07:06 +01:00
Samuel Newman 428607d9a3 [Video] throw HLS errors to be caught by error boundary (#5166)
* throw HLS errors to be caught by error boundary

* wording tweak

* do the same on native

* fix type error
2024-09-05 16:03:00 +01:00
Samuel Newman 60b74f7ab8 [Video] Disable autoplay option (preview + web player) (#5167)
* rename setting

* preview (web)

* preview (native)

* improve autoplay disabled behaviour on web
2024-09-05 15:56:10 +01:00
gabrielsiilva d846f5bbf0 fix on 'reposted by you' translation to ptbr (#5146) 2024-09-04 21:00:07 -07:00
Hailey 2556698427 [Video] Add loading state to player (#5149) 2024-09-04 16:46:01 -07:00
Eric Bailey 76f493c279 Ensure profile labels can be appealed separately from account labels (#5154) 2024-09-04 18:34:19 -05:00
Eric Bailey 4d97a2aa16 Add misleading report type to posts (#5150)
* Add misleading report type to posts

* Update copy

* Update copy
2024-09-04 18:22:57 -05:00
Hailey 86de0dda02 Tweak animation to not roll 0 -> 1, overflow hidden (#5148) 2024-09-04 12:36:20 -07:00
Hailey 0ef17a464d Use new player icon for external video embeds (#5147) 2024-09-04 12:20:21 -07:00
Samuel Newman 5dcb52015c add video to embed (#5145) 2024-09-04 19:57:16 +01:00
Samuel Newman fcf27f0512 [Video] content fit cover on native (#5140) 2024-09-04 19:56:02 +01:00
Samuel Newman e8eaf2f4a7 allow only posting video (#5142) 2024-09-04 19:42:28 +01:00
Marco Buono c36c47d49a Add slight spacing between Post and CW button (#5125) 2024-09-04 11:04:08 -07:00
Hailey 6382a91fb0 [Video] Use same play button for gifs and videos (#5144) 2024-09-04 10:59:06 -07:00
Samuel Newman 5f5c14d044 Replace ImageHorzList 🤮 with MediaPreview (#5143) 2024-09-04 10:52:41 -07:00
Frudrax Cheng 82ca0b16b6 Fix a missing curly brace in pt-BR (#5130)
thanks!
2024-09-04 10:50:54 -07:00
Hailey 12b4a250d2 [Video] withRepeat for spinner (#5141) 2024-09-04 09:39:34 -07:00
Hailey 45bb2477d8 [Video] Show better progress (#5133) 2024-09-04 09:17:14 -07:00
Hailey d94ff2695d [Video] Throw error when playback fails (#5132) 2024-09-04 08:06:58 -07:00
Hailey dee28f378a [Video] Only allow one VideoView to be active at a time, regardless of source (#5131) 2024-09-04 08:06:45 -07:00
Hailey 21e48bb2d8 [Video] Tweak playback handling (#5127) 2024-09-04 08:00:53 -07:00
Samuel Newman 515f87ed24 fail video if cannot load preview (#5138) 2024-09-04 15:56:29 +01:00
Samuel Newman 3eef62d995 log errors (#5139) 2024-09-04 15:29:20 +01:00
dan e2a244b998 Disable in-thread deduping for reposted replies (#5135) 2024-09-04 15:42:22 +02:00
dan 8860890a85 Don't log extra background events (#5134) 2024-09-04 15:41:42 +02:00
Samuel Newman 39f74ced5c close keyboard before opening modal (#5124) 2024-09-03 23:13:25 +01:00
Samuel Newman 3ee5ef32d9 [Video] Error handling in composer, fix auto-send (#5122)
* tweak

* error state for upload toolbar

* catch errors in upload status query

* stop query on error

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-03 22:49:19 +01:00
Samuel Newman 0bd0146efb fix mime checks (#5118) 2024-09-03 20:55:10 +01:00
Fabio Nobre ea4d8bc1ab Updating some messages in the pt-BR locale file - [2] (#5099)
Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-03 12:14:38 -07:00
Eric Bailey ddda612c11 Fix border on some listing screens (#5115)
* Fix border on PostQuotes, add debug atom

* Add util_screen_outer, apply to h_full_vh here needed
2024-09-03 13:50:48 -05:00
Samuel Newman 5c2e9f09bf reset playback rate on exit fullscreen (#5116) 2024-09-03 19:46:37 +01:00
Hailey 7f26ad508e [Video] Toggle controls when entering fullscreen (#5113) 2024-09-03 11:04:46 -07:00
Hailey 5d300bec90 Adjust render properties for Feed List (#5080) 2024-09-03 10:56:00 -07:00
Hailey 0014d4363f Only animate the like icon when from an actual toggle (#5096) 2024-09-03 10:55:53 -07:00
Samuel Newman bd42f770b8 show video in quote (#5093) 2024-09-03 18:33:16 +01:00
Hailey dde72b48e1 [Video] Manage foreground/background playback on the native side (#5104) 2024-09-03 08:41:14 -07:00
Hailey 05e61346b8 [Video] Say No to Audio (Disable expo-video AudioSession management) (#5101) 2024-09-03 08:33:21 -07:00
Samuel Newman 0e1de19903 [Video] Upload errors and UI improvements (#5092)
* surface errors in UI

* style progress indicator

* remove job status progress

* rm log

* fix webm ext
2024-09-03 15:09:09 +01:00
Samuel Newman f9d736653c [Video] Hide mouse when inactive (#5094) 2024-09-03 11:51:16 +01:00
Samuel Newman 0469ca6cb4 [Embeds] Format big numbers (#5087) 2024-09-02 13:04:26 -07:00
Fabio Nobre f3f7dfc3e6 Add some Portuguese (PT-BR) translation (#5057) 2024-09-02 04:09:17 -07:00
Hailey 4abcd65ccf More tweaks to animation (#5082) 2024-09-02 03:15:31 -07:00
Mary 05ac76fc89 Don't eagerly load all JS assets (#3929)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-02 01:59:04 -07:00
Hailey 1225e84485 Improve animations for like button (#5074) 2024-09-02 01:37:24 -07:00
Samuel Newman eb868a042a [Video] Misc player style tweaks (#5064)
* use actual black rather than theme black

* adjust time/mute indicators
2024-09-02 09:33:46 +01:00
Samuel Newman 17d82a64a6 [Video] Remove hack from scrubber (#5063)
* remove mouseleave, add pointer cancel

* don't show time indicator if duration is 0
2024-09-02 09:32:51 +01:00
dan bf15fad240 Mark unhydrated replies as orphaned (#5048) 2024-08-31 13:14:53 -07:00
Hailey 2df22d8674 Add some Portuguese translation (#5052) 2024-08-31 12:52:18 -07:00
dan bff6aedecf Show some known OP replies in Following (#5049)
* Show known OP replies in Following

* Fiter by >0 parent likes
2024-08-31 03:54:14 +01:00
Eric Bailey 3d992f6bb5 Fix provider order (#5046) 2024-08-31 00:26:03 +01:00
dan ed232e69f7 Animate the like button (#5033)
* Animate the like button

* Respect reduced motion

* Move like count into animated component

* Animate text

* Fix layout on Android

* Animate text backwards too

* Fix bad copypasta

* Reflect nonlocal updates to animated values
2024-08-30 23:16:11 +01:00
Samuel Newman c41f372b3c [Video] Split 'videos' gate in two (#5037) 2024-08-30 12:53:27 -07:00
Samuel Newman ab260c3599 [Video] Minor player tweaks (#5044) 2024-08-30 12:48:23 -07:00
Samuel Newman 8647c8e9f5 [Videos] avoid using fetch for blob handling where possible (#5041)
* avoid using fetch where possible

* whoopsie wrong branch

* more import fixes
2024-08-30 19:05:38 +01:00
Samuel Newman c70ec1ce1a [Video] Captions and alt text (#5009)
* video settings modal in composer

* show done button on web

* rm download options

* fix logic for showing settings button

* add language picker (wip)

* subtitle list with language select

* send captions & alt text with video when posting

* style "ensure you have selected a language" text

* include aspect ratio with video

* filter out captions where the lang is not set

* rm log

* fix label and add hint

* minor scrubber fix
2024-08-30 18:45:49 +01:00
Samuel Newman e7954e590b [Videos] Fix uploads (#5042)
* fix pds url

* fix service auth exp

* whoopsie wrong branch
2024-08-30 18:44:00 +01:00
Eric Bailey c60e8d0772 Composer blocks (#5040)
* Move i18n provider up the stack

* Protect composer opening for a blocked post

* Protect ctrls from interacting with blocked user
2024-08-30 12:26:40 -05:00
dan dbbbba1d32 [Experiment] Suggest profiles in profile (#5030)
* Rename variable to disambiguate with parent scope

* More variables where they are used

* Inline variables

* Add suggestions in profile

* Gate it

* rm space

* Remove header suggestions under gate
2024-08-30 16:54:55 +01:00
Igor Adrov 46b7193a2b Hide back button in my profile (#4991) 2024-08-30 10:49:32 -05:00
Minseo Lee 2ef2ae1c6c Improve localization (#5008)
* Update QrCode.tsx

* Update generate-starterpack.ts
2024-08-30 09:59:49 -05:00
Samuel Newman 05b73d4d1e extend token lifetime to 30 minutes (#5019) 2024-08-30 08:32:18 +01:00
Hailey 8cddce5f30 Tweak rendering of top headers so they always appear even during load (#4982)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-30 00:20:46 -07:00
Eric Bailey 8651f31ebb Localize dates, counts (#5027)
* refactor: consistent localized formatting

* refactor: localized date time

* refactor: localize relative time with strings

* chore: fix typo from copy-paste

* Clean up useTimeAgo

* Remove old ago

* Const

* Reuse

* Prettier

---------

Co-authored-by: Mary <git@mary.my.id>
2024-08-29 19:22:53 -05:00
Hailey d5a7618374 Force at least one item to always be initially rendered (#5029) 2024-08-29 17:20:07 -07:00
Hailey 497aacf113 fix hashtag screen side borders (#4983) 2024-08-29 15:55:17 -07:00
Hailey 69e896c221 [Video] Properly get the service auth aud from the session (#5025) 2024-08-29 13:44:47 -07:00
Hailey 91fe41670f tweak (#5024) 2024-08-29 21:44:06 +01:00
dan 0a75969475 Fix language filtering for feeds (#5026)
* Fix language filtering for feeds

* Simplify logic
2024-08-29 20:22:18 +01:00
dan e51eb391df Enable show_follow_back_label_v2 (#5022) 2024-08-29 20:09:11 +01:00
dan 9ebc2785e4 Remove logging of following prefs (#5021) 2024-08-29 20:08:48 +01:00
dan faf66f3178 Remove new_user_guided_tour and tour code (#5023) 2024-08-29 18:57:36 +01:00
Hailey 69053b1b0a [Video] Remove old env var (#5018) 2024-08-29 09:40:17 -07:00
Hailey e33b88ed7d Profile screen performance tweak - Adjust initial num to render based on header height (#5005) 2024-08-29 09:09:24 -07:00
Samuel Newman ea5ab99399 [Video] Make compress/upload cancelable (#4996)
* add abort controller to video upload system

* rm log

* rm log 2
2024-08-29 17:00:12 +01:00
Samuel Newman 551c4a4f32 [Video] Add uploaded video to post (#4884)
* video uploads!

* use video upload lexicons

* add missing postgate

* remove references to prerelease package

* fix scrubber showing a "0"

* Delete types.ts

* rm logs

* rm upload header

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-29 16:34:41 +01:00
Hailey d52d29621e [Video] Add timeRemainingChange event to player in expo-video (#5013) 2024-08-29 08:28:41 -07:00
Samuel Newman d92731b1eb [Video] Lexicon implementation (#4881)
* implement AppBskyEmbedVideo lexicon in player

* add alt to native player

* add prerelease package

* update prerelease

* add video embed view manually from record

* fix type error on example video

* black bg + use aspect ratio on web

* add video to feeds

* fix video overflowing aspect ratio

* remove prerelease package

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-29 15:58:22 +01:00
Eric Bailey b136c44287 Hide quote counts for quotegated posts (#5011) 2024-08-28 16:57:18 -05:00
Hailey 16d556c3c9 Ensure captcha verification code gets submitted in signup request (#5010)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-28 11:56:04 -07:00
Samuel Newman 94d2180aaa clean up languages (#5007) 2024-08-28 16:58:19 +01:00
Hailey 5ae0d40a14 [Video] 🫧 Move logic around by platform (#5003) 2024-08-28 08:46:47 -07:00
Hailey 9aa2b2d14e bump 1.91.0 (#5002) 2024-08-28 12:23:30 +01:00
Samuel Newman b69c40da33 add indicator of time remaining (#5000) 2024-08-27 22:15:59 +01:00
Samuel Newman 9b534b968d [Video] add scrubber to the web player (#4943) 2024-08-26 22:28:45 +01:00
Paul Frazee def9dda29c Release 1.90 prep (#4988)
* Stop creating a mod-authority in e2e due to upstream conflict

* Dont require 3 interests when none come back

* Fix e2e login

* intl extract
2024-08-23 14:43:21 -07:00
Eric Bailey fc5cc189b5 Use moderatePost_wrapped for post embeds (#4981)
* Use moderatePost_wrapped

* Add lint rule
2024-08-23 13:55:18 -07:00
kodebanget b5ea87c981 Update Indonesian translation (#4875)
Co-authored-by: Indonesian <github-actions@github.com>
2024-08-23 13:45:41 -07:00
surfdude29 d646d590cc Update French localization (#4823) 2024-08-23 13:45:22 -07:00
Takayuki KUSANO 1d5e341ada Update Japanese translation (#4824)
* Updated translation

* Update translation

* Update translation

* Update translation

* Only show replies in Following if following all involved actors (#4869)

* Only show replies in Following for followed root and grandparent

* Remove now-unnecessary check

* Simplify condition

* Respect labels on feeds and lists (#4818)

* Prep

* Pass in optional moderation to FeedCard

* Compute moderation decision, filter contentList contexts, pass into card

* Let's go a different route

* Filter from within search queries

* Use same search query for starter packs

* Filter lists from profile tabs

* Cleanup

* Filter from profile feeds

* Moderate post embeds

* Memoize

* Use ScreenHider on lists

* Hide both list types

* Fix crash on iOS in screen hider, fix lineheight

* Memoize renderItem

* Reuse objects to prevent re-renders

* tweak list header (#4870)

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>

* bskyweb: optional basic auth password middleware (#4759)

* Update translation

* Revert "Update translation"

This reverts commit 3a7b74f47b.

* Revert "bskyweb: optional basic auth password middleware (#4759)"

This reverts commit bc3a27d40f.

* Revert "tweak list header (#4870)"

This reverts commit 34e7e5cba2.

* Revert "Respect labels on feeds and lists (#4818)"

This reverts commit 9ec6fde288.

* Revert "Only show replies in Following if following all involved actors (#4869)"

This reverts commit e2cc4bb4af.

* Update translation

* Update translation

* Update translation

* Updated translation

* Update translation

* Update translation

* Unified existing translations of "hidden" and "community".

* Update translation

* Update translation

* Update translation

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: bnewbold <bnewbold@robocracy.org>
2024-08-23 13:45:03 -07:00
Minseo Lee 632f71acc9 Update Korean localization (#4826)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-08-23 13:44:29 -07:00
Ivan Beà 80320f9d7d Update catalan localization (#4851)
* Update catalan localisation

More lines translated, It will be so kind of you to check it @jordimas @darccio @surfdude29

Thanks

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: GSMT <samaritanojr006@gmail.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: GSMT <samaritanojr006@gmail.com>

* Update messages.po

apply @jordimas corrections

* Update messages.po

change traves per través

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: GSMT <samaritanojr006@gmail.com>
2024-08-23 13:44:08 -07:00
Frudrax Cheng 3f98747925 Update Chinese Localization (#4947)
* CN: Update translates

* CN: Remove superseded strings

* TW: Update and Clean

* Both: Update translates

* CN: Update translates

* CN: Remove superseded strings

* CN: Update translates

* CN: Remove superseded strings

* TW: Run intl:extract

* CN: Update translates

* TW: Update and clean

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Both: Run intl:extract

* CN: Update translates

* CN: Update translates

* Both: Run intl:extract

* CN: fix typo

* CN: fix typo#2

* CN: Update translates

* CN: Update translates#2

* TW: Update translates

* Both: Remove superseded strings

* TW: fix typo

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-08-23 13:42:59 -07:00
Hailey fa12bf5d87 Revert "Make settings account buttons a little nicer" (#4987) 2024-08-23 13:28:56 -07:00
Hailey 1f657b3ac5 fix findAll* type in post-thread (#4986) 2024-08-23 13:20:05 -07:00
Eric Bailey 425dd5f27f Optimistic hidden replies (#4977) 2024-08-23 12:35:48 -07:00
Eric Bailey 5ec8761b29 Make settings account buttons a little nicer (#4980)
* Replace account dropdown with Menu

* Replace card row and add interaction state

* Remove testID copy pasta

* Sanitize handle

* Remove hover from row
2024-08-22 20:09:55 -05:00
Eric Bailey 990bf306c5 Use RichText for sp description (#4979)
* Use RichText for sp description

* `isRecord` above

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-08-22 17:37:15 -05:00
dan b8dbb71781 Fix fixed footer experiment (#4969)
* Split minimal shell mode into headerMode and footerMode

For now, we'll always write them in sync. When we read them, we'll use headerMode as source of truth. This will let us keep footerMode independent in a future commit.

* Remove fixed_bottom_bar special cases during calculation

This isn't the right time to determine special behavior. Instead we'll adjust footerMode itself conditionally on the gate.

* Copy-paste setMode into MainScrollProvider

This lets us fork the implementation later just for this case.

* Gate footer adjustment in MainScrollProvider

This is the final piece. Normal calls to setMode() keep setting both header and footer, but MainScrollProvider adjusts the footer conditionally.
2024-08-22 23:27:33 +01:00
Hailey 2ae3ffcf78 have mock server run with development node env (#4976) 2024-08-22 14:51:35 -07:00
dan 27bb383268 Submit fix (#4978)
* Fix submit logic

* Fix type

* Align submit task creation 1:1 with callsites

* blegh. `useThrottledValue`

* make `useThrottledValue`'s time required

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-08-22 22:43:23 +01:00
Hailey df5bf28e61 update usePostThreadQuery to check quote query data (#4975)
* update `usePostThreadQuery` to check quote query data

* search notifs before quotes

* oops
2024-08-22 19:11:51 +01:00
Eric Bailey 92989282ae Fetch it (#4974) 2024-08-22 10:27:34 -07:00
Hailey 9f1c411360 add quoteCount to view creators (#4972) 2024-08-22 10:26:49 -07:00
Hailey 85d70fe3ef tweak rqkey and cache search for useAllListMembersQuery (#4971) 2024-08-22 09:32:49 -07:00
Eric Bailey d5c78b9183 Prep threadgate shadow hack (#4970)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-21 20:16:03 -07:00
Hailey 61f0be705d Change size (#4957) 2024-08-21 19:35:34 -07:00
Eric Bailey 6616a6467e Detached QPs and hidden replies (#4878)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-21 19:20:45 -07:00
Samuel Newman 56ab5e177f Show quote posts (#4865)
* show quote posts

* fix filter

* fix keyExtractor

* move likedby and repostedby to new file structure

* use modern list component

* remove relative imports

* update quotes count after quoting

* call `onPost` after updating quote count

* Revert "update quotes count after quoting"

This reverts commit 1f1887730a.

* implement

* update like count in quotes list

* only add `onPostReply` where needed

* Filter quotes with detached embeds

* Bump SDK

* Don't show error for no results

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-21 15:26:25 -05:00
Eric Bailey ddb0b80017 Fix hidden list for author (#4968) 2024-08-21 13:11:47 -07:00
Eric Bailey 5463e9718f Update joined stat (#4967) 2024-08-21 10:17:23 -07:00
Hailey 723896a45f Add list hidden screen (#4958)
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-20 15:43:40 -07:00
Eric Bailey e54298ec2c Expose more methods, support disabled items (#4954) 2024-08-19 12:21:29 -07:00
Eric Bailey f235be9819 Expose more props from button (#4953) 2024-08-19 13:27:04 -05:00
Eric Bailey 3976d6738b Fix orphaned feed slices, handle blocks (#4944)
* Fix orphaned feed slices, handle blocks

* Revert to filerting out orphan threads

* Support NotFoundPost views too

* Just kidding, use ReplyRef.root as source of grandparent data

* Fixes
2024-08-19 11:20:42 -05:00
Hailey 2939ee7df7 Tweak expo-modules-core hack patch (#4955) 2024-08-18 13:24:41 -07:00
dan 40ab67fc4b [Experiment] Always show bottom bar (#4946) 2024-08-16 20:06:55 +01:00
Hailey a5af24b53b Revert "[Video] Download videos" (#4945) 2024-08-15 16:29:16 -07:00
dan b6e515c664 Move global "Sign out" out of the current account row (#4941)
* Rename logout to logoutEveryAccount

* Add logoutCurrentAccount()

* Make all "Log out" buttons refer to current account

Each of these usages is completely contextual and refers to a specific account.

* Add Sign out of all accounts to Settings

* Move single account Sign Out below as well

* Prompt on account removal

* Add Other Accounts header to reduce ambiguity

* Spacing fix

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-08-15 20:58:13 +01:00
Hailey f3b57dd456 Hack patch for testing OTA update crash behavior (#4942) 2024-08-15 12:03:19 -07:00
Hailey 11061b628e [Video] Download videos (#4886)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-15 11:23:48 -07:00
Samuel Newman b9975697e2 swap control files (#4936)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-14 21:08:17 +01:00
Samuel Newman b6fa0d2d04 [Embed] Starter pack embed embed (#4935)
* update @atproto/api

* add starter pack embed

* update depreciated BskyAgent to AtpAgent

* unrelated, but avoid direct import of type

* nits

* rm commented out code

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-14 21:01:59 +01:00
Samuel Newman 21e214c235 [Video] set audio category to ambient every time a new player is made (#4934)
* set auto category to ambient every time a new player is made

* mute on foregrounding

* remember previous state

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-14 20:21:14 +01:00
Hailey 26d3777ecc Add /live/ to supported YouTube embed URLs (#4932) 2024-08-13 17:35:05 -07:00
Samuel Newman 630ebf523d [Video] Try/catch video play/pause (#4930)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-13 14:00:03 -07:00
dan 57be2ea15b Don't kick to login screen on network error (#4911)
* Don't kick the user on network errors

* Track online status for RQ

* Use health endpoint

* Update test with new behavior

* Only poll while offline

* Handle races between the check and network events

* Reduce the poll kickoff interval

* Don't cache partially fetched pinned feeds

This isn't a new issue but it's more prominent with the offline handling. We're currently silently caching pinned infos that failed to fetch. This avoids showing a big spinner on failure but it also kills all feeds which is very confusing. If the request to get feed gens fails, let's fail the whole query.

Then it can be retried.
2024-08-13 18:51:49 +01:00
dan 7e11b862e9 Remove .withProxy() calls (#4929) 2024-08-13 00:20:39 -07:00
Hailey 1fce7a793d [Video] Audio duck off main thread (#4926) 2024-08-12 20:08:51 -07:00
Hailey 3c04d9bd84 subclass agent to add setPersistSessionHandler (#4928)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-08-12 19:43:06 -07:00
Hailey 99d1a881f2 [Video] Fix crash when switching tabs (#4925) 2024-08-12 16:49:17 -07:00
Hailey 134fcd35d8 [Video] Invert usage of setAudioActive (#4924) 2024-08-12 14:58:41 -07:00
Hailey 7df2327424 Upgrade API, implement XRPC rework (#4857)
Co-authored-by: Matthieu Sieben <matthieu.sieben@gmail.com>
2024-08-12 14:00:15 -07:00
Hailey ae883e2df7 rm from swift (#4923) 2024-08-12 21:46:33 +01:00
Hailey db7a744433 Fix Android composer cursor bug by removing setTimeout from native composer onChangeText (#4922) 2024-08-12 08:14:02 -07:00
Roland Crosby 75c19b2dc2 Show handle in recent searches and fix truncation (#4917)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-11 16:12:36 -07:00
Minseo Lee 88f879ffe9 Improve styles (#4916)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-11 14:30:18 -07:00
surfdude29 6f450b4982 Mark string for localization (#4920) 2024-08-11 12:41:33 -07:00
Shubh Porwal 8367542138 Fix occurred typo (#4919)
Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2024-08-11 12:40:43 -07:00
Hailey 65d6e561d4 [Video] Resume background audio whenever muting video audio (#4915) 2024-08-09 16:52:23 -07:00
Samuel Newman c2131bb039 [Videos] Add error boundary to native (#4914)
* move error fallback to own component

* use error boundary on native

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-10 00:49:11 +01:00
Samuel Newman ab0da7c892 [Videos] handle app backgrounding (#4912)
* play when returning from background

* play when unfullscreening

* play when entering fullscreen, just to be sure

* state -> ref

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 23:35:21 +01:00
Samuel Newman 0a9782ac19 animate controls + fade out time after a while (#4913)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 23:32:28 +01:00
Hailey 5bfe5aa503 [Video] More tweaks to AVAudioSession options (#4910) 2024-08-09 14:35:26 -07:00
Hailey dd0d50a6f0 [Video] Prevent pausing of background audio with expo-video on iOS (#4908)
* audio mixing pref

* lint

* patch expo video to add enter/exit fullscreen events

* rm logs

* fix audio problems

* toggle mute when enter/exiting fullscreen

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 11:25:54 +01:00
Hailey 0f993a09c2 [Video] Add onEnterFullscreen and onExitFullscreen to VideoView (#4907)
* patch expo video to add enter/exit fullscreen events

* rm logs

* Update expo-video+1.2.4.patch.md
2024-08-09 11:05:43 +01:00
Hailey cb574b7be3 [Videos] Add iOS function to set AVAudioSession.CategoryOptions to .mixWithOthers (#4905)
* audio mixing pref

* lint
2024-08-09 11:05:12 +01:00
Samuel Newman a4f0c9c753 [Video] more minor tweaks (#4906)
* update expo-video

* pause when on a different screen

* rm collapsable

* add mute/unmute button

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 03:24:38 +01:00
Samuel Newman 4350dbc853 [Video] Bundle of minor tweaks (#4904)
* fix bg color

* unique video urls for debug

* improve controls slightly

* mute until fullscreen

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 02:33:42 +01:00
dan e782db33dc Show just-posted replies above OP replies (#4901)
* Unify onPostReply handler

* Show just-posted replies above OP replies

* Only do this for the highlighted post or thread mode

It's confusing to have your post displace OP thread or other people's leaf posts.
2024-08-08 19:19:58 +01:00
Hailey c1af767fa6 Remove client filtering of starter packs (#4753) 2024-08-08 10:51:54 -07:00
Eric Bailey a0756c53be Remove show_avi_follow_button (#4900) 2024-08-08 18:14:15 +01:00
Eric Bailey 3ea8eb6013 Remove native_pwi_disabled (#4896)
* Remove native_pwi_disabled

* Remove search button
2024-08-08 18:14:02 +01:00
Samuel Newman e7a0055a85 Fix overflow on posts (#4899)
* overflow posts, via contentHider

* margin->padding for a bit more leeway

* overflow notifications

* overflow on header

* revert from contenthider, put on text in all places

* fix zalgo text in handle in composer

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-08 18:04:40 +01:00
dan ae25cb3391 Move onPressReply into child component (#4898)
* Move ComposePrompt to post-thread/

* Move onPressReply into child component
2024-08-08 17:58:58 +01:00
Eric Bailey 85fe95c988 Remove new_user_progress_guide (#4895) 2024-08-08 11:48:42 -05:00
Eric Bailey e1df2b0b16 Remove explore_page_profile_card_social_proof (#4894) 2024-08-08 11:48:32 -05:00
Eric Bailey f3a9f874d9 Remove ungroup_follow_backs gate (#4893) 2024-08-08 11:48:24 -05:00
dan 4b71950d99 Remove unnecessary state update for reply gate (#4897)
* Move mobile compose prompt to inner component

* Make canReply computed

* Use same clamp we use elsewhere
2024-08-08 17:05:51 +01:00
dan 2174feed44 Include follow-based suggestions in interstitial (#4889) 2024-08-08 15:49:34 +01:00
dan f1031d100b Cleanup flags (#4891)
* Remove launched gates

* Remove disabled gates
2024-08-08 15:25:42 +01:00
Eric Bailey 1e3b2d6f42 ALF suggested follows in profile header (#4828)
* Refactor ProfileHeaderSuggestedFollows

* Load fresh data every time

* Oops, missed a file

* Update ProfileCard.Link usage, tweak copy
2024-08-08 09:19:51 -05:00
Minseo Lee af5262682e Added trans (#4890) 2024-08-08 13:12:23 +01:00
dan a864f69849 Keep interstitial fresh on refresh (#4888) 2024-08-08 06:20:24 +01:00
dan 00fea10782 Include popcluster in suggestion ranking (#4887) 2024-08-08 05:56:22 +01:00
Hailey b3092413dd Add logging of selected feed preference when displaying the following feed (#4789) 2024-08-07 17:13:29 -07:00
Hailey 1b02f81cb8 [Video] Visibility detection view (#4741)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-07 14:45:06 -07:00
Samuel Newman fff2c079c2 [Videos] Video player - PR #2 - better web support (#4732)
* attempt some sort of "usurping" system

* polling-based active video approach

* split into inner component again

* click to steal active video

* disable findAndActivateVideo on native

* new intersectionobserver approach - wip

* fix types

* disable perf optimisation to allow overflow

* make active player indicator subtler, clean up video utils

* partially fix double-playing

* start working on controls

* fullscreen API

* get buttons working somewhat

* rm source from where it shouldn't be

* use video elem as source of truth

* fix keyboard nav + mute state

* new icons, add fullscreen + time + fix play

* unmount when far offscreen + round 2dp

* listen globally to clicks rather than blur event

* move controls to new file

* reduce quality when not active

* add hover state to buttons

* stop propagation of videoplayer click

* move around autoplay effects

* increase background contrast

* add subtitles button

* add stopPropagation to root of video player

* clean up VideoWebControls

* fix chrome

* change quality based on focused state

* use autoLevelCapping instead of nextLevel

* get subtitle track from stream

* always use hlsjs

* rework hls into a ref

* render player earlier, allowing preload

* add error boundary

* clean up component structure and organisation

* rework fullscreen API

* disable fullscreen on iPhone

* don't play when ready on pause

* debounce buffering

* simplify giant list of event listeners

* update pref

* reduce prop drilling

* minimise rerenders in `ActiveViewContext`

* restore prop drilling

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-07 18:47:51 +01:00
Samuel Newman b701e8c68c [Video] Authed video upload (#4885)
* add service auth call

* update API package

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-07 16:56:12 +01:00
Hailey 753a233408 Tweak feed manip to show cases of A -> B without further children (#4883) 2024-08-06 11:21:59 -07:00
dan 5845e08eee Show own replies before follows' replies in threads (#4882) 2024-08-06 17:12:27 +01:00
dan b291a1ed8a Show more replies in Following (different heuristic) (#4880) 2024-08-06 16:42:42 +01:00
dan 686d5ebb53 [Persisted] Make broadcast subscriptions granular by key (#4874)
* Add fast path for guaranteed noop updates

* Change persisted.onUpdate() API to take a key

* Implement granular broadcast listeners
2024-08-06 01:30:52 +01:00
dan 966f6c511f [Persisted] Fix the race condition causing clobbered writes between tabs (#4873)
* Broadcast the update in the same tick

The motivation for the original code is unclear. I was not able to reproduce the described behavior and have not seen it mentioned on the web. I'll assume that this was a misunderstanding.

* Remove defensive programming

The only places in this code that we can expect to throw are schema.parse(), JSON.parse(), JSON.stringify(), and localStorage.getItem/setItem/removeItem. Let's push try/catch'es where we expect them to be necessary.

* Don't write or clobber defaults

Writing defaults to local storage is unnecessary. We would write them as a part of next update anyway. So I'm removing that to reduce the number of moving pieces.

However, we do need to be wary of _state being set to defaults. Because _state gets mutated on write. We don't want to mutate the defaults object. To avoid having to think about this, let's copy on write. We don't write to this object very often.

* Refactor: extract tryParse

* Refactor: move string parsing into tryParse

* Extract tryStringify, split logging by platform

Shared data parsing/stringification errors are always logged. Storage errors are only logged on native because we trust the web APIs to work.

* Add a layer of caching to readFromStorage to web

We're going to be doing a read on every write so let's add a fast path that avoids parsing and validating.

* Fix the race condition causing clobbered writes between tabs
2024-08-06 01:03:27 +01:00
dan 5bf7f3769d [Persisted] Fork web and native, make it synchronous on the web (#4872)
* Delete logic for legacy storage

* Delete superfluous tests

At this point these tests aren't testing anything useful, let's just get rid of them.

* Inline store.ts methods into persisted/index.ts

* Fork persisted/index.ts into index.web.ts

* Remove non-essential code and comments from both forks

* Remove async/await from web fork of persisted/index.ts

* Remove unused return

* Enforce that forked types match
2024-08-06 00:30:58 +01:00
dan 74b0318d89 Show replies in context of their threads (#4871)
* Don't reconstruct threads from separate posts

* Remove post-level dedupe for now

* Change repost dedupe condition to look just at length

* Delete unused isThread

* Delete another isThread field

It is now meaningless because there's nothing special about author threads.

* Narrow down slice item shape so it does not need reply

* Consolidate slice validation criteria in one place

* Show replies in context

* Make fallback marker work

* Remove misleading and now-unused property

It was called rootUri but it was actually the leaf URI. Regardless, it's not used anymore.

* Add by-thread dedupe to non-author feeds

* Add post-level dedupe

* Always count from the start

This is easier to think about.

* Only tuner state need to be untouched on dry run

* Account for threads in reply filtering

* Remove repost deduping

This is already being taken care of by item-level deduping. It's also now wrong and removing too much (since it wasn't filtering for reposts directly).

* Calculate rootUri correctly

* Apply Following settings to all lists

* Don't dedupe intentional reposts by thread

* Show reply parent when ambiguous

* Explicitly remove orphaned replies from following/lists

* Fix thread dedupe to work across pages

* Mark grandparent-blocked as orphaned

* Guard tuner state change by dryRun

* Remove dead code

* Don't dedupe feedgen threads

* Revert "Apply Following settings to all lists"

This reverts commit aff86be6d37b60cc5d0ac38f22c31a4808342cf4.

Let's not do this yet and have a bit more discussion. This is a chunky change already.

* Reason belongs to a slice, not item

* Logically feedContext belongs to the slice

* Update comment to reflect latest behavior
2024-08-05 20:51:41 +01:00
Hailey 18b423396b Add PlatformInfo module (#4877) 2024-08-05 12:21:34 -07:00
bnewbold fb278384c6 bskyweb: optional basic auth password middleware (#4759) 2024-08-02 15:57:50 -07:00
Samuel Newman 6298e6897f tweak list header (#4870)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-03 00:33:45 +02:00
Eric Bailey c3d8beee6d Respect labels on feeds and lists (#4818)
* Prep

* Pass in optional moderation to FeedCard

* Compute moderation decision, filter contentList contexts, pass into card

* Let's go a different route

* Filter from within search queries

* Use same search query for starter packs

* Filter lists from profile tabs

* Cleanup

* Filter from profile feeds

* Moderate post embeds

* Memoize

* Use ScreenHider on lists

* Hide both list types

* Fix crash on iOS in screen hider, fix lineheight

* Memoize renderItem

* Reuse objects to prevent re-renders
2024-08-02 13:05:33 -05:00
dan 293ac6fab2 Only show replies in Following if following all involved actors (#4869)
* Only show replies in Following for followed root and grandparent

* Remove now-unnecessary check

* Simplify condition
2024-08-02 17:13:31 +01:00
dan 7f292abf51 Always limit Following replies to the people you follow (#4868)
* Limit feed replies to people you follow

* Remove dead code
2024-08-01 22:05:40 +01:00
Hailey f056cb646e Fix missing header on Likes/Reposted By, add missing perf optimizations (#4867)
* fix liked by list

* fix lists

* tweaks to style

* change string
2024-08-01 10:32:36 -07:00
Samuel Newman c78e9e3147 Move theme controls to its own screen (#4866) 2024-08-01 19:14:32 +02:00
dan 388c157c36 Display second-to-last rather than second post in a slice (#4864) 2024-08-01 17:49:43 +01:00
Eric Bailey b0e130a4d8 Update muted words dialog with expiresAt and actorTarget (#4801)
* WIP not working dropdown

* Update MutedWords dialog

* Add i18n formatDistance

* Comments

* Handle text wrapping

* Update label copy

Co-authored-by: Hailey <me@haileyok.com>

* Fix alignment

* Improve translation output

* Revert toggle changes

* Better types for useFormatDistance

* Tweaks

* Integrate new sdk version into TagMenu

* Use ampersand

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Bump SDK

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-08-01 10:29:27 -05:00
dan d2e88cc623 Fetch enough pages to fill a page's worth of items (#4863)
* Fetch enough pages to fill a page's worth of items

* Add failsafe in case of appview bug
2024-08-01 02:27:25 +01:00
Hailey 70ffd387e3 Only show "followed you back" when appropriate (#4849)
* only show followed back when we should

* try/catch

* log

* Update FeedItem.tsx

* tweak
2024-07-31 11:16:14 -07:00
dan 576cef88b5 [Web] Retrigger onEndReached if needed when content height changes (#4859)
* Extract EdgeVisibility

* Key Visibility by container height instead of item count
2024-07-31 19:10:24 +01:00
dan c75bb65bef Remove unused NoopFeedTuner (#4856) 2024-07-31 13:00:22 +01:00
GSMT c3e77b56ff useDedupe callback (#4855) 2024-07-30 15:19:23 -07:00
Hailey 8ddb28d3c5 [Video] Uploads (#4754)
* state for video uploads

* get upload working

* add a debug log

* add post progress

* progress

* fetch data

* add some progress info, web uploads

* post on finished uploading (wip)

* add a note

* add some todos

* clear video

* merge some stuff

* convert to `createUploadTask`

* patch expo modules core

* working native upload progress

* platform fork

* upload progress for web

* cleanup

* cleanup

* more tweaks

* simplify

* fix type errors

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-30 08:25:31 -07:00
Eric Bailey 43ba0f21f6 Make label required in link components (#4844) 2024-07-25 18:34:21 -05:00
Dmitrii Kartashev 4437b9a557 Boolean filter improvement alternative: TS upgrade (#4840)
* upgrade typescript and use new feature

* fix: typing error
2024-07-26 00:31:59 +01:00
Eric Bailey 50769b0b6f Add label to profile card (#4843) 2024-07-25 18:11:31 -05:00
Eric Bailey 043e5cea64 Improve a11y on noty feed (#4842) 2024-07-25 18:11:16 -05:00
Eric Bailey 35165e3d9b Add labels in feed card (#4836) 2024-07-25 18:07:42 -05:00
Eric Bailey 1d827cebe4 Add labels to mod details dialog (#4839) 2024-07-25 18:07:23 -05:00
Eric Bailey 783fd351ba Add labels to a few missing places (#4838) 2024-07-25 18:07:15 -05:00
Eric Bailey e7b485f185 Add labels in list card (#4837) 2024-07-25 18:07:07 -05:00
dan ac1538baad Refactor feed slices (#4834)
* Copy FeedViewPost into FeedSliceItem

* Explicitly construct feed slice items by copying known fields

* Type rootItem as FeedViewPost for now

Mergefeed logic relies on that.

* Unify reason and __source for slice items

* Move feedContext out of FeedSliceItem

* Remove slice.isFlattenedReply

* Remove unnused slice.ts

* Inline slice.isFullThread

* Refactor condition for clarity

* Extract slice.includesThreadRoot

* Encapsulate more usages of slice.rootItem into slice

* Rename slice.rootItem so semi-private slice._feedPost

* Move reason into slice

* Simplify slice ctor argument

* Reorder getters to reduce diff

* Make feedContext a getter to reduce diff
2024-07-25 23:02:37 +01:00
Hailey 3914025227 true (#4833) 2024-07-25 21:26:37 +01:00
Samuel Newman 401e92ed42 Replace import hairlineWidth = with const (#4831)
* replace import with const

* just use `StyleSheet.hairlineWidth`

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-25 20:45:15 +01:00
Samuel Newman 00240b95b9 [Videos] Video player - PR #1 - basic player (#4731)
* add ffmpeg-kit-react-native

* get select video button + compression working

* up res to 1080p

* add progress component

* move logic out of compressVideo

* (WIP) add lonestar compression

* rework web compression a bit

* mess around with adding a thumbnail

* 3mbps

* replace

* use 3mbps

* add expo-video

* remove unnecessary try/catch

* rm ToastAndroid

* fix web

* wrap lazy component in suspense

* gate video select button

* rm web compression

* flip sign

* remove expo-video from web

* review nits

* add video picker permissions + rm temp buttons

* add ffmpeg-kit-react-native

* replace

* hls-capable player

* start trying to hoist up video player instance

* hoist video player and move things around

* always show native controls

* fix controls on expo video android

* gate temp video player in feed

* rm IS_DEV, doesn't do what I thought it did

* use __DEV__ instead

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-25 20:41:50 +01:00
Hailey 4ec999cab7 Bump 1.90 (#4832) 2024-07-25 20:41:32 +01:00
dan 4291711f1d Fix sloppy filter(Boolean) types (#4830)
* Fix sloppy filter(Boolean) in threadgate

* Fix sloppy filter(Boolean) in Explore

* Fix sloppy filter(Boolean) in post-feed

* Harden FeedPostSliceItem.reason type def

* Harden parentAuthor types

* Fix lying component types, handle blocks
2024-07-25 19:53:12 +01:00
Eric Bailey fac1af43b0 Fuggedaboudit (#4829) 2024-07-25 13:16:21 -05:00
Paul Frazee a03622dd55 Release 1.89 prep (#4822)
* Fix curate-lists tests

* Run intl extract
2024-07-24 15:23:31 -07:00
surfdude29 2e7398b7c3 Update German localization (part 1) (#4742)
* Update German localization

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* update string after #4743 merged

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* Starterpaket –––> Startpaket

* Improve existing translations (#17)

* Improve existing translations

* Update more

* Update more

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* capitalise toast

---------

Co-authored-by: cdfzo <cdfzo@pm.me>
2024-07-24 14:41:43 -07:00
Takayuki KUSANO 8588a2ad51 Updated Japanese Translation (#4748)
* Updated translation

* Update translation

* Update translation
2024-07-24 14:41:05 -07:00
Kuwa Lee 7a0aa661a7 Update Chinese Localization (#4774)
* TW: Update

* TW: Clean

* TW: Update

* CN: Update translates

* Both: Remove superseded strings

* Both: Remove superseded strings#2

* TW: Update and clean

* TW: Update

* CN: Update translates

* TW: Improve

* Update messages.po

* CN: Update translates

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-07-24 14:40:32 -07:00
surfdude29 86ac3d687c Update French localization (#4781)
* Update French localization

* Apply suggestion from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-07-24 14:39:38 -07:00
Hailey 11f2415942 make some settings screens scrollable for accessibility (#4819)
* make settings scrollable for accessibility

* nit
2024-07-24 14:39:01 -07:00
Hailey bfb7f6efef make toast shorter (#4821) 2024-07-24 14:23:37 -07:00
Samuel Newman efde018b13 special invalidation logic (#4820)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-24 21:44:41 +01:00
Samuel Newman 8fe5ddfa49 Modernise thread/following feed settings screen (#4797)
* fix web

* show back button on tablet for certain settings screens

* move headers to inside of scrollview

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-24 20:40:06 +01:00
Samuel Newman cfb8a3160e Priority notifications (#4798)
* new settings screen

* bring back the spinner

* add experimental language

* fix typo, change leading

* integrate priority notifications API

* update package

* use refetch instead of invalidateQueries

* fix read-after-write issue by polling for update

* add spinner for initial load

* rm onmutate, it's overcomplicated

* set error state eagerly

* Change language in description

Co-authored-by: Hailey <me@haileyok.com>

* prettier

* add `Toggle.Platform`

* extract out mutation hook + error state

* rm useless cache mutation

* disambiguate isError and isPending

* rm unused isError

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-24 20:09:20 +01:00
dan 9bd8393685 Use consistent index for reading last item (#4817) 2024-07-24 02:32:05 +01:00
Paul Frazee 4af6bcb11a Hack-modify avi path to use smaller thumbs behind gate (#4816)
* Hack-modify avi path to use smaller thumbs behind gate

* Only use small thumbs on smaller rendering
2024-07-23 16:57:51 -07:00
Samuel Newman 67ce18a113 swap flex-start/end (#4815)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 23:03:20 +01:00
Samuel Newman 3755807b5e Fix switch style and animate (#4814)
* set height to 20+(2*hairline)

* animate switch

* Try to align on line height across platforms

* Use border 1px

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-23 22:49:37 +01:00
Samuel Newman abb709d209 Native toast rework (#4808)
* rework toast to use reanimated

* fix animation on iOS

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 19:50:47 +01:00
Samuel Newman 27d712290a Use appropriate icons for toasts (#4803)
* use appropriate icons for toasts

* use info for session expiry

* tweak size

* message -> safeMessage

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 15:01:04 +01:00
Hailey 59bafb426f dont filter exact matches from typeahead (#4802) 2024-07-19 15:25:09 -07:00
Eric Bailey 3627a249ff Remove invalid labelers when subscribing/unsubscribing (#4771)
* Remove invalid labelers when subscribing/unsubscribing

* Let the async lock cook

* Use link to associate, leave copy as is
2024-07-12 14:55:34 -05:00
Eric Bailey 7c1c24ef1b Replace incongruous buttons in drawer (#4772)
* Replace incongruous buttons in drawer

* Improve a11y help
2024-07-12 12:12:57 -05:00
Eric Bailey f85df425f7 Invert saturation scale as well (#4783) 2024-07-12 10:58:12 -05:00
Hailey 306f162639 Make all referrer info sync (#4782) 2024-07-12 07:37:43 -07:00
Hailey f021c06468 Return a promise for getReferrerInfoAsync on web (#4777) 2024-07-11 19:51:54 -07:00
Michał Gołda cd9bba4b69 Fix: emoji picker closes when hitting spacebar (#4422) (#4441)
Co-authored-by: Hailey <me@haileyok.com>
2024-07-11 19:42:41 -07:00
Minseo Lee a71134f467 Reposted by you and Reply to you (#4478)
Co-authored-by: Hailey <me@haileyok.com>
2024-07-11 19:42:27 -07:00
Hailey 8b121af2e4 referrers for all platforms (#4514) 2024-07-11 18:43:10 -07:00
Hailey 83e8522e0a Create shared preferences API (#4654) 2024-07-11 18:37:43 -07:00
Hailey 2397104ad6 Lint native files (#4768) 2024-07-11 18:15:35 -07:00
Hailey b433469ab9 bump 1.89.0 (#4776) 2024-07-12 02:14:47 +01:00
Eric Bailey 119b4d3e0a Fix search hashtags by author (#4773) 2024-07-11 23:35:13 +01:00
Eric Bailey 74186950b2 [ALF] Theme & palette cleanup (#4769)
* Invert primary scale

* Invert negative palette

* Replace theme specific styles in Toggle

* Remove theme specific colors from Button, improves secondary solid on dark mode

* TextField

* Remove from MessageItem

* Threadgate editor

* IconCircle

* Muted words

* Generate themes from hues

* Cleanup

* Deprecate more values, fix circular import

* Invert positive too, hardly use

* Button tweaks, some theme diffs

* Match disabled state for negative button

* Fix unread noty bg
2024-07-11 16:59:12 -05:00
Eric Bailey ea0586cd67 Filter yourself out of follows interstitial (#4770) 2024-07-11 21:20:22 +01:00
Hailey 15a00b1864 ALF post button (#4767) 2024-07-10 14:48:34 -07:00
Hailey 65b5d31b58 Fix alt text for GIFs (#4766)
* fix alt text dialog for gifs

* only apply to native
2024-07-10 20:25:44 +01:00
dan fa64d9393b [Session] Include stack with the debug event (#4763) 2024-07-10 00:51:12 +01:00
dan 9b9e09d002 [Session] Experiment: Don't use withProxy (#4762)
* Reorder statements

* Remove withProxy() usage behind a gate
2024-07-10 00:12:26 +01:00
dan ce0bf867ff Rename session event, scope to errors (#4761) 2024-07-09 23:03:59 +01:00
dan 7a47656816 Log session events unconditionally (#4758) 2024-07-09 21:13:32 +01:00
Samuel Newman 2d0eefebc3 Add social proof to suggested follows (#4602)
* replace unused `followers` prop with social proof

* Introduce 'minimal' version

* Gate social proof one explore page, fix space if no desc

* Use smaller avis for minimal

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-09 11:10:50 -05:00
A Malik. Muhd 4360087ced Update README.md (#4394) 2024-07-08 19:02:26 -07:00
Hailey ca0a327052 tweak top padding external (#4755) 2024-07-09 02:16:34 +01:00
Hailey a3c43a7471 change contentVisibility to contain (#4752) 2024-07-08 15:16:43 -07:00
Hailey f8a59e10dd Fix RTL text rendering for display names (#4747)
* header display name rtl support

* highlighted post rtl

* move `NON_BREAKING_SPACE` to an external constant

* rtl support in search dropdown

* profile card rtl

* old profile card rtl

* hover card

* wizard list card

* new chat

* account card

* chat header

* clean up notifications

* just force LTR on meta display name
2024-07-08 18:06:00 +01:00
Hailey d5503d17de Reduce the size of the inner logo in the QR code (#4746)
* use a scale of `1` on QR code inner logo

* remove logo entirely

* Revert "remove logo entirely"

This reverts commit dee57f48c7.

* use scale of 0.95
2024-07-08 16:57:40 +01:00
Joel ea7afecf28 Fix misplaced '@' in RTL post meta. (#4531)
Co-authored-by: Joel <joel.garplind+github@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-07 15:27:30 -07:00
Josh ea37298cdd Remove broken and void back button (#4744) 2024-07-07 13:10:26 -07:00
Hailey a6b3c97df0 Ensure /start navigates to /starter-pack when clicking a link internally (#4745)
* remove temporary metadata removal

* ensure proper navigation
2024-07-07 13:07:28 +01:00
surfdude29 6b5e3181fb Add missing to in StarterPackScreen.tsx string (#4743) 2024-07-06 16:39:04 -07:00
Samuel Newman 8f06ba70bb Video compression in composer (#4638)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-05 17:50:03 -07:00
Hailey 56b688744e fix slop (#4739) 2024-07-05 22:44:06 +01:00
Paul Frazee 09bc4e95d8 Update stats 2024-07-05 12:37:06 -07:00
Paul Frazee 149446a26e Run intl:extract 2024-07-05 12:33:48 -07:00
Takayuki KUSANO 8c52d74925 Update Japanese translation (#4665)
* Update Japanese translation

* Updated Japanese translation

* Update translation

* Updated translation

* Update translation

* Update translation

* Update translation.

* Updated translation
2024-07-05 12:32:31 -07:00
Minseo Lee f45193783e Update Korean localization (#4646)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-07-05 12:32:02 -07:00
Kuwa Lee adcd066733 Update Chinese Localization (#4695)
* CN: Update translates

* CN: Remove superseded strings

* CN: Update translates

* CN: Run intl:extract

* CN: Remove superseded strings

* CN: Optimize translation of starter pack

* CN: Run intl:extract

* CN: Remove superseded strings

* CN: Update translates

* CN: fix typo

* CN: Optimize Translations

* CN: hot fix

* TW: Update

* TW: Update and clean

* CN: hot fix

* BOTH: commit as LF

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Apply suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

* CN: Update translates

* CN: Update translates

* TW: Update and clean

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-07-05 12:28:50 -07:00
Ivan Beà b10a2b9a8e Update catalan (#4702)
* Update catalan

New lines added, new lines localized.

Check it please @jordimas @darccio @surfdude29

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update messages.po

Apply  @surfdude29 corrections

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-07-05 12:28:29 -07:00
kodebanget 75da5f4965 Update Indonesian translation (#4706)
Co-authored-by: Indonesian <github-actions@github.com>
2024-07-05 12:28:03 -07:00
Paul Frazee baa788de38 Tweak checkmark size 2024-07-05 12:26:58 -07:00
dan 09dfc9edf8 Show feedback for Follow button in interstitials (#4738)
* Fix Follow in interstitials

* Show feedback in toast
2024-07-05 20:17:47 +01:00
surfdude29 d5fd19df8f Update French localization (#4662)
* Update French localization

* écriture inclusive for other usage of `amis`

* add one more string

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Update revision date

* translate new strings

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-07-05 10:31:12 -07:00
Samuel Newman 58e48fd31b Feed interstitial snapping (#4737)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-05 18:01:13 +01:00
Eric Bailey 3407206f52 [D1X] Use user action and viewing history to inform suggested follows (#4727)
* Use user action and viewing history to inform suggested follows

* Remove dynamic spreads

* Track more info about seen posts

* Add ranking

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 22:28:38 +01:00
dan 1c6bfc02fb Fix order of checks in experiment (#4734) 2024-07-04 21:15:47 +01:00
dan d03dd8c815 Feed interstitial tweaks (#4733)
* Swap interstitial positions

* Fix color
2024-07-04 20:54:49 +01:00
Hailey ca7386967a Fix onEndReached not firing sometimes on web (#4728)
* handle off screen visibility observer.

* Revert "handle off screen visibility observer."

This reverts commit e499ea0ed6.

* key ftw

* Remove special case

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 20:12:15 +01:00
Paul Frazee d837f96478 Fix responsiveness of dismissing the progress guide (#4729) 2024-07-04 20:08:33 +01:00
dan 12bf796293 Fix feed feedback (#4730) 2024-07-04 20:07:42 +01:00
Eric Bailey 4f02da96c8 [D1X] Pull out follow-backs for higher signal (#4719)
* Pull out follow-backs for higher signal

* Gate it

* Fix early gate check

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 04:13:47 +01:00
Paul Frazee 0ed99b840d New user progress guides (#4716)
* Add the animated checkmark svg

* Add progress guide list and task components

* Add ProgressGuide Toast component

* Implement progress-guide controller

* Add 7 follows to the progress guide

* Wire up action captures

* Wire up progress-guide persistence

* Trigger progress guide on account creation

* Clear the progress guide from storage on complete

* Add progress guide interstitial, put behind gate

* Fix: read progress guide state from prefs

* Some defensive type checks

* Create separate toast for completion

* List tweaks

* Only show on Discover

* Spacing and progress tweaks

* Completely hide when complete

* Capture the progress guide in local state, and only render toasts while guide is active

* Fix: ensure persisted hydrates into local state

* Gate

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 03:05:19 +01:00
Hailey aa7117edb6 Add starter pack embeds to posts (#4699)
* starter pack embeds

* revert test code

* Types

* add `BaseLink`

* precache on click

* rm log

* add a comment

* loading state

* top margin

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 02:15:08 +01:00
Paul Frazee a3d4fb652b Guided tour for new users (#4690)
* Add home guided tour (WIP)

* Add web handling of the tour

* Switch to our fork of rn-tourguide

* Bump guided-tour

* Fix alignment on android

* Implement home page tour trigger after account creation

* Add new_user_guided_tour gate

* Add a title line to the tour tooltips

* A11y improvements: proper labels, focus capture, scroll capture

* Silence type error

* Native a11y

* Use FocusScope

* Switch to useWebBodyScrollLock()

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-02 21:25:19 -07:00
Hailey 6694a33603 Don't follow self, blocks or mute when following all; don't show blocks in list (#4715)
* don't follow self when following all

* also filter blocks

* add more filtering to follow all

* extract logic to functions
2024-07-03 03:50:04 +01:00
Samuel Newman dc3c81c4e2 change maxWidth -> width to fix GIFs in DMs (#4717)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-03 03:48:55 +01:00
Eric Bailey 04cfd06639 [D1X] Integrate interstitials (#4698)
* Use discriminated union

* Integrate interstitials

* Add gates and handling for variants

* Only show interstitials for logged in accounts since flags are based on user ID

* Nit

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-03 03:43:54 +01:00
Eric Bailey 0598fc2faa [D1X] Add interstitials, component tweaks, placeholders (#4697)
* Add interstitials, component tweaks, placeholders

* Tweak feed card styles

* Port over same fix to ProfileCard

* Add browse more link on desktop

* Rm Gemfile

* Update logContext

* Update logContext

* Add click metric to cards

* Pass through props to ProfileCard.Link

* 2-up grid for profile cards on desktop web

* Add secondary_inverted button color

* Use inverted button color

* Adjust follow button layout

* Update skeleton

* Use round button

* Translate
2024-07-03 03:34:18 +01:00
Takayuki KUSANO 6af78de9ee Make tab names translatable (#4724) 2024-07-03 02:21:33 +01:00
Eric Bailey cacc4c5068 Remove search from disabled PWI state (#4723) 2024-07-03 01:15:04 +01:00
Eric Bailey 14c2d75d49 Unify label pills (#4676)
* New label pills

* Fix type errors, add default case

* Remove negative margin, only works in some places

* Fix alignment edge case

* Add a bit of padding

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-03 00:15:20 +01:00
Eric Bailey c133661768 Add music interest (#4722) 2024-07-02 17:11:28 -05:00
Paul Frazee 63bb8fda2d Improve textinput performance in login and account creation (#4673)
* Change login form to use uncontrolled inputs

* Debounce state updates in account creation to reduce flicker

* Refactor state-control of account creation forms to fix perf without relying on debounces

* Remove canNext and enforce is13

* Re-add live validation to signup form (#4720)

* Update validation in real time

* Disable on invalid

* Clear server error on typing

* Remove unnecessary clearing of error

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-02 22:43:34 +01:00
Eric Bailey 4bb4452f08 [D1X] Minimum interest experiment (#4653)
* Change up copy

* Add min # prompt

* Improve style

* Add gate

* Tweak padding

* Translate

* Revert string change

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-07-02 20:19:03 +01:00
Hailey 0012c6d40f Add events to signup for captcha results (#4712) 2024-07-01 15:11:04 -07:00
dan a9fe87b842 Add dismiss backdrop to native dropdowns (#4711) 2024-07-01 18:45:15 +01:00
Eric Bailey 1a037d3542 FeedCard & ListCard cleanups (#4644)
* Extract ListCard from FeedCard

* Export FeedCard.Action and optionally include in ListCard

* Remove list dual usage from most of FeedCard

* Update usages of FeedCard and ListCard

* Add back list purpose logic

* Make Action comp easier to use, clarify list purpose

* Rename Action to SaveButton
2024-06-28 08:27:54 -05:00
Hailey 58a97db5b8 Revert animation change in signup (#4693) 2024-06-27 22:01:02 -07:00
Hailey 8ebf9cc4b1 Handle pushing to starterpack screen when unauthed (#4692) 2024-06-27 21:44:26 -07:00
Hailey 91c4aa7c2d Handle pressing all go.bsky.app links in-app w/ resolution (#4680) 2024-06-27 19:35:20 -07:00
Hailey 030c8e268e Bump 1.88.0 (#4688) 2024-06-27 16:25:21 -07:00
Hailey d5ca95233e offer a json response for grabbing short links (#4671) 2024-06-27 11:31:24 -07:00
Eric Bailey fff3ae8f35 Refactor ProfileCard to be composable (#4622)
* Break up new profile card for easier re-use

* Break things up a bit more

* Add round variant support and other button props

* Handle blocks

* Add Outer export

* Tweak space
2024-06-27 13:27:37 -05:00
dan d26928a5d8 Remove reposts from the Replies tab (#4669) 2024-06-27 18:39:36 +01:00
dan 58102377fd Fix pasting images on web (#4670) 2024-06-27 18:36:06 +01:00
devin ivy 49396451ec bskyogcard: support emoji, more languages, long starter pack names (#4668) 2024-06-27 13:02:29 -04:00
Paul Frazee f6b138f709 Run intl extract 2024-06-26 19:03:52 -07:00
Hailey 0ab6d54093 Add some events to landing screen (#4664) 2024-06-26 19:00:35 -07:00
Hailey 5641a4393c update follows when pressing follow all (#4663) 2024-06-26 18:57:57 -07:00
Hailey 878b0476dd Better starterpack embed (#4659) 2024-06-26 17:24:33 -07:00
dan da4dfeb9cf [Starter Packs] Posts tab (#4660)
* [Starter Packs] Posts tab

* oops
2024-06-27 01:07:56 +01:00
Paul Frazee 3b0a177544 Run intl extract 2024-06-26 16:09:04 -07:00
Eric Bailey 368cd7bb0e [D1X] Onboarding interest display names (#4657)
* Translate interest names in onboarding

* Add comment

* Do it the normal way
2024-06-26 16:35:42 -05:00
surfdude29 c4dce4ce45 Mark two starter pack strings for localization (#4655) 2024-06-26 19:20:52 +01:00
dan 3f20e2e3cf Refactor nested conditions in the starter pack wizard (#4652)
* Refactor condition nesting by screen

* Inline indexes

* More explicit conditions
2024-06-26 16:08:57 +01:00
Takayuki KUSANO 83745c923f Fix footer messages in starter pack wizard (#4650)
* Fix footer messages in StarterPack wizard and updates ja messages

* Updates to minimize diff

* Revert "Updates to minimize diff"

This reverts commit 4d1dfe131a.

* Revert "Fix footer messages in StarterPack wizard and updates ja messages"

This reverts commit 9a90898abc.

* Fix labels for plurals in starter packs

* Update translations

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-26 15:41:14 +01:00
Samuel Newman 8621ecd38a disable enabling adult content on iOS (#4651) 2024-06-26 07:28:31 -07:00
Hailey b23f112689 Remove starterpack gate (#4645) 2024-06-25 17:02:43 -07:00
Eric Bailey dd2e173514 Add back pin action for feed cards (#4643) 2024-06-25 23:43:41 +01:00
Hailey 7c5ff79c8e workflow_dispatch link (#4642) 2024-06-25 11:31:02 -07:00
Hailey b75341314c tweak app clip AASA (#4641) 2024-06-25 10:34:17 -07:00
Minseo Lee 58a9dceb33 Update Korean localization (#4614)
* Update messages.po

* Update messages.po
2024-06-25 10:11:32 -07:00
Takayuki KUSANO b6a38e7d64 Updated Japanese translation (#4591)
* Updated Japanese translation

* Updated

* Updated Japanese translation

* Fix some translations

* Updated translation (see #4607)

* Update translation

* Fixed some translations

* Update messages.po

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-25 10:10:56 -07:00
surfdude29 4d9657c819 Update French localization (#4637)
* Update French localization

* fix apostrophe

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* update revision date

* quick fix after #4636 merged

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-25 10:08:40 -07:00
Hailey d11b552710 ensure we get navigated away to starter pack when signed in (#4640)
* ensure we get navigated away to starter pack when signed in

* clean
2024-06-25 09:36:54 -07:00
Hailey e5b9f130a9 Only add the URI to the record (#4639) 2024-06-25 09:24:05 -07:00
surfdude29 fc2fba0981 Fix typo in ThreadgateEditor.tsx (#4636) 2024-06-25 11:32:30 +01:00
Hailey 12faa005af bump (#4634) 2024-06-24 21:01:56 -07:00
bnewbold 363d18a40e CI: bump some more golang versions to v1.22 (#4635) 2024-06-24 19:10:29 -07:00
devin ivy efbc6d4f1b go version for embedr (#4632) 2024-06-24 21:56:32 -04:00
devin ivy 682f31ec9d Add og meta tags to starter pack detail (#4585)
* add og meta tags to starter pack detail

* tidy

* bskyweb: add starter pack title to og meta

* bskyweb build

* go version to 1.22

* tidy
2024-06-24 21:06:53 -04:00
Eric Bailey 6cda641250 Disable facets in FeedCard.Description component (#4620) 2024-06-24 18:05:06 -07:00
surfdude29 615c0c851e Update French localization (#4611)
* Update French localization

* minor fix

* `pack de démarrage` --> `kit de démarrage`

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Apply suggestions from @Signez code review

* Update messages.po

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-24 17:53:47 -07:00
Hailey 2ed133cb63 Maintain portrait in app clip (#4630) 2024-06-24 17:47:20 -07:00
Hailey f94edc3f44 tweak wording for own badge (#4631) 2024-06-24 17:41:40 -07:00
Hailey dd5198f317 explicitly filter out labelers (#4629) 2024-06-24 17:07:29 -07:00
Eric Bailey 340c2c5eaf Resolve facets in feed description on feed lander (#4628) 2024-06-24 19:06:04 -05:00
Eric Bailey 795fe7455b Clicky newsky androidy (#4627)
* Clicky newsky androidy

* tweak

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-24 18:55:29 -05:00
Paul Frazee dc9e51dca1 Add borders around starter pack landing page when tablet or deskto (#4626) 2024-06-24 16:31:07 -07:00
Ivan Beà 59fa7c0c0d Update catalan messages.po (#4388)
* Update catalan messages.po

Keeping it at 100%

Check it please @jordimas @darccio @surfdude29

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update messages.po

apply @jordimas correction

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-24 16:28:03 -07:00
Eric Bailey d79891a858 Disable clicks on profile cards on starter pack lander (#4621) 2024-06-24 16:10:18 -07:00
Hailey 51fca95669 add rich text facets to description (#4619) 2024-06-24 16:04:34 -07:00
Paul Frazee ed940c637e Set up the global 'joined this week' (#4625) 2024-06-24 16:03:32 -07:00
Hailey 9e89ddeb1c Wait for preferences before showing suggested feeds (#4618) 2024-06-24 15:48:10 -07:00
Hailey bce3338a02 use .push instead of .concat (#4624) 2024-06-24 15:43:52 -07:00
Eric Bailey ffb67397e7 Newskie dialog tweaks (#4623) 2024-06-24 15:34:12 -07:00
Samuel Newman 29aaf09a8b Composer - replace threadgate modal with alf dialog (#4329)
* replace threadgate modal with alf dialog

* add accessibility to selectable

* add aria

* hide spinner once fetched

* add `hasOpenDialogs` value to context

* remove state

* Rm loading state

* Update the threadgate dialog button theming

* Factor out the threadgate editor and add editing to post views

* Mark messages for localization

* Use colors from mute dialog

* Remove unnecessary effect

* Reset state on dialog dismiss

* Clearer CTA

* Fix bugs

* Scope keyboard fix

* Rm getAreDialogsActive (no longer needed)

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-24 23:15:11 +01:00
Hailey e0ac7d5bdc handle each possible loading state (#4617) 2024-06-24 21:37:08 +01:00
dan f64245c1fb Fix crash in Feeds and Starter Packs (#4616)
* Remove useless check

* Fix the bug by only adding resolved feeds/lists

* Clarify the purpose of the count field
2024-06-24 21:34:42 +01:00
Hailey 873d91d466 use granular permission of for media perm request (#4609) 2024-06-24 11:14:40 -07:00
Hailey 77a512ae32 Couple of starter packs tweaks (#4604) 2024-06-24 10:24:39 -07:00
Paul Frazee f769564edf Remove the 'Who can reply' element except when viewing root, and add "edit" (#4615)
* Remove the 'Who can reply' element except when viewing root, and add the edit text to authors

* Switch to icon
2024-06-24 10:11:43 -07:00
Takayuki KUSANO 0a0c738790 Modified to use "measure word" in "# others" (#4607) 2024-06-23 01:16:20 -07:00
Paul Frazee de1b7f7045 Merge branch 'KuwaLee-zh' into main
Update Chinese Localization (merge #4535)
2024-06-22 10:16:09 -07:00
Paul Frazee 897427eed0 Run intl extract 2024-06-22 10:15:41 -07:00
Paul Frazee 45648bd383 Merge branch 'zh' of https://github.com/KuwaLee/bluesky-social-app into KuwaLee-zh 2024-06-22 10:14:43 -07:00
Paul Frazee 8eec632636 Release 1.87 prep (#4603)
* Update tests

* Run intl extract
2024-06-22 09:54:53 -07:00
Hailey f75a429f08 add missing prop... (#4601) 2024-06-22 10:24:45 +03:00
Hailey f089f45781 Starter Packs (#4332)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-06-21 21:38:04 -07:00
Kuwa Lee 21a7d47cdc Merge branch 'bluesky-social:main' into zh 2024-06-22 11:33:58 +08:00
Hailey 35f64535cb Tweak feed card to prevent spinnerz when pushing to screen (#4600) 2024-06-21 19:59:08 -07:00
dan 1715afd80e [Statsig] Send Discover aggregate interactions (#4599) 2024-06-22 03:54:47 +03:00
dan 7db8dd8980 Add debug feedContext label (#4598) 2024-06-22 02:11:39 +03:00
Minseo Lee 707ea5bf06 Add options for Feeds in Navigation.tsx (#4503)
* Update Navigation.tsx

* Update Navigation.tsx
2024-06-22 01:41:58 +03:00
Hailey 4d9e686e3b add flex shrink (#4597) 2024-06-22 01:15:12 +03:00
Eric Bailey 4d6787009c Pinned feeds cards (#4526)
* Add lists support to FeedCard

* Add useSavedFeeds query, similar to usePinnedFeedInfos

* Integrate into Feeds screen

* Fix alignment on mobile

* Update usages

* Add placeholder loading state

* Handle no feeds state

* Reuse previous data for placeholder

* Staged loading

* Improve staged loading

* Use setQueryData approach to pre-caching

* Add types for a little more safety

* Fix precaching

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-22 00:50:23 +03:00
Eric Bailey cb37647949 Fetch more than 3 suggested follows after first load (#4595)
* Fetch more than 3 sugg follows after first load

* Preview handling via overfetching
2024-06-21 14:50:49 -05:00
devin ivy 55812b0394 Bsky short link service (#4542)
* bskylink: scaffold service w/ initial config and schema

* bskylink: implement link creation and redirects

* bskylink: tidy

* bskylink: tests

* bskylink: tidy, add error handler

* bskylink: add dockerfile

* bskylink: add build

* bskylink: fix some express plumbing

* bskyweb: proxy fallthrough routes to link service redirects

* bskyweb: build w/ link proxy

* Add AASA to bskylink (#4588)

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-21 12:41:06 -04:00
Minseo Lee ba21fddd78 Update Korean localization (#4513)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-06-20 15:50:18 -07:00
Takayuki KUSANO 8ff862798f Update Japanese translation (#4477)
* Update Japanese translation

* Update Japanese translation

* Fix translation

ref. https://github.com/bluesky-social/social-app/pull/4477#pullrequestreview-2114478514

* Update Japanese translation

* Fix translation

* Updated Japanese translation

* Updated translations
2024-06-20 15:49:50 -07:00
Marco Maroni f344032ed8 Italian translation fix (#4527)
* Update messages.po

Italian translation fix (feeds->feed)

* Italian localization update

Italian localization update (DM)

* Update src/locale/locales/it/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/it/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-20 15:48:58 -07:00
dan 4c48a1f14b [Session] Logging (#4476)
* Add session logging (console.log)

* Hook it up for real

* Send type separately
2024-06-20 15:47:56 -07:00
Eric Bailey 4bba59790a Add a11y context (#4586)
* Add a11y context

* Feedback
2024-06-20 17:06:57 -05:00
Hailey 4d8537bcd4 center pill text in label pill (#4579)
* center pill text

* undo
2024-06-20 15:01:58 -07:00
dan 5d98b4b06c Wait for AppView when posting (#4584) 2024-06-20 14:54:30 -07:00
devin ivy 51f5e6bf90 Bsky link card service (#4547)
* setup bskycard

* quick proof of concept for png card generation

* bskycard: use jsx

* bskycard: 3x5 profile layout

* bskycard: add butterfly overlay

* bskycard: tidy

* bskycard: separate and reorganize

* bskycard: tidy

* bskycard: tidy

* bskycard: tidy

* bskycard: poc of transparent overlay and box shadow

* bskycard: reorg impl into src/ directory

* bskycard: use more standard app structure

* bskycard: setup dockerfile, fix build

* bskycard: support for x-origin-verify

* bskycard: card layout, filter images based on labels

* bskycard: tidy

* bskycard: support cluster mode

* bskycard: handle error fetching starter pack info

* bskycard: tidy

* bskycard: fix leak on failed image fetch

* bskycard: build workflow

* bskyogcard: rename from bskycard

* bskyogcard: fix some express plumbing

* bskyogcard: add cdn tags, tidy
2024-06-20 17:45:52 -04:00
Kuwa Lee 39c32b0ab1 Merge branch 'bluesky-social:main' into zh 2024-06-21 04:14:12 +08:00
Eric Bailey eac4668d73 Merge #4492, fixes profile menu hover (#4580)
* Fix button hover color (#4492)

* Update ProfileMenu.tsx

* Update Button.tsx

* Update ProfileFeed.tsx

* Update ProfileFeed.tsx

* Re-add change post conflict

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2024-06-20 10:30:48 -07:00
Kuwa Lee 6ac8389adb TW: hot fix 2024-06-20 23:04:52 +08:00
Kuwa Lee 52b52617e1 TW: Update and clean 2024-06-20 23:00:18 +08:00
Frudrax Cheng 43adc64e5f CN: Remove superseded strings 2024-06-20 16:34:26 +08:00
Frudrax Cheng f927e74e52 CN: Update translates 2024-06-20 16:32:52 +08:00
Kuwa Lee a33e370d22 Merge branch 'bluesky-social:main' into zh 2024-06-20 16:26:22 +08:00
Paul Frazee 80197556f1 Rework "Who can reply" to blend more nicely into the UI (#4578)
* Rework WhoCanReply controls in threads to blend more nicely

* Fix layout

* Fix post control hitslops

* Move dialog content to separate component

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 18:39:45 -07:00
dan 75aec19230 Fix threadgate read after write (#4577)
* Fix threadgate read-after-write problem

* Fix React key (drive-by)
2024-06-19 18:19:37 -07:00
Frudrax Cheng 7deea7ddd4 CN: Update Revision-Date 2024-06-20 09:15:40 +08:00
Frudrax Cheng bfcf872921 CN: translated 'ALT' 2024-06-20 09:13:20 +08:00
Frudrax Cheng e327bd01ec Merge branch 'bluesky-social:main' into zh 2024-06-20 09:09:59 +08:00
Eric Bailey 7d8fca56dc Convert button to use forwardRef (#4576) 2024-06-19 18:47:43 -05:00
Hailey 89d99a8701 use 1000x1000 for image height in avatar cropper (#4453) 2024-06-20 02:20:43 +03:00
Samuel Newman 5c31859f7b fix for autofill covering border (#4573) 2024-06-20 01:42:12 +03:00
Samuel Newman 73fc0094dd Update HomeHeaderLayoutMobile.tsx (#4572) 2024-06-20 00:45:08 +03:00
Samuel Newman 0f931933a7 Option for large alt badges (#4571)
* add pref for large alt badge

* add to settings

* do the large badge bit

* Tweak wording

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-20 00:32:44 +03:00
Kuwa Lee e170447cc6 Merge branch 'bluesky-social:main' into zh 2024-06-20 05:27:14 +08:00
Kuwa Lee a98c4efc7c TW: Update and clean 2024-06-20 05:24:00 +08:00
Samuel Newman 22c5aa4da4 Truncate post metrics and fix truncation on native (#4575)
* truncate post counts

* add numberformat polyfill

* Fix perf

* Simplify type shenanigans

* Bump versions to remove dupes

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-20 00:21:02 +03:00
dan ca17cf276f Fix avi placeholder layout (#4570) 2024-06-19 19:03:59 +03:00
Frudrax Cheng 95f4cfe24f CN: Remove superseded strings 2024-06-19 14:57:25 +08:00
Frudrax Cheng 6316ddf627 CN: Update translates 2024-06-19 14:55:52 +08:00
Frudrax Cheng bdc1ea897f Merge branch 'bluesky-social:main' into zh 2024-06-19 14:41:03 +08:00
Hailey 8788708bd2 add support for ListEmptyComponent, allow undefined data (#4403)
* add support for `ListEmptyComponent`, allow `undefined` data

* change `header` and `footer` to be in line with `emptyComponent`

* don't render `onEndReached` or `onStartReached` `Visibility` if empty
2024-06-19 03:33:43 +03:00
Samuel Newman 3dc34be929 GIF previews in notifications (#4447)
* gifs in notifications

* remove try/catch

* Limit try/catch scope

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 03:09:06 +03:00
dan 7ddbc392c3 [Session] Convert account to session data explicitly (#4446)
* Extract a variable

* Extract sessionAccountToSession

* Convert account to session data on assignment
2024-06-19 02:47:50 +03:00
Eric Bailey 5159495274 Move onboarding start to after successfull account creation (#4381)
* Move onboarding start to after successfull account creation

* Remove unused dispatch
2024-06-19 02:46:34 +03:00
Paul Frazee 07c2be255f Collection of moderation fixes (#4566)
* Fix: dont blur parents in threads that embed blocks

* After tapping 'Show hidden replies', show the individual hider cards

* Add shape override to UserAvatar and fix the fallback avi for labelers

* Fix precedence

* Detect shape for DefaultAvatar

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 02:36:46 +03:00
Eric Bailey ac08c76168 Fix undefined block (#4479)
* Fix undefined block (#4378)

* Fix undefined block

* Changing text and handling all blocks.

* Tweaks

* Update copy, make non-interactive

* Remove console

* Clarify logic

* Pass through parent blocked state for 3p blocks

* Better translation

---------

Co-authored-by: Josh <hi@oracularhades.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 02:03:23 +03:00
Samuel Newman 2237e10ad2 fix gap between tab bar and its border (#4538) 2024-06-19 01:53:54 +03:00
Eric Bailey c92ef2fe31 Better handling of blocks in KnownFollowers (#4563)
* Better handle nested conditionals, use renderable items to determine UI

* Better translate

* Fix translation and fix missing case in the process

* Clarify naming

* Add safeguard

* Remove unneeded msg

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 01:33:17 +03:00
Eric Bailey 32b4063185 Verify email reminders (#4510)
* Clarify intent

* Increase email reminder period to once per day

* Fallback

* Snooze immediately after account creation, prevent showing right after signup

* Fix e2e test exports

* Remove redundant check

* Better simple date generation

* Replace in DateField

* Use non-string comparison

* Revert change to unrelated code

* Also parse

* Remove side effect
2024-06-18 17:21:34 -05:00
Paul Frazee 853c32b4d8 Bump labeler limit to 20 (#4565)
* Increase the labeler subscription limit to 20

* Bump @atproto/api@0.12.20

* Fix: correctly count labeler subscriptions

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-19 00:21:55 +03:00
Samuel Newman 0012d1236f Migrate local thread mutes (#4523)
* migrate thread mutes

* don't try and clear if not logged in yet

* migrate mutes one at a time

* write before mutating

* only migrate mutes of self posts

* use /** @deprecated */

* shouldLike -> shouldMute
2024-06-19 00:05:59 +03:00
Eric Bailey 502bcad701 Disable newskie dialog tap in hover card web (#4562) 2024-06-18 14:09:40 -05:00
Paul Frazee d6ce16d15a Implement thread locking (#4545)
* Add the ability to edit threadgates

* Fix bottom border on mobile

* Refresh thread after threadgate edit
2024-06-18 12:07:56 -07:00
Eric Bailey 4165a02b2d Prevent unecessary calls (#4561)
(cherry picked from commit ecb4879767)
2024-06-18 21:52:44 +03:00
Eric Bailey 983d85384b Force callers of getTimeAgo to pass in the value for "now" (#4560)
* Remove icky hook for now

* Force callers of getTimeAgo to pass in the 'now' value

* Update usage in Newskie dialog
2024-06-18 21:50:07 +03:00
Paul Frazee fb76265fcc Fix: only apply self-thread load-more behavior on the outer edge of the reply tree (#4559) 2024-06-18 21:48:49 +03:00
Samuel Newman 5f5d845053 Server-side thread mutes (#4518)
* update atproto/api

* move thread mutes to server side

* rm log

* move muted threads provider to inside did key

* use map instead of object
2024-06-18 21:48:34 +03:00
Kuwa Lee a6d49062e6 Merge branch 'bluesky-social:main' into zh 2024-06-19 02:47:38 +08:00
Eric Bailey 35e54e24a0 Explore fixes (#4540)
* Use safe check, check for next page, handle varied lengths

* Fix border width

* Move safe check

* Add font_heavy and use it on the explore page headers

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-18 13:37:14 -05:00
Eric Bailey 1106517481 Is it "newskie" or "newsky" 🤔 (#4557)
* add newskie icon

(cherry picked from commit 152e074ee0)
(cherry picked from commit 8d2326f115c9c9d32aa1c41259bb81936b3868aa)

* add size prop

(cherry picked from commit af09ae2d8f)
(cherry picked from commit 38dd38451bcce8afcf302ad1180802640857722a)

* add a dialog for newskies to profiles

(cherry picked from commit fe16f55e9c)
(cherry picked from commit c5b9f1b16ace276f422832069db076a5360616fe)

* move newskie to handle

(cherry picked from commit 150f2635b2)
(cherry picked from commit 1efaaf835380f4e76d2e4b7fe8b727a92731a794)

* use "say hello" in newskie dialog

(cherry picked from commit d9a286cfc8)
(cherry picked from commit 018dd1739fee68906dec63e05519f5ca9ae73910)

* tweaks

(cherry picked from commit 070363c947)
(cherry picked from commit c30855d4ff311e31fb6ae357a9d6cd1662b291d5)

* Tweaks

* Re-export newskie icon

* Design tweaks

* Tweaks

* Add source icon

* Remove unused file

* Remove unneeded edits

* Simplify logic

* Update source

* Moderate displayName, fix createdAt type

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-18 12:59:50 -05:00
Hailey 73c9de3ce2 fix keyboard overlaying onboarding inputs (#4558) 2024-06-18 10:57:08 -07:00
Eric Bailey 443beda741 Add useGetTimeAgo and utils (#4556)
* Create a testable version of ago() and re-enable the disabled test (#4364)

* Enable the test of ago()

* Use test cases

This puts the input and the expected values next to each other.

* Create dateDiff function

This is a copy of ago(), but with the ability to specify the second date instead of using Date.now().

* Let ago() use dateDiff()

* Move constants close to usage

* Test dateDiff instead of ago

This makes it possible to test the dates without being forced to rely on what the current date is.

The commented out tests do not yet pass. This is fixed in later commits.

* Update dateDiff and enable the remaining tests

* Split up tests, use date-fns as helpers

* Remove old test

* Add long format

* Add hook

* Migrate to hooks

* Delete old code

* Or equal to

* Update comment

---------

Co-authored-by: Jan Aagaard <jan@aagaard.net>
2024-06-18 10:55:02 -05:00
dan 08cfb09589 Unconditionally polyfill Intl.PluralRules for native (#4554)
* Revert "Fix Android startup perf regression (#4544)"

This reverts commit e6213d7aa5.

* Force polyfill
2024-06-18 17:27:40 +03:00
dan f142339e06 Dedupe Zod installation (#4551) 2024-06-18 17:20:54 +03:00
dan e30575c0dc Use exact imports for icons (#4549)
* Use exact imports for icons

* Add a lint rule
2024-06-18 15:37:08 +03:00
dan e6213d7aa5 Fix Android startup perf regression (#4544) 2024-06-18 08:23:41 +03:00
Kuwa Lee fad73fe928 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:15:16 +08:00
Kuwa Lee b06aa12730 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:14:40 +08:00
Kuwa Lee 0b24216040 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:14:15 +08:00
Frudrax Cheng 7548c23f19 Merge branch 'bluesky-social:main' into zh 2024-06-18 09:11:53 +08:00
Eric Bailey 077da08309 Explore feed cards (#4521)
* Replace FeedSourceCard on Explore page

(cherry picked from commit e7e9787bfaa9368bfaeaaa4ca144ab77b438219c)

* Replace FeedSourceCard on Search page

(cherry picked from commit ac47aade7622d359eee9509763cda666d964d8a3)
2024-06-17 13:56:11 -05:00
Kuwa Lee b4e4c15fbb Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 02:35:15 +08:00
Kuwa Lee 2a83ad1f5c Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 02:34:53 +08:00
Eric Bailey 7e88d0d7a6 Onboarding fixes (#4508)
* Add extra padding to bottom of profile step

* Make profile pic gen higher res
2024-06-17 13:21:35 -05:00
Eric Bailey 332524b7de Add native_pwi_disabled feature gate experiment (#4507)
* Add native_pwi_disabled feature gate experiment

* Use const
2024-06-17 13:21:09 -05:00
Eric Bailey f5f3bd8130 Select, don't mutate (#4541) 2024-06-17 19:22:39 +03:00
Hailey ba2fadb661 Don't show "Pin/Add" button on feed card w/ no session (#4539)
* pt 1

* tweak
2024-06-17 11:05:02 -05:00
Hailey 89be5a442c Add patch for RCTBaseTextInput fixing selectTextOnFocus prop (#4533)
* create patch

* remove js fix in `SearchScreen`
2024-06-17 10:56:02 +03:00
Frudrax Cheng 035a1ca18e CN: Optimize 'follow' translations 2024-06-17 10:38:08 +08:00
Frudrax Cheng c09b66182d CN: run intl:extract 2024-06-17 10:31:24 +08:00
Frudrax Cheng 741ce1c176 CN: Remove superseded strings 2024-06-17 10:26:59 +08:00
Frudrax Cheng 0af555830e CN: Update translates 2024-06-17 10:25:04 +08:00
Kuwa Lee 45b10f2c60 TW: Update and clean 2024-06-16 20:32:15 +08:00
Kuwa Lee fa1dfe8b0a Merge branch 'bluesky-social:main' into zh 2024-06-16 20:04:56 +08:00
Joel 10c6035f31 Make lint-staged work in more envs (#4532)
When setting up the environment on a Windows machine with Git Bash, the pre-commit hook errored out:

> /usr/bin/bash: line 1: C:UsersNameFoldersocial-appnode_modules.binlint-staged: command not found

Seemingly, `yarn lint-staged` is not able to correctly resolve the path.

This commit changes the pre-commit hook to use `npx` instead of `yarn`, for 2 reasons:
1. It works on my machine (and is supposedly a more universal solution)
2. It is how it is done in the documentation: https://github.com/lint-staged/lint-staged?tab=readme-ov-file#examples

Co-authored-by: Joel <joel.garplind+github@gmail.com>
2024-06-16 13:42:15 +03:00
Hailey d0bb97e8a9 fix native post meta (#4530) 2024-06-16 12:23:48 +03:00
Kuwa Lee 01f505d09f Merge branch 'bluesky-social:main' into zh 2024-06-15 19:00:34 +08:00
Eric Bailey eaef1446f2 Use URI as key (#4522) 2024-06-14 14:28:25 -05:00
Eric Bailey 5751014117 Feed source card (#4512)
* Pass event through click handlers

* Add FeedCard, use in Feeds screen

* Tweak space

* Don't contrain rt height

* Tweak space

* Fix type errors, don't pass event to fns that don't expect it

* Show unresolved RT prior to facet resolution
2024-06-14 14:24:04 -05:00
Minseo Lee 51a3e60132 Fix kawaii logo (#4505) 2024-06-14 10:39:08 -07:00
Eric Bailey 36e976fe5c Redo explore page (#4491)
* Redo explore page, wip

* Remove circle icons

* Load more styling

* Lower limit

* Some styling tweaks

* Abstract

* Add tab, query, factor out

* Revert unneeded change

* Revert unneeded change v2

* Update copy

* Load more styling

* Header styles

* The thin blue line

* Make sure it's hairline

* Update query keys

* Border

* Expand avis

* Very load more copy
2024-06-14 12:32:57 -05:00
dan 94c1f4968d Resolve patch-package warnings (#4520) 2024-06-14 18:01:31 +01:00
Eric Bailey f8c58a68a9 Fix count again (#4516) 2024-06-14 17:59:53 +01:00
Hailey 641a36c21d version bump (#4519) 2024-06-14 17:59:02 +01:00
Eric Bailey fe3f872d49 Add known followers to shadow cache (#4517) 2024-06-14 11:56:43 -05:00
Eric Bailey 4c0f037880 Reuse overfetching for popular feeds, add in existing filtering (#4501) 2024-06-14 11:56:29 -05:00
Kuwa Lee b80594a554 Merge branch 'bluesky-social:main' into zh 2024-06-14 14:26:28 +08:00
Samuel Newman bdeac28d74 Try/catch URL parsing of referrer (#4511) 2024-06-13 15:06:22 -07:00
Hailey d9066a6beb add document.referrer to statsig custom (#4509)
* add referrer to statsig custom

dont include referrer if hostname is bsky.app

save

add `document.referrer` to statsig custom

* add a hostname field

* account for ssr

* account for ssr
2024-06-13 23:31:19 +02:00
Kuwa Lee 3ea3b5a4d4 TW: hot fix 2024-06-14 01:57:55 +08:00
Kuwa Lee 23a14454dc TW: Update and clean 2024-06-14 01:45:52 +08:00
Kuwa Lee 92fe3cde7a Merge branch 'bluesky-social:main' into zh 2024-06-14 01:33:19 +08:00
Samuel Newman d20c59e19d Calculate correct keyboard offset in composer (#4500)
* calculate correct keyboard offset

* give viewHeight a default value

* much simpler approach
2024-06-13 15:58:56 +01:00
dan 498e46ae4e Hide bio and social proof for blocked users (#4504) 2024-06-13 11:03:31 +02:00
Kuwa Lee ecd51bc6f9 Merge branch 'bluesky-social:main' into zh 2024-06-13 15:29:51 +08:00
Minseo Lee 7faa1d9131 KnownFollowers localization (#4494)
* Update KnownFollowers.tsx

* Update KnownFollowers.tsx

* Update KnownFollowers.tsx
2024-06-13 04:58:25 +02:00
Eric Bailey 28ba99917a Fix profile hover card blocked state (#4480)
* Fix: mini profile on hover allows following a blocker/blocked user (#4423) (#4440)

* Tweaks

---------

Co-authored-by: Michał Gołda <michal.golda@hotmail.com>
2024-06-13 04:53:32 +02:00
Eric Bailey d989128e5b Set profile hover prefetch stale time to 30s (#4417)
* Set prefetch stale time to 30s

* Run prefetch on mouseOver

* Only prefetch once on mousemove
2024-06-13 04:44:06 +02:00
Mary 247af5aee9 Prevent rich-formatting paste (#4327)
* fix: prevent rich-formatting paste

* fix: return true instead of preventDefault
2024-06-13 04:37:49 +02:00
dan ebd4f93b9c Show social proof in hovercards (#4502)
* Add social proof to hovercards

* Close it more reliably
2024-06-13 04:23:37 +02:00
Eric Bailey a55f924639 Just use server count (#4499)
* Just use server count

* Fix count
2024-06-12 16:52:00 -05:00
Kuwa Lee bd8f0e5a1c Merge branch 'bluesky-social:main' into zh 2024-06-13 03:00:02 +08:00
Hailey 99078bbff2 Don't show warning when sharing your own post in PWI opt-out mode (#4495) 2024-06-12 08:51:08 -07:00
Kuwa Lee 004b4e3969 BOTH: Fix msgid "Deleted post." 2024-06-12 09:02:21 +08:00
Kuwa Lee ff0b9e30de TW: Update and clean 2024-06-12 08:48:35 +08:00
Kuwa Lee 4e4a7bf18f Update Chinese localization (#4410)
* TW: Update and clean

* CN:run intl:extract

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: unify "登入"

* Update messages.po

* Update messages.po

* BOTH: fix "Post"

msgctxt "description"
msgid "Post"

* CN: Update translates

* CN: Remove superseded strings

* TW: Update and clean

* CN: fix msgid "This feed is empty."

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-11 17:17:47 -07:00
Paul Frazee 6736384ff4 Release 1.86 prep (#4490)
* Test updates

* Run intl extract
2024-06-11 16:20:26 -07:00
Eric Bailey bb0a6a4b6c Add KnownFollowers component to standard profile header (#4420)
* Add KnownFollowers component to standard profile header

* Prep for known followers screen

* Add known followers screen

* Tighten space

* Add pressed state

* Edit title

* Vertically center

* Don't show if no known followers

* Bump sdk

* Use actual followers.length to show

* Updates to show logic, space

* Prevent fresh data from applying to cached screens

* Tighten space

* Better label

* Oxford comma

* Fix count logic

* Add bskyweb route

* Useless ternary

* Minor spacing tweak

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-11 15:42:28 -07:00
Marco Maroni 7011ac8f72 Update italian localization (#4374)
* Update messages.po

Update italian localization

* Fix translation

* Update src/locale/locales/it/messages.po

Fix by @surfdude29

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Added some translation

---------

Co-authored-by: Marco Maroni <marcomaroni@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-11 15:29:38 -07:00
Minseo Lee 815ab79309 Update Korean localization (#4387)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-06-11 15:28:36 -07:00
surfdude29 43f6b68aa2 Update French localization (#4437)
* Update French localization

* use `point médian`

* Update messages.po

* add three new strings

* translate new string

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* update revision date

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-11 15:27:34 -07:00
Kevin Scannell 0640364e0f Irish back to 100% (#4454) 2024-06-11 15:26:08 -07:00
Paul Frazee e1dcd2e434 Fix to thread load-more bug (#4488) 2024-06-11 15:01:13 -07:00
Eric Bailey a4ca4db35c Stringify path error (#4379) 2024-06-11 14:54:47 -07:00
Samuel Newman 3d4b390a8a Only enable keyboard controller when necessary (#4483)
* Only enable keyboard controller when necessary

* make it screen only

* rm keyboard padding

* rm keyboardpadding file

* revert using keyboard controller in composer

* remove styles.outer (unnecessary for revert)

* continue to use keyboard padding in the report dialog for dms

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-11 12:50:56 -07:00
Paul Frazee aca0fa23ec Update feeds header to just have edit link (#4484) 2024-06-11 12:34:03 -07:00
Paul Frazee 46e12c6d34 Improve thread loading (#4402)
* Increase the number of posts loaded when a self-thread is present

* Increase depth to 10, detect cutoffs on self-threads and show continue link

* Stacky the avis
2024-06-11 11:30:38 -07:00
Eric Bailey 4b6609d48b Move feeds screen into common navigator, handle usages (#4365)
* Move feeds screen into common navigator, handle usages

* Add link to Feeds from home screen (#4366)

* Add link to feeds to home screen header

* Center logo

* Replace icons

* Tweak spacing

* Tweak spacing

* Swap icon, sizing

* Buttonize, size

* Make menu same alignment on all screens

* Remove FeedsTab support, enable drawer swipe on MessagesTab

* Add note

* Vertically align header

* Swap in Pin

* Use hashtag icon

* Remove png

* Fix reference

* Ensure alignment with home and other screens
2024-06-11 11:08:06 -07:00
Samuel Newman 3573f7ea40 rip out native translate (#4482) 2024-06-11 10:51:03 -07:00
Hailey fac5f6cdac register the push token after request has been approved on android (#4481)
* register the push token after request has been approved on android

* use a `0` string for badge count

* Revert "use a `0` string for badge count"

This reverts commit efac398618.

* temporary fix
2024-06-11 10:28:48 -07:00
Hailey 808dd3569d patch expo-notifications to clear badge (#4475) 2024-06-10 20:19:19 -07:00
Samuel Newman d85c8a0976 Revert to old modal on android (#4458)
* revert to old modal on android

* close alf dialogs before closing composer

* Try to fix white area

* Use hook

* Fix Back button

* oops

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 05:10:57 +02:00
Eric Bailey 14cddb7ec0 Sort profile feedgens by likes (#4380)
* Sort profile feedgens by likes

* Sort entire set as we get more pages

* Nah

This reverts commit 3b8714fd97.

* Update profile-feedgens.ts

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-11 03:55:44 +02:00
Eric Bailey 848151c4f9 Revert "Fix undefined block (#4471)" (#4472)
This reverts commit 7cac413f3b.
2024-06-11 03:49:28 +02:00
Eric Bailey 7cac413f3b Fix undefined block (#4471)
* Fix undefined block (#4378)

* Fix undefined block

* Changing text and handling all blocks.

* Tweaks

* Hide follow button in hover card if user blocked

---------

Co-authored-by: Josh <hi@oracularhades.com>
2024-06-10 20:45:23 -05:00
Eric Bailey 212f5750e3 Open convo menu when tapping on chat with deleted account (#4470)
* Open menu on click

* Remove useless util

* Improve label

* s/press/click

* Tweak message

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 03:36:42 +02:00
Hailey c73ad43a80 stop using addPushTokenListener (#4467)
* stop using push token listener

* cleanup the hack

* add a comment

* remove test code

* Fix patch

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 03:16:21 +02:00
Samuel Newman 4e9a65200e add hitslop to repost button (#4469) 2024-06-10 16:43:04 -07:00
Paul Frazee 86e81650d3 Add a loading indicator to notifications when loading latest (#4468)
* Add a loading indicator to notifications when loading latest

* Adjust size and alignment
2024-06-11 01:17:34 +02:00
Paul Frazee 4efd576f6a Visually improve the empty state of feeds (#4466) 2024-06-10 13:44:21 -07:00
Paul Frazee c2d7d23423 Give a meaningful error in the composer when replying to a deleted post (#4464) 2024-06-10 22:02:00 +02:00
Paul Frazee 0404111f03 Fix: show known feed error UI more reliably (#4463) 2024-06-10 22:01:14 +02:00
Eric Bailey 7356763e49 Only validate persisted data for existing users (#4465) 2024-06-10 22:00:45 +02:00
Hailey 5dd195bcb7 Check canAskAgain for notification permissions (#4460) 2024-06-10 12:14:00 -07:00
Paul Frazee 90ec22a674 Add support for new-tab clicks on feeds (#4462) 2024-06-10 11:44:13 -07:00
Paul Frazee 59f49bef68 Override legacy language codes for indonesian, hebrew, and yiddish (#4461)
* Manually override incorrect 'in' to 'id' lang code

* Fix additional legacy language code issues
2024-06-10 20:37:14 +02:00
dan 620ab88713 Ungate mobile web notification badge (#4459) 2024-06-10 18:17:26 +02:00
Francesco Lodovici b688da8d58 Fix (#4430): Use separate hooks for shell mode animated styles (#4451)
* Fix (#4430): Use separate hooks for shell mode animated styles

* Consolidate in one file

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-10 17:19:28 +02:00
Samuel Newman fd03ea3fe1 Throttle instead of debounce (#4456)
* throttle instead of debounce

* trailing: true

* Fix throttle call

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-10 17:02:57 +02:00
Samuel Newman 1317d881ed debounce refetching listconvos (#4455) 2024-06-10 16:08:13 +02:00
dan 01b7a94a7e Patch to work around a crash in RN internals (#4426)
Co-authored-by: Hailey <me@haileyok.com>
2024-06-08 01:55:57 -07:00
dan a2d1cf68b9 Reliably focus keyboard on Android (#4427) 2024-06-07 22:27:16 -07:00
Hailey 5f63b8d40f Bump expo-notifications to fix NPE (#4425)
* bump library

* rename patch file
2024-06-08 03:17:00 +01:00
Hailey 480a40862f Use the proper logic on iOS to increment the badge (#4233) 2024-06-07 15:15:33 -07:00
Hailey c58aedf050 Bump 1.86.0 (#4411) 2024-06-07 20:00:50 +01:00
Samuel Newman 29a4a5f90c Composer - backup android focus (#4415)
* backup android focus

* bump to 300ms just to make sure it catches all of them
2024-06-07 13:32:38 +01:00
Hailey fefae27396 scope enable/disable of keyboard controller in composer to only android (#4412) 2024-06-06 22:29:34 -07:00
Minseo Lee 2540616f43 Fix horizontal padding of tab within profile header (#3924)
Co-authored-by: Hailey <me@haileyok.com>
2024-06-06 21:41:03 -07:00
Paul Frazee bd1e6fced9 1.85.1 2024-06-06 12:18:08 -07:00
Hailey 885ad2c756 disable keyboard controller in the composer screen (#4399)
* disable keyboard controller in the composer screen

* add comment

* oops

* destructure

* rename to keyboard context for clarity

* move destructure

* cleanup
2024-06-06 12:15:36 -07:00
Paul Frazee fef16e060f Fix notifications pagination on web (#4400)
* Fix notifications pagination on web

* Preserve larger threshold on native
2024-06-06 12:10:50 -07:00
dan ac25e43bef Patch Expo Modules for Android crash (#4398)
* Patch Expo Modules for Android crash

* rm intermediaries, add a readme

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-06 11:21:38 -07:00
Hailey 094c08ea60 Revert "Change Android's MainActivity launchMode to singleTop" (#4397)
* Revert "Change Android's MainActivity launchMode to singleTop (#4255)"

This reverts commit 65ad16e394.

* Update bundle-deploy-eas-update.yml

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-06 19:08:20 +01:00
dan 559764156d Fix tall image lightbox on Android (#4393) 2024-06-06 15:13:53 +01:00
dan 3801932902 Fix prettier (#4392) 2024-06-06 15:00:05 +01:00
Hailey 72f46ed734 cancel animations before updating value for min-shell animation (#4386)
* cancel animations before updating value

* comment
2024-06-06 14:28:02 +01:00
Samuel Newman 85e676257e Composer - make sure android keyboard opens (#4390)
* keep trying to open keyboard until it's open

* limit number of retries

* keep the original 50ms one as well

* Proper fix!

* disable autoFocus if not visible

* Reset derived state

* Revert "Reset derived state"

This reverts commit 71f57391ae.

* Use derived state pattern

* Rename for clarity

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-06 14:21:22 +01:00
dan 48796449ea Switch to withSpring to work around Reanimated regression (#4391) 2024-06-06 14:17:26 +01:00
dan 1f954c1065 Split ShareViaChatDialog (#4383) 2024-06-06 01:10:21 +01:00
dan 5d2119ffe5 Pin resolution of Statsig Expo dependencies (#4382)
* Force resolution of expo-constants

* Pin expo-device
2024-06-06 00:40:28 +01:00
Hailey 492c271a06 add legacy to picker for Android (#4377)
* add `legacy` to picker

* add for the other callsite
2024-06-05 16:27:57 -07:00
Hailey 42477d8bbb add notification count badge mobile web (#4375)
* add notification count badge mobile web

* rename var

* add gate to types

* implement gate

* nit

* Fix condition order, narrow types

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-05 18:13:42 +01:00
Hailey aefbab3850 Remove expo-constants (#4371) 2024-06-05 09:05:25 -07:00
Hailey af2aaa1f39 add types for desktopFixedHeight to List (#4356)
* add types for `desktopFixedHeight`

* nit

* accept both `number` and `boolean`
2024-06-05 09:03:40 -07:00
Paul Frazee 22858192dc Release 1.85 (#4372)
* Update tests

* Run intl extract
2024-06-04 20:00:21 -07:00
Minseo Lee 618a3c1ebe Update Korean localization (#4318)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Merge remote-tracking branch 'upstream/main' into update-korean-localization
2024-06-04 19:55:05 -07:00
Kevin Scannell 5e0452fc6b Update Irish translations back to 100% (#4306) 2024-06-04 19:54:38 -07:00
Stanislas Signoud 47033e5270 Update French localizations (#4223)
* Update French localizations

* Fix typos in French and misusage of "Ignorer"

Thanks @surfdude29 for the review!

Fixes #4296.

* Bump strings and remove unused one in French

* Translate three new missing strings in French

* Bump strings and trim unused old in French again

* Translate five new missing strings in French again
2024-06-04 19:53:59 -07:00
Takayuki KUSANO bb9afa9ce8 Upated Japanese translation (#4311)
* Delete obsoleted translated messages

* Translate new messages, update some messages

* Update Japanese translations
2024-06-04 19:52:58 -07:00
Frudrax Cheng 504bd28e80 Update Chinese Localization (#4323)
* Improve zh-TW translation

* improve and fix

* Update messages.po

msgid "Nevermind, create a handle for me"

* revert L3813

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* BOTH: Fix and clean

msgid "Copy {0}"

msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."

* CN: Unify emoji

* TW: Update and unify some translation

* TW: unify "色情

* TW: update

* TW: typo

* CN:translated latest commit

* CN:removed superseded strings

* CN:fixed string 'left to go'

* CN:unified translation

* CN:translated latest commit

* CN:fix typo

---------

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-06-04 19:52:08 -07:00
Hailey afbcac3ff3 use a timeout to focus the composer input (#4370)
* use a timeout to focus the composer input

* scope to just android

* scope useEffect to just android as well

* oops

* cleanup
2024-06-05 03:44:43 +01:00
Eric Bailey deea2f3839 Clarify some things in OTA docs (#4367)
* Clarify some things

* add github outputs script

* add slack notify android

* test slack android

* fix indent

* fix test

* sigh...

* Revert "fix test"

This reverts commit c99764464f.

* Revert "fix indent"

This reverts commit 4cce508d28.

* Revert "test slack android"

This reverts commit b02419b247.

* test ios workflow

* remove testing

* add slack info to docs

* use correct output for android

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-04 18:55:18 -07:00
Paul Frazee 7613cdb89b Fix: visually indicate when quoted content is labeled (#4369) 2024-06-05 02:19:26 +01:00
Eric Bailey 3ece21cb45 [🙅] Integrate deactivate (#4308)
* Update types

(cherry picked from commit 27deac1f367825771ba76fa098ec1b0a62dcf64a)

* Integrate into deactivate dialog

(cherry picked from commit 84f299a447259cc1fbfc7be607e28197779e4ec1)

* Integrate into Deactivated screen

(cherry picked from commit 29193f34822ecdf11e2a407197fa230285dfe846)

* Bump api sdk

(cherry picked from commit 738c622d3e5a23bfbb0d3bdce3a6bdf01e54ca60)

* Update permalink

(cherry picked from commit c10bf5c071d76c3054bc4ce9d313c10b1820f038)

* Bump sdk pkg

* Update types to match backend

* Loosen types for forwards compat

* Hydrate status from persisted data

* Refresh session when re-activating, clear query cache

* Show app password error

* Refactor dialog to clear state when closed

* Add app password error to Deactivated screen
2024-06-05 02:02:22 +01:00
Eric Bailey e64b7cf698 Fix descenders cutoff in new chat dialog (#4359) 2024-06-04 20:51:38 +01:00
Eric Bailey a2d5343a87 Report persisted schema validation failures (#4358)
* Report persisted schema validation failures

* Make it safer
2024-06-04 20:51:28 +01:00
dan b5ac450442 Don't show profile labels until loaded (#4357) 2024-06-04 19:54:30 +01:00
Eric Bailey 551af88f22 [🙅] Remove fallback that's no longer valid (#4353)
* Remove fallback that's no longer valid

* Update test
2024-06-04 19:36:07 +01:00
Eric Bailey a49fe13223 Use recent convos for share via dialog (#4352) 2024-06-04 19:35:07 +01:00
Hailey 9f001526d3 Fix a few border nits (#4349)
* replace w/ hairline width

* no border for placeholder

* few notifications screen fixes tablet

* still show the border on desktop

* Simp

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-04 19:31:54 +01:00
surfdude29 d6b8313932 Mark accessibilityLabel and accessibilityHint for translation (#4351)
* mark `accessibilityLabel` and `accessibilityHint` for translation

* lint

* try again
2024-06-04 19:15:28 +01:00
Hailey e4b4d854d6 use rngh scrollview in search horizontal list (#4350) 2024-06-04 11:06:31 -07:00
dan c352e0f8b4 Fix forwarded ref (#4348) 2024-06-04 18:36:00 +01:00
Ryan Skinner e7968bc8d7 add profiles to search history (#4169)
* add profiles to search history

* increasing horizontal padding slightly

* tightening up styling

* fixing navigation issue

* making corrections

* Make the search history profiles a little smaller

* bug stomping

* Fix issues

* Persist taps

* Rm unnecessary

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-04 16:31:24 +01:00
dan 6f1589971c Fix missing top borders (#4346) 2024-06-04 11:07:11 +01:00
Samuel Newman 2ffb98e22a allow nested quotes in DMs (#4345) 2024-06-04 11:03:43 +01:00
Samuel Newman d918f8dc2a Composer - unbork web (#4344)
* reduce side gap + add overflow hidden

also remove the animations since they don't appear in prod, and are kinda broken

* removed fixed height to fix alt text
2024-06-04 10:58:09 +01:00
Samuel Newman d032734278 Composer - make bottom border more consistent when typing (#4343)
* floor values

* fix last line being obscured

* Rm unnecessary runOnUI

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-04 10:55:35 +01:00
Eric Bailey 3e1f076891 [🙅] Disambiguation of the deactivation (#4267)
* Disambiguation of the deactivation

* Snapshot crackle pop

* Change log context

* [🙅] Add status to session state (#4269)

* Add status to session state

* [🙅] Add new deactivated screen (#4270)

* Add new deactivated screen

* Update copy, handle logout

* Remove icons, adjust padding

* [🙅] Add deactivate account dialog (#4290)

* Deactivate dialog

(cherry picked from commit 33940e2dfe0d710c0665a7f68b198b46f54db4a2)

* Factor out dialog, add to delete modal too

(cherry picked from commit 47d70f6b74e7d2ea7330fd172499fe91ba41062d)

* Update copy, icon

(cherry picked from commit e6efabbe78c3f3d9f0f8fb0a06a6a1c4fbfb70a9)

* Update copy

(cherry picked from commit abb0ce26f6747ab0548f6f12df0dee3c64464852)

* Sizing tweaks

(cherry picked from commit fc716d5716873f0fddef56496fc48af0614b2e55)

* Add a11y label
2024-06-04 02:10:43 +01:00
Eric Bailey de93e8de74 [🐴] Post embeds polish (#4339)
* Handle message cleanup

* Handle last message in chat list

* Memoize lastMessage
2024-06-04 02:07:01 +01:00
Samuel Newman da96fb1ef5 Native formSheet for GIF select on iOS (#4328)
* native formsheet for gif select

* trigger confirm discard if have gif

* give modal a background color

* fix web top bar - unrelated but I cba to make a separate PR
2024-06-04 02:05:46 +01:00
Hailey b02445883a add an apk to production build outputs for Obtanium release support (#4317)
* add an apk to production build outputs

* test a build

* Revert "test a build"

This reverts commit f89bfeefb7.
2024-06-03 17:32:58 -07:00
Thomas Dickerson bd4703ca1e Support for Flickr album and group pool embeds (#3936)
* Support for Flickr album and group pool embeds

* Oops, forgot to add flickr to the persisted externalEmbeds schema

* Need a bigint since our id can have more than 52 bits...

* Remove unexpected trailing / from test data to match the expected behavior

* nits

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-03 17:29:45 -07:00
Samuel Newman 891b432ead Composer - add animated bottom border (#4325)
* start adding bottom border (wip)

* add content change listener

* add layout listener and move to hook

* remove logs

* use square-er image icon

* visually align bottom bar icons

* reduce keyboard vertical offset slightly

* only add border to top/bottom

* run worklet function on UI thread
2024-06-04 00:49:50 +01:00
dan 3b55f61d5f Avi follow experiment tweaks (#4341)
* Move avi button to visually align content

* Fix wrong prop warning

* Remove avi follow from post thread
2024-06-04 00:38:12 +01:00
Hailey 8c596b61c0 fix top border width for user list updates (#4340)
* fix nits in add/remove users from list screen

invert check

use `ViewHeader`

simplify

replace with hairline width

fix top border width for user list updates

* dont use `ViewHeader`

* update one more hairline
2024-06-03 16:34:37 -07:00
Bartosz Kaszubowski 44670c7ee2 Unify profile tabs and lists screens placeholders (#4315) 2024-06-03 16:05:26 -07:00
Hailey 8d8323421c remove resolution from post thread (#4297)
* remove resolution from post thread

nit

completely remove did cache lookup

move cache check for did to `usePostThreadQuery`

remove resolution from post thread

* helper function

* simplify

* simplify search too

* fix missing check for root or parent quoted post 🤯

* fix thread traversal
2024-06-03 23:58:16 +01:00
Yoshihiro Sugi 21d4d5f600 Fix filtering uris of fetchSubjects (#4324) 2024-06-03 23:41:03 +01:00
Hailey bda10510a4 use the new icon in reposted by (#4307)
* use the new icon in reposted by

* tweak
2024-06-03 23:35:57 +01:00
Hailey 16f295ca85 truncate if extending one line acct switcher (#4310) 2024-06-03 23:33:35 +01:00
Hailey f05aebf78e don't use flexBasis on web for message post embeds (#4303)
* don't use flexBasis on web

* rm unnecessary style
2024-06-03 17:05:37 -05:00
Eric Bailey de257a1186 Revert "[🐴] Embed backwards compat (#4302)" (#4338)
This reverts commit f868821cfc.
2024-06-03 17:05:14 -05:00
Hailey d93acb25f4 hide top border for mentions and replies (#4330) 2024-06-03 17:21:02 +01:00
Hailey 708a80e7a7 fix accessibility label in notifications (#4305)
* fix accessibility label in notifications

* add accessibility options to expand post

* inherit from outside, but always include `activate`

* include option to disable label/hint on previewable avatar

* fix hidden elements still being read on voiceover

* make it work for followers too

* extract variable

* fix hint

* update wording elsewhere
2024-05-31 21:02:18 +01:00
Samuel Newman b51640fbc0 [🐴] add emoji multiplier prop to RichText and bump it up for DMs (#4229)
* add emoji multiplier prop to RichText and bump it up for DMs

* remove background if only emoji

* Handle more emoji

* Adjust emoji regex and length

* Fix bad merge conflict res

* Fix logic

* Revert to emoji specific regex

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-31 20:57:42 +01:00
Eric Bailey 5cda807d9d Tweak avi follow button styles (#4304)
* Tighten up

* Tweak colors

* Tweak for night mode

* Add missing file

* Contrast plus
2024-05-31 20:45:41 +01:00
Eric Bailey f868821cfc [🐴] Embed backwards compat (#4302) 2024-05-31 12:56:06 -05:00
Eric Bailey 2bb3694819 [🐴] Add labels to chats (#4293)
* Add labels to chat list

* Add to convo header

* Prevent click through on PostAlert buttons

* Fix space

* Fix alignment
2024-05-31 12:14:11 -05:00
Samuel Newman cd3b502b34 [🐴] Option to share via chat in post dropdown (#4231)
* add send via chat button to post dropdown

(cherry picked from commit d8458c0bc344f993266f7bc7e325d47e40619648)

* let usePostQuery take uris with DIDs

(cherry picked from commit 16b577ce749fd07e1d5f8461e8ca71c5b874a936)

* add embed preview in composer

(cherry picked from commit 795ceb98d55b6a3ab5b83187a582f9656d71db69)

* rm log

(cherry picked from commit 374d6b8869459f08d8442a3a47d67149e8d9ddd4)

* remove params properly, or at least as close to

(cherry picked from commit c20e0062c2ca4d9c2b28324eee5e713a1a3ab251)

* show images in preview

(cherry picked from commit 5bb617a3ce00f67bfc79784b2f81ef8dcb5bfc25)

* Register embed immediately

(cherry picked from commit ee120d5438a2c91c8980288665576d6a29b4c7e7)

* Add hover to match embeds

(cherry picked from commit 5297a5b06e499f46a9f6da510124610005db2448)

* Update post dropdown copy

(cherry picked from commit bc7e9f6a4303926a53c5c889f1f1b136faf20491)

* Embed preview style tweaks

(cherry picked from commit 9e3ccb0f25ac2f3ce6af538bb29112a3e96e01b1)

* use hydrated posts from API and just use postembed component

(cherry picked from commit cc0b84db87ca812d76cc69f46170ae84cfdde4ef)

* fix type error

(cherry picked from commit 9c49b940e1248e8a7c3b64190c5cb20750043619)

* undo needless export

(cherry picked from commit 1186701c997c50c0b29a809637cb9bc061b8c0a0)

* fix overflow

(cherry picked from commit 8868d5075062d0199c8ef6946fabde27e46ea378)

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-31 11:10:00 -05:00
Samuel Newman 22e1eb18c8 [🐴] Record message (#4230)
* send record via link in text

* re-trim text after removing link

* record message

* only show copy text if message + add translate

* reduce padding

* adjust padding

* Tweak spacing

* Stop clickthrough for hidden content

* Update bg to show labels

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-31 10:43:04 -05:00
Samuel Newman 8eb3cebb36 [🐴] send record via link in text (Record DMs - base PR) (#4227)
* send record via link in text

* re-trim text after removing link
2024-05-31 10:41:06 -05:00
Samuel Newman 455937dd0f Use new icons on notifications screen (#4299)
* use new icons on notif screen

* replace placeholder icon too

* cull unused legacy icons
2024-05-31 13:13:01 +01:00
Samuel Newman 05b55c1966 Composer - fix modals, and other tweaks (#4298)
* fix depreciated import

* add animations to old dropdown

* wrap modals in fullwindowoverlay

* move errors inside header

* add background to bottom bar and stop overlap

* nest dialogs on android

* fix android (wrap in gesturehandlerrootview)

* make borders all the same color

* revert threadgate button back to solid
2024-05-31 12:55:51 +01:00
Eric Bailey d614f6cb71 Shadows (#4265) 2024-05-31 05:56:09 +01:00
Hailey 89c9fd3be1 Change many border widths from 1 to hairlineWidth (#4294)
* feed items

* update some more

* moar

* profile card

* composer and notifications

* settings screen

* remove border from first item in feeds

* remove border from first item in feeds

* more removal of top border

* fix flatlist rendering

* oops

* scroll to top fab

* a.border

* centeredview/list

* placeholder

* web sidebar

* search posts

* feeds list

* user lists

* list header

* account list width 1

* hide top border feedgens

* same for lists

* fix tab bar web desktop

* wait...

* show the border on desktop web

* fix lists

* fix lists

* round
2024-05-31 05:32:54 +01:00
Samuel Newman 8569e2e389 Add follow button to feed item avatar (#3560)
* add follow button to feed item avatar

* remove confirmation

* add confirmation (just system alert)

* Shrink the avi follow indicator a smidge

* gate the follow button

* remove from your own posts

* add to post thread item

* hide the follow button locally to component

* Use native dropdown

* Add follow btn to notifications and search

* UI tweaks

* Hide on PWI

* Add toast for confirmation

* Check gate last

* compiler

* Rm unused

* Use names

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-31 05:05:52 +01:00
dan 9879159438 Disable non-deterministic flaky test (#4295) 2024-05-31 04:09:23 +01:00
Hailey 8e2c21a882 Don't log downsample warning when unnecessary (#4291)
* fix log

use process.env

ensure the log happens regardless of `isDownsampledSession`

fix log

* oops, revert test
2024-05-31 01:52:56 +01:00
dan d6275e98c2 [Statsig] Sample noisy events (#4288)
* Sample state:background and state:foreground

* Sample feed events

* Add DEV protection against forgetting to add events to the list
2024-05-30 16:32:59 +01:00
dan 9431201026 Bump FontAwesome (#4285) 2024-05-30 15:57:56 +01:00
dan 9d4622e713 Fix scrolling for labeler profiles (#4286) 2024-05-30 15:57:45 +01:00
dan 8de028387c Reduce Threadgate button size (#4287) 2024-05-30 15:57:03 +01:00
Samuel Newman 8feb2ab449 put dropdown in fullscreenoverlay on iOS (#4284) 2024-05-30 14:06:59 +01:00
Samuel Newman 16925baf8d play haptics before closing modal (#4283) 2024-05-30 13:46:26 +01:00
Samuel Newman b077cbe399 match loadmore position to fab (#4280) 2024-05-30 12:40:22 +01:00
Samuel Newman 3bdceac2fb Composer - Use sheet presentation on iOS (#4278)
* use sheet presentation + tweak spacing

* line up elements + add hitslop to cancel

* fixing spacing on replies
2024-05-30 12:39:36 +01:00
Hailey 76f860dad2 don't maintain position whenever there are no parents (#4277) 2024-05-30 12:36:40 +01:00
Samuel Newman 13c08f56ba Fix native translations on iOS 17.5.1 (#4282)
* enable translations on iOS 17.5.1

* add comment
2024-05-30 12:35:38 +01:00
Samuel Newman a72f55a11f Composer - fix divider when replying to someone (#4279)
* move replyto border to beneath

* use hairline width for consistency

* fix border colors
2024-05-30 12:34:30 +01:00
Samuel Newman cd497a3974 only show divider when scrolled (#4275) 2024-05-30 10:45:35 +03:00
Samuel Newman d92036f2c5 Post controls update followup (#4276)
* rm legacy repost modal

* make repost button transparent

* reduce gap between post and ctrls

* remove old repost modal on web
2024-05-30 09:44:49 +03:00
Samuel Newman c4abaa1abc Use <Modal> for Composer (#3588)
* use <Modal> to display composer

* trigger `onPressCancel` on modal cancel

* remove android top padding

* use light statusbar on ios

* use KeyboardStickyView from r-n-keyboard-controller

* make extra bottom padding ios-only

* make cancelRef optional

* scope legacy modals

* don't change bg color on ios

* use fullScreen instead of formSheet

* adjust padding on keyboardaccessory to account for new buttons

* Revert "use KeyboardStickyView from r-n-keyboard-controller"

This reverts commit 426c812904.

* fix insets

* tweaks and merge

* revert 89f51c72

* nit

* import keyboard provider

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-30 05:44:20 +01:00
Samuel Newman fba4a9ca02 scale down FAB on press (#4259) 2024-05-30 05:36:07 +01:00
Paul Frazee e48f8e15eb Interpret 'hide' setting as ALWAYS hiding from thread replies (#4263) 2024-05-30 05:34:47 +01:00
Paul Frazee 5fe1e171f0 Improve the visual clarity of labels on profiles and posts (#4262)
* Update PostAlerts rendering to show the avi of the labeler rather than the display name; also add size variations

* Update ProfileHeaderAlerts to match PostAlerts behavior
2024-05-30 05:33:18 +01:00
Hailey 4cc55f05c2 Use a margin of -6 instead of -5 for PostCtrls 😵‍💫 (#4272)
* -6 instead of -5 😵‍💫

* same here
2024-05-30 04:37:45 +01:00
Hailey 9edb487949 Always show the header on post threads on native (#4254)
* always show header on native

* ALF ALF ALF

* rm offset for top border

* wrap in a `CenteredView`

* use `CenteredView`'s side borders

* account for loading state on web

* move `isTabletOrMobile`

* hide top border on first post in list

* show border if parents are loading

* don't show top border for deleted or blocked posts

* hide top border for hidden replies

* Rm root post top border

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-30 04:28:32 +01:00
Hailey 9628070e52 add prop to ListImpl for disabling content-visibility style (#4236)
* add prop to `ListImpl` for `content-visibility` style

* change to `disableContentVisibility`

* lint

* tweaks

* Keep the fix more general

* Clarify ambiguity

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-30 04:09:24 +01:00
Hailey eb6f44853d adjust notifications experiment by removing canAskAgain (#4271)
* adjust notifications experiment by removing `canAskAgain`

* move to `StepFinished` for after onboarding
2024-05-30 02:42:12 +01:00
Samuel Newman 165feedb86 Use ALF for post controls (#3400)
* alf the repost dropdown on web + import icons

* alf like icon

* convert other post controls

* add missing padding to share button

* refine buttons and use better icons

* revert buttonicon changes

* remove ButtonIcon and ButtonText from repost dialog

* use 15px font size when not big

* reduce size and use contrast_25

* add hover state to logged out view

* add `userSelect: 'none'` to buttons

* use width rather than height

* fix quote close behaviour

* prettier

* Fix Esc on repost

* Use new icons for placeholder

* Fix placeholder

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-30 01:25:11 +01:00
Mary 4d39ef2e19 fix: don't round up count, truncate (#4261) 2024-05-29 19:50:13 +01:00
Nick Manos 65ad16e394 Change Android's MainActivity launchMode to singleTop (#4255)
* Add build config plugin to set .MainActivity launchMode

* Change android:launchMode to standard

* Revert "Change android:launchMode to standard"

This reverts commit fddbc4e1b5.

* adjust

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-29 02:56:36 -07:00
Samuel Newman 33de856c32 match web version exports (#4257) 2024-05-29 12:00:15 +03:00
Hailey 613884a3d3 use xcode 15.3 (#4253)
* use xcode 15.3

* tweak cache update
2024-05-29 01:50:06 -07:00
Eiichi Yoshikawa 211eff3d32 Add statusBarTranslucent prop (= true) to KeyboardProvider in App.native.tsx (#4208) 2024-05-29 05:13:36 +01:00
Samuel Newman b59c8e22af Native translation expo module (#4098)
* translation expo module

* add `onClose` and `onReplacementAction`

* rm onReplacementAction

* make all props published

* make translation api available globally w/o wrapper (#4110)

* conditionally import the translation module

* only use native translation if language is probably supported

* open native translation via dropdown menu

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-28 21:08:46 -07:00
Hailey a60f9933d8 Enable navigation animations on Android, decrease animation speed (#4207)
* bump and rm patch

* use the better settings

* fix types

* remove animation duration

* try it with full screen

* thanks mozz - use `ios` only on android

* maybe a little duration

* slightly faster duration

* Revert "fix types"

This reverts commit d15d4b7a9b.

* Revert "bump and rm patch"

This reverts commit 571f85f9e5.

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-29 05:04:56 +01:00
dan ff6a044f66 Bump more Expo libs (#4251)
* Bump more Expo libs

* Use legacy camera API

* fix `expo-notifications` patch

* bump `menu`

* change patch name

* patch reanimated

* Revert "patch reanimated"

This reverts commit dad822d8ea.

* Use nightly reanimated

* Revert "Use nightly reanimated"

This reverts commit 6687c71828.

* Revert "Revert "patch reanimated""

This reverts commit c30abd6732.

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-29 05:02:49 +01:00
Paul Frazee efdfb7f57a Alt text followups -- SLIGHTLY larger, and update gifs (#4252)
* Bump up the alt text indicator's text size just a smidge

* Update the GIF alt indicator to match images (right side, visually smaller on mobile)
2024-05-29 04:58:40 +01:00
Hailey 19ee89caf3 upgrade react-native-svg to 15.3.0 (#4249) 2024-05-29 03:55:10 +01:00
Hailey eb0859bffb Fix hitSlop type (#4248) 2024-05-28 19:12:56 -07:00
Hailey 8f8af476cc Bump react-navigation (#4216)
* bump and rm patch

* fix types

* use `Home` default

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-29 02:38:52 +01:00
Hailey 888bec7b4f Upgrade to Expo 51 and React Native 0.74 (#3980)
* upgrade packages

* remove `expo-image-picker` patch

* remove old expo-updates patch

* rename rn patch

* downgrade crop picker

* bump `ExpoGifView` `SDWebImage` version

* apply config changes

* update build docs for apple silicon

* update build docs for apple silicon

* update expo-updates patch

* add back patch readme

* bump `expo-dev-client`

* bump `babel-preset`

* update `babel.config.js`

* update `react-native-paste-input` patch

* remove old ota updates hook

* update types

* update types

* downgrade pager-view

* update animated ref type

* fix web-only type

* update `react-native-bottom-sheet` `BottomSheetTextInput`

* add `expo-application` to jest mocks

* remove reanimated patch

* update notifications patch

* update reanimated path

* fix import

* update yarn.lock

* use `ItemT` instead of `any`

* expo bump

* Revert logic change, fix types

* Fix JSON file

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-29 02:15:35 +01:00
Hailey 5ceb440d4e use custom github action for fingerprinting (#4226)
* use custom github action for fingerprinting

* update pr workflow

* update names of workflows

* make a native change (testing)

* adjust the action

* Revert "make a native change (testing)"

This reverts commit 8db9835733.

* update bundle-deploy script

* test a prod build

* crazy depth

* manually set

* use prod default

* force prod

* revert test changes

* save cache after deploy

* revert testing
2024-05-28 16:38:24 -07:00
dan adbbded003 Remove old onboarding (#4224)
* Hardcode onboarding_v2 to true, rm dead code

* Rm initialState, use initialStateReduced

* Rm dead code

* Drop *reduced prefix in code

* Prettier
2024-05-28 16:56:06 +01:00
dan 9bd411c151 Replace getAgent() with reading agent (#4243)
* Replace getAgent() with agent

* Replace {agent} with agent
2024-05-28 16:37:51 +01:00
Hailey 8a2f43c218 Bump 1.85.0 (#4237) 2024-05-28 15:35:50 +01:00
Hailey 75e2c5487c bump iOS target to 14.0 (#4238) 2024-05-27 22:21:25 -07:00
Hailey af10d3acbb set onEndReachedThreshold to 2 for notifications (#4235) 2024-05-28 00:43:07 +01:00
Paul Frazee e6d26186a9 Run intl extract (#4217) 2024-05-24 13:48:16 -07:00
Takayuki KUSANO 642941f41d Updated Japanese translation (#4144)
* Updated Japanese translation

* Updated Japanese translation to resolve conflicts and updated msg

* Updated Japanese translation

ref. #4145

* changed the "Clip clop" translation

* Updated Japanese translation

* Updated Japanese translation

* Updated Japanese translation
2024-05-24 13:47:17 -07:00
Frudrax Cheng 96b5fecdb9 Updated Chinese translation (#4147)
* Update zh-TW to latest commit

* fixe p.p.  for "blocked"

* Update zh-TW to latest commit

* Update messages.po

* Remove superseded strings

* Clean zh-TW

* TW: Update messages.po

* TW: improve translation

Co-Authored-By: cirx <133132480+cirx1e@users.noreply.github.com>

* CN: extract

* Update zh-CN to latest commit

* TW: Update

* improve zh-CN translate

* BOTH: fix "Following {0}"

* CN: Update

* TW: Update

* BOTH: fix

msgid "You can continue ongoing conversations regardless of which setting you choose."

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-05-24 13:46:47 -07:00
Minseo Lee 350e936b8c Update Korean localization (#4148)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-05-24 13:45:56 -07:00
Ivan Beà 55b50e694d Update catalan messages.po (#4149)
* Update messages.po

New lines added, new lines localized.

Check it please @jordimas @darccio @surfdude29

* Update catalan messages.po

Corrections by @surfdude29

* Update messages.po

apply @jordimas corrections
2024-05-24 13:45:08 -07:00
kodebanget 735fead673 Update Indonesian translation (#4165)
* Update Indonesian translation

* Update messages.po

---------

Co-authored-by: Indonesian <github-actions@github.com>
2024-05-24 13:44:44 -07:00
Samuel Newman dc9d80d2a8 [🐴] update convo list from message bus (#4189)
* update convo list from message bus

* don't increase unread count if you're the sender

* add refetch interval back

* Fix deleted message state copy

* only enable if `hasSession`

* Fix logged out handling

* increase refetch interval to 60s

* request 10s interval when message screen active

* use useAppState hook for convo resume/background

* Combine forces

* fix useFocusEffect logic

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-24 13:59:28 -05:00
Eric Bailey c0175af76a Recover from initial failed firehose state (#4211) 2024-05-24 13:50:50 -05:00
Paul Frazee afab4d5129 Move ALT indicator right and shrink it a bit (#4213) 2024-05-24 11:24:20 -07:00
Eric Bailey 2897b79bef Make sure failed messages enter error state (#4210) 2024-05-24 10:01:30 -05:00
Hailey 85782aeb93 [🐴] Don't submit the message on return press when on a phone (web input) (#4203)
move this to the `onKeyDown` prop

Revert "do the same for tablets"

This reverts commit 47c709e2734f2acf34f89dd5aca42a75a2b56270.

do the same for tablets

don't submit message if the device is a phone on web

move `onTouchStart` to `browser.ts` globals
2024-05-23 19:45:50 -07:00
dan fa039e542d Include feedContext in DOM as data- (#4206) 2024-05-24 01:25:11 +01:00
Paul Frazee f7ee532a85 Improve moderation behaviors: show alert/inform sources and improve UX around threads (#3677)
* Dont show account or profile alerts and informs on posts

* Sort threads to put blurred items at bottom

* Group blurred replies under a single 'show hidden replies' control

* Distinguish between muted and hidden replies in the thread view

* Fix types

* Modify the label alerts with some minor aesthetic updates and to show the source of a label

* Tune when an account-level alert is shown on a post

* Revert: show account-level alerts on posts again

* Rm unused import

* Fix to showing hidden replies when viewing a blurred item

* Go ahead and uncover replies when 'show hidden posts' is clicked

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-05-24 00:39:39 +01:00
Samuel Newman d2c42cf169 Privileged app passwords (#4200)
* add checkbox to create privileged app password

* add indicator to privileged app pwds to list

* bump api

* oops missed the yarnlock

* adjust modal padding

* lowercase

* one more lowercase

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-23 16:10:13 -07:00
Eric Bailey 406993cf0e [🐴] Overfetch follow for default new dialog state (#4205) 2024-05-23 16:06:50 -07:00
Eric Bailey 9096655955 Reduce polling (#4204)
* Reduce polling a bit

* Bump to 60

* Increase all

* ok 3
2024-05-23 17:21:47 -05:00
Hailey 5c2e99e3e6 [🐴] Fix Firefox send button positioning (#4201)
* use `align_center`

* revert

* account for firefox textarea size differences

set to `38`

remove some extra stuff

equal height on all platforms

* use atom
2024-05-23 13:08:12 -07:00
Hailey af20229b41 Add bundleDate, bundleIdentifier to StatsigUser (#4199)
* record event for fetched ota update

* Revert "record event for fetched ota update"

This reverts commit 4b49efe036.

* add `bundleDate` to `StatsigUser`

* include `bundleIdentifier` too

* move to `custom`
2024-05-23 19:52:36 +01:00
Hailey 70f190d44f Remove getProfile calls when loading feed (#3881)
* remove unnecessary `getProfile()` calls from feed load

add comments

ensure only if first

simplify

nit

handle cases where the parent is removed

add a comment

remove unnecessary `getProfile()` calls from feed load

limit only to the first post in the returned items

move the logic out of the render and into the query

add the grandparent properly

update `FeedItem`

bump package

update `FeedItem`

update `post-feed` query

update `FeedSlice`

* nit

* simplify logic

* always pass `parentAuthor`

* oops!

* update `DebugMod`
2024-05-23 19:35:49 +01:00
Eric Bailey 6d647551cd Log error statuses from failed resume session calls (#4174)
* Add log to track how resume fails

* Use safe field name

* Better log

* Properly catch
2024-05-23 19:27:53 +01:00
Hailey e5fc0baa6a disable alt text auto focus on Android (#4198)
* disable alt text auto focus on Android

* revert timeout change
2024-05-23 11:04:20 -07:00
Samuel Newman 0e77280310 [🐴] add link to chat settings from main settings (#4197)
* add link to chat settings from main settings

* move to beneath saved feeds

weird ass diff on this commit lol
2024-05-23 18:57:23 +01:00
Hailey f924465899 ✍️ Add OTA Docs (#4187)
* add OTA documentation

* maybe will look better

* nits

* one more nit

* use the right image
2024-05-23 10:34:01 -07:00
Hailey 9900d32904 Decrease thickness of border on message input (#4196) 2024-05-23 10:17:50 -07:00
Samuel Newman b093e0b673 [🐴] better error message for "Bad token scope" error (#4194)
* better error message for "Bad token scope" error

* log -> sign
2024-05-23 18:05:30 +01:00
Hailey 5217876f24 Add padding to dialogs when keyboard is open on Android (#4182)
* add keyboard padding to android dialogs

* missing `keyboardDismissMode` for `ScrollableInner`

* add to `MutedWords`

* add to `LabelsOnMe`
2024-05-23 10:01:31 -07:00
Eric Bailey 3d1ed04a70 [🐴] Do not init event bus if no session (#4193)
* Do not init event bus if no session

* Be explicit

* Simplify, fix log
2024-05-23 12:00:56 -05:00
Samuel Newman 17e0cb62a8 stop line breaks for timeelapsed (#4191) 2024-05-23 17:55:27 +01:00
Eric Bailey 9011c11eaf Reduce polling when app is backgrounded (#4192) 2024-05-23 11:54:22 -05:00
Hailey d051614342 implement a safari hack for ime (#4186)
remove debug logs

use a better hack

implement a safari hack

extract `isSafari` and `isFirefox` to a global variable
2024-05-23 16:45:24 +01:00
Eric Bailey 2c6c906934 [🐴] Suspend event bus when switching accounts (#4190)
* Suspend event bus when switching accounts

* Make effect symmetrical
2024-05-23 10:08:37 -05:00
Hailey efdcfd09e6 Bump 1.84.0 (#4185) 2024-05-23 04:15:38 +01:00
Samuel Newman 334483ad9a [Embeds] stop adding tracking params to non-bsky.app links (#4167)
* don't add tracking params on non-bsky.app links

* validate facets
2024-05-23 03:52:46 +01:00
Hailey 69f4684859 Handle zero bottom inset on iOS (#4184)
* set message padding to a minimum of 60 and max of 70

* adjust range
2024-05-22 19:44:37 -07:00
Dan Abramov 8938fc87a0 [Session] Dispose of stale agents immediately 2024-05-23 03:35:25 +01:00
Dan Abramov acf1def6c1 [Session] Persist updates from inactive agent 2024-05-23 03:35:25 +01:00
Hailey 03655abb7c wrap web in disabled keyboard provider (#4176) 2024-05-22 14:19:47 -07:00
dan 0c2fb13516 [Temporary] Disable React Compiler lint rules (#4172) 2024-05-22 19:04:28 +01:00
lauren bf8db6172f Add React Compiler (#4161)
* Install babel-plugin-react-compiler

* Install eslint-plugin-react-compiler

* Add and configure react-compiler-runtime

React Compiler uses a small cache function from React 19 at runtime.
Until it's possible to use R19 on RN, this adds a userspace
implementation to polyfill the cache function

* Add eslint-plugin-react-compiler to config

* @lingui/macro should run as the first plugin

@lingui recommends running their `macro` plugin [first in the
pipeline](https://lingui.dev/ref/macro). Normally with the React
Compiler, the compiler plugin should run first as we want to see the
original code as it was written. However, this sometimes causes
conflicts with other babel plugins.

In this case, it looks like the @lingui/macro plugin does some very
light transformation that the compiler can still understand and compile
correctly, so let's run it first.

Before this commit, the compiler would cause the @lingui/macro plugin to
crash because it seems like it would strip off the `extra.raw` property
off of StringLiterals which was being used
[here](https://github.com/lingui/js-lingui/blob/1293412c5dcc565636403443788a5b5d4ca206c1/packages/macro/src/macroJsx.ts#L395).
I need to figure out why the compiler is doing that but for now this
works and should be a safe change unless there were specific reasons
the macro plugin was placed 2nd to last.
2024-05-22 18:46:45 +01:00
dan e6e7027d01 Cleanup gates (#4170)
* Unlaunch disable_poll_on_discover_v2

* Rm unused gates

* Unlaunch autoexpand_suggestions_on_profile_follow_v2

* Launch disable_min_shell_on_foregrounding_v3
2024-05-22 18:19:07 +01:00
Samuel Newman 3ca41e4efb [🐴] Invalidate list convos query on block (#4171)
* more memoization

* invalidate listconvos query on block
2024-05-22 18:14:15 +01:00
Eric Bailey b937372325 More retries when resuming non-stale account (#4156) 2024-05-22 11:34:21 -05:00
Samuel Newman 690926dd90 Add note to clarify "allow new messages from" setting (#4166) 2024-05-22 15:52:04 +01:00
Hailey 6522ee9bbf don't use contentVisibility on Firefox (#4164) 2024-05-22 14:07:07 +01:00
Eric Bailey 4b0e118844 Remove added radius, add to specific location (#4160) 2024-05-21 17:14:30 -05:00
Hailey cbfb69dd15 [🐴] Support Japanese (et al.) IME in message input on web (#4159)
* support japanese et al. IME

* update comment

* nit
2024-05-21 13:37:16 -07:00
Samuel Newman 866b0b9121 [🐴] Fix convo menu overlap (web) (#4153)
* add right padding to chatlistitem to avoid overlap

* reduce padding amount
2024-05-21 15:33:00 -05:00
Hailey 630b9b7786 check maxTouchPoints is greater than 1, not zero (#4158) 2024-05-21 20:18:56 +01:00
Samuel Newman 7334e9fd81 close loggedout view when logging in (#4154) 2024-05-21 12:49:46 -05:00
Samuel Newman e5a1472974 flip order (#4152) 2024-05-21 16:16:36 +01:00
Samuel Newman f06a6024e6 fix to negative top of component so it moves with container growth (#4151) 2024-05-21 16:16:27 +01:00
Hailey 1ec4e0a867 Make list end text customizable (#4145)
* only try to initialize once

* nit

* change to `You have reached the end`

* make the text at end of list customizable

* make the text at end of list customizable

* update intl
2024-05-20 21:04:19 -07:00
dan b89e4ded2f Only fallback to Discover if Following is first pinned (#4146) 2024-05-20 21:03:17 -07:00
dan d6625c29d1 [Statsig] Sample router events (#4143) 2024-05-20 20:28:12 -07:00
Hailey 8cec1679a7 [🐴] only try to initialize once in the NUX (#4142)
* only try to initialize once

* nit
2024-05-20 20:13:06 -07:00
Paul Frazee 184c65836b Run intl extract 2024-05-20 20:09:03 -07:00
Hailey 5bbb5f5806 use same visuals for notification sounds setting as the allow messages from (#4141) 2024-05-20 20:08:29 -07:00
Eric Bailey 8be65a8790 Add convoId as key to Convo wrapper (#4140) 2024-05-20 21:59:55 -05:00
Paul Frazee 6b6a002b0a Run intl extract 2024-05-20 19:52:04 -07:00
Paul Frazee cb4045d2be Switch to a more visually obvious button for the threadgate (#4139)
* Switch to a more visually obvious button for the threadgate

* Move threadgate button into the keyboard-sticky area

* Fix keyboard offset
2024-05-20 19:51:34 -07:00
Eric Bailey 6cc040a94e [🐴] Add end of list text, fix threshold (#4138)
* Add end of list text

* onEndReachedThreshold
2024-05-20 21:42:49 -05:00
Eric Bailey ad2d84fb05 Fix button size on labeler (#4137)
* Fix button size

* Fix mobile
2024-05-20 21:04:27 -05:00
Pokai Chang 87fa501433 expand the background color to cover the overscroll area on settings screen (#4101) 2024-05-21 02:28:18 +01:00
Paul Frazee aa34d6b4d2 Release 1.83 (#4136)
* Test fixes

* Run intl:extract
2024-05-20 18:23:41 -07:00
Hailey a7c2370680 [🐴] set layout height in onLayout (#4135)
* set layout height in `onLayout`

* keep setting it in `onScroll` too
2024-05-20 18:03:53 -07:00
Pokai Chang cadc33c625 Fix laggy scrolling on mobile app's home screen, etc. (#4108)
* Improve scrolling performance for List

* Update List.tsx

* Apply same fix to profile labels

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-05-21 01:41:12 +01:00
Samuel Newman 4a7436886d remove DMs gate (#4112) 2024-05-20 19:29:22 -05:00
Eric Bailey a7b0242cc8 [🐴] Empty chat prompt (#4132)
* Add empty chat pill

* Tweak padding

* move to `components`, place inside `KeyboardStickyView`

* cleanup unused vars

* add a new animation type

* (unrelated) add haptic to long press

* adjust shrink and pop

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-20 16:56:44 -07:00
Eric Bailey 6dde487563 [🐴] Prevent flash upon first message (#4133)
* Prevent flash upon first message

* set `hasScrolled` to true when sending a message if it isn't already true

* revert other change

* lint

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-20 16:29:16 -07:00
dan 4fa92d7a49 [Statsig] Fix exposure logging for reduced onboarding (#4131)
* Add dangerouslyDisableExposureLogging option

* Rename onboarding gate to v2

* Disable exposure logging for onboarding in PostFeed query
2024-05-21 00:17:57 +01:00
Hailey 516eb69637 [🐴] Add new chat metrics (#4130)
* remove a comment

* add types for event, add log to profile button

* add `chat:open`

* add to chat list items

* fix types

* oops

* oops 2.0
2024-05-20 15:26:05 -07:00
Eric Bailey 22522090c2 Ensure deleted chats don't count towards unread (#4129) 2024-05-20 17:19:01 -05:00
Eric Bailey e98bf6521b [🐴 Tweak appeal button styles (#4128)
* Tweak styles

* Tweak copy
2024-05-20 16:41:03 -05:00
Samuel Newman d3d2dc8ad4 [🐴] Appeal form for disabled DMs (#4126)
* add appeal dialog

* use useMutation for the labels on me dialog

* replace text button with small button
2024-05-20 22:23:36 +01:00
Samuel Newman e5aa8c081a in-convo muted chat indicator (#4127) 2024-05-20 22:16:53 +01:00
Eric Bailey 70019e73ef Some styling of empty list chats states (#4124) 2024-05-20 16:16:46 -05:00
Eric Bailey 31a716d256 [🐴] Handle deleted accounts, restructure ChatListItem (#4114)
* Handle deleted accounts, restructure ChatListItem

* Remove triggerOpacity option

* account for handle change in screen reader

* simplify the check

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-20 16:16:29 -05:00
Eric Bailey becf373edb Maybe? (#4125) 2024-05-20 14:06:29 -07:00
Stanislas Signoud aa7c3130db Update French localization (#4113)
* Extract new strings to translate in French

* Translate new strings into French
2024-05-20 13:22:11 -07:00
Takayuki KUSANO 8194e07092 Update Japanese translations (#3886)
* Update Japanese translations

* Updated as PR on Plural is merged (#3882)
* Feedback API (#3498)

etc.

* Improve localization marks (#3285)

* Update Lightbox.tsx

* Change strings for easier localization

* Update DeleteAccount.tsx

* Update LabelsOnMeDialog.tsx

* Update FeedCard.tsx

* Update index.tsx

* Update LabelsOnMeDialog.tsx

* Update index.tsx

* Update FeedCard.tsx

* Update SelfLabel.tsx

* Update Hashtag.tsx

* Update index.tsx

* Update Hashtag.tsx

* Update ChangeHandle.tsx

* Update index.web.tsx

* Update index.web.tsx

* Update index.tsx

* Remove unnecessary `<Trans>` tags

* Update Drawer.tsx

* Finnish translation update (#3755)

* Update messages.po

Translated new strings (GIF's etc) and cleaned up deprecated ones.

* Update messages.po

resolve conflict

* Update messages.po

removed double quotes. Thanks @lapanti

* fix bad bool check in action (#3885)

* fix bad bool check in action

* add `fetch-depth` so we can get the commit hash

* `.env` should be in `.easignore` 🙃

* Updated to follow #3285 etc.

* The translation of 'place' and 'apply' of labels has been unified into '適用する'.

* Fix translation of "repost"

* Updated

* Updated Japanese translation

* Updated Japanese translation

- #3816

* Fixed translations

* Updated translation : #3995

* Updated Japanese translation

* Updated Japanese translation (ref. #3962 #4028)

* Updated Japanese translation

* Updated Japanese translation

* Updated Japanese translation

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
Co-authored-by: Jan-Olof Eriksson <jan-olof.eriksson@iki.fi>
Co-authored-by: Hailey <me@haileyok.com>
2024-05-20 13:21:21 -07:00
Gildásio Filho 37739e817b Update pt-BR localization to latest version (#4009)
* Update messages.po

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

---------

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
2024-05-20 13:20:29 -07:00
Frudrax Cheng 6fba4143b4 Update zh-CN translations (#3932)
* remove superseded strings

* update messages.po

* fix typo

* remove messages.mo

* Simplify plural strings

* Correct some translations

* Correct some translations#2

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* fixed typo

* normalize string

* re-translated camera roll

* re-translated library

* remove .mo

* run intl:extract & update messages.po

* remove superseded strings

* update messages.po

* update messages.po

* adjust following feed translations

* adjusted feed translations

* adjusted following feed settings translations

* adjusted following feed settings translations#2

* Update messages.po

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>

* Update messages.po

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>

* Update messages.po

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* update messages.po

* update header information

* reverse some translations

* update messages.po

* fix removed translation

* run intl:extract

* update messages.po

* remove superseded strings

* translate 'People I Follow'

* make more localizable

* Fix special case "WhoCanReply"

* Update messages.po

* remove extraneous blank line

* remove duplicate 'click'

* update messages.po

* update messages.po

* update messages.po

* update messages.po

* update messages.po

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-05-20 13:19:59 -07:00
Kuwa Lee 2df0919e2d Update zh-TW translations (#4025)
* Update new strings to 1.82

* finalize 1.82 zh-TW

* Clean unused string

* zh-TW daily update

* zh-TW daily update

* unify "unblock" for "解除封鎖"

* Update messages.po

* Update zh-TW new strings

* Update messages.po

* fix typo

* Fix special case "WhoCanReply"

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update "Adjust the number of likes a reply must have to be shown in your feed."

* Update messages.po

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update latest commit sttrings

+ 3 new strings

* Update latest commit strings

* Update strings to latest commit

* Fix special case "WhoCanReply" again

* Explicitly description for "Graphic Media"

* small improve

* Update strings to latest commit

+21

* Small improve

* Update messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* fix "WhoCanReply" , and update

---------

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-05-20 13:19:14 -07:00
Minseo Lee b524d5409b Update Korean localization (#4030)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-05-20 13:18:32 -07:00
Ivan Beà 7cc3e958c8 Update catalan messages.po (#4079)
* Update catalan messages.po

New lines added, new lines localized.

Check it please @jordimas @darccio @surfdude29

* Update messages.po

apply @surfdude29 correction

* Update messages.po

Apply @jordimas corrections
2024-05-20 13:18:02 -07:00
Brodie 76be48b1a1 Update Spanish Localization (#4105) 2024-05-20 13:15:01 -07:00
Eric Bailey fe15e9df26 Allow removal of feeds that fail to load (#4121) 2024-05-20 13:04:33 -07:00
Hailey 52a885ad19 [🐴] Make message input layout resizing synchronous (#4123)
* make input resizing synchronous

* remove a log

* make scroll enable/disable sync

* lint

* start as undefined
2024-05-20 13:01:21 -07:00
Hailey 994af1454f [🐴] Adjust content height whenever the emoji picker keyboard is opened or closed (#4120)
* properly resize whenever the emoji keyboard is opened

* properly resize whenever the emoji keyboard is opened
2024-05-20 12:53:15 -07:00
Eric Bailey 5771ff4b56 Conditionally set chat declaration (#4122) 2024-05-20 14:41:24 -05:00
Eric Bailey f52db843ad [🐴] Fix load state for disabled chats (#4119) 2024-05-20 12:17:26 -07:00
Eric Bailey 3356bcfba6 Bump api sdk (#4118) 2024-05-20 14:00:37 -05:00
Eric Bailey d0bfe703d9 [🐴] Switch back to encouraging users to report messages (#4117)
* Swap prompt back in

* Remove unused convoAccount affordances
2024-05-20 13:49:20 -05:00
Samuel Newman cc7a0da1a2 convo button skeleton (#4115) 2024-05-20 19:44:50 +01:00
Hailey 492216a584 [🐴] Screenreader accessibility actions for individual chat items (#4116)
* add accessibility tap to messages

* add a label for the accessibility action

* improve accessibility actions on chat list items

* adjust types

* more consistent wording

* make the strings localizable
2024-05-20 11:36:08 -07:00
Samuel Newman 24f8794d4d [🐴] DM button on profile (#4097)
* add profile button

* separate out button to component

* normalise subscribe to labeller button size

* infinite staletime

* use Link rather than Button and change icon

* adjust icon position
2024-05-20 17:18:56 +01:00
Eric Bailey 2414559b80 [🐴] Don't retry sends (#4111)
* Don't retry sends

* Don't retry batch sends
2024-05-20 09:56:57 -05:00
Hailey 52beb29a0d [🐴] Fully implement keyboard controller (#4106)
* Revert "[🐴] Ensure keyboard gets dismissed when leaving screen (#4104)"

This reverts commit 3ca671d9aa.

* getting somewhere

* remove some now nuneeded code

* fully implement keyboard controller

* onStartReached check

* fix new messages pill alignment

* scroll to end on press

* simplify pill scroll logic

* update comment

* adjust logic on when to hide the pill

* fix backgrounding jank

* improve look of deleting messages

* add double tap on messages

* better onStartReached logic

* nit

* add hit slop to the gesture

* better gestures for press and hold

* nits
2024-05-19 19:25:49 -07:00
Eric Bailey 7de0b0a58c [🐴] Convo agent cleanup (#4109)
* Move comment, remove unused code

* Clean up sending

* Remove temp hack

* Remove debug
2024-05-19 18:52:51 -05:00
Hailey 3ca671d9aa [🐴] Ensure keyboard gets dismissed when leaving screen (#4104) 2024-05-18 18:25:42 -07:00
Samuel Newman cb7ce1d22e disable min shell on convo screen (#4103) 2024-05-19 02:14:04 +01:00
Hailey 1ac13abf4d [🐴] Minor nits (#4102)
* set a better size for `initialNumToRender`

* memo list items

* scroll to end on both platforms

* rev
2024-05-18 16:45:46 -07:00
Hailey 5343910570 [🐴] 🤞 This should be the final message list change - Use dispatchCommand so we don't need to know the content height (#4090)
* handle keyboard scroll more elegantly

simplify

missing `runOnUI`

better naming to avoid confusion

nit

remove unused function

use `dispatchCommand` in `onContentSizeChanged` as well

use `dispatchCommand` so we don't need to know the content height

remove `isMomentumScrolling`

* better timing

* nit

* another nit

* handle message input resizes better too

* account for other size changes like emoji keyboard opening

* one last nit

* just adding comments

* account for dragging

* make it easier to read

* add a comment

* 🤦‍♀️

* remove a little bit of that padding at the top
2024-05-18 12:29:23 -07:00
Hailey 2eaecfcaa4 [🐴] Reset screen when pressing a DM notification while already in the conversation screen (#4091)
* add a small comment

* reset if current screen
2024-05-18 12:23:24 -07:00
Hailey d2c81c9d3d Disable badge incrementing for DMs (#4088)
* disable badge increments for dms

* revert decrementing in js for dms

* reset badge on read notifications

* remove some other code

* prevent duplicate notification events
2024-05-17 16:05:32 -07:00
Eric Bailey 49314e2d1f [🐴] Mod disabled (#4089)
* Handle send failures

* Add chat disabled state
2024-05-17 16:05:21 -07:00
Eric Bailey 8b3bfb3cf7 Make generic convo report dialog (#4085) 2024-05-17 17:56:58 -05:00
Eric Bailey 1cdcb3e6c3 [🐴] New chat dialog refresh (#4071)
* Checkpoint, header styled, empty

* Checkpoint, styles

* Show recent follows in initial state, finesse some styles

* Add skeleton

* Add some limits

* Fix autofocus on web, use bottom sheet input on native

* Ignore type

* Clean up edits

* Format

* Tweak icon placement

* Fix type

* use prop for dismissing keyboard

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-17 15:03:50 -07:00
Hailey d02e0884c4 [🐴] Block Info (#4068)
* get the damn thing in there 😮‍💨

* more cleanup and little fixes

another nit

nit

small annoyance

add a comment

only use `scrollTo` when necessary

remove now unnecessary styles

* move padding out

* add unblock function

* rm need for moderationpts

* ?

* ??

* extract leaveconvoprompt

* move `setHasScrolled` to `onContentSizeChanged`

* account for block footer

* wrap up

nit

make sure recipient is loaded before showing

refactor to hide chat input

typo squigglie

add report dialog

finalize delete

implement custom animation

add configurable replace animation

add leave convo to block options

* correct functionality for report

* moev component to another file

* maybe...

* fix chat item

* improve

* remove unused gtmobile

* nit

* more cleanup

* more cleanup

* fix merge

* fix header

* few more changes

* nit

* remove old
2024-05-17 16:21:15 -05:00
Eric Bailey 1b47ea7367 Set chat declaration upon signup (#4084) 2024-05-17 15:38:47 -05:00
Samuel Newman cef243bcf4 [🐴] delete chat service account on account delete (#4056)
* delete chat service account on account delete

* Add proxy header

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-17 14:53:51 -05:00
Samuel Newman f42f7fa035 [🐴] don't include blocked convos in unread count (#4082)
* don't include blocked convos in unread count

* Use moderateProfile

* Handle blocked state in chat list

* Fix logic formatting, add todo

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-17 14:46:01 -05:00
Samuel Newman dd0f57e3e3 [🐴] NUX (#4062)
* remove type assertion

* DMs NUX

* delete button for testing

* tweak styles and copy

* rm log

* style tweaks

* reduce amount of words

* Fix not showing on first load

* Spacing tweaks

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-17 14:24:06 -05:00
Samuel Newman 115041f4bf [🐴] Reduce header size (#4078)
* make text input container smaller

* make header much smaller

* improve web styling
2024-05-17 14:17:59 -05:00
Hailey 5e312d5f3a [🐴] Don't always show notification for everything (#4083)
* don't always show a notification

* nit
2024-05-17 09:23:46 -07:00
Hailey dd4c8d8e4f [🐴] Additional tweaks to the message list (#4075)
* more cleanup and little fixes

another nit

nit

small annoyance

add a comment

only use `scrollTo` when necessary

remove now unnecessary styles

* move `setHasScrolled` to `onContentSizeChanged`

* account for block footer
2024-05-17 08:21:35 -07:00
Eric Bailey 829f6a9e64 Conditionally load unreads (#4072) 2024-05-16 20:13:55 -05:00
Eric Bailey 0444e69c35 Revert "Aggregate quickly-sent messages into batches (#4061)" (#4069)
This reverts commit d424945eed.
2024-05-16 19:51:26 -05:00
Eric Bailey 1ff15b47f4 100% Real Deal™ (#4070) 2024-05-16 19:51:20 -05:00
Hailey 808511617d [🐴] 60 FPS Keyboard (#4066)
* use `scrollTo`

* let the animated reaction handle keyboard scroll

* no need for `requestAnimationFrame` now

* 'worklet'

* nit

* fixes

* more nits

* bool check
2024-05-16 17:12:41 -07:00
Eric Bailey eb1428b1d8 Fix delete message error (#4065) 2024-05-16 19:08:04 -05:00
Eric Bailey d424945eed Aggregate quickly-sent messages into batches (#4061) 2024-05-16 16:39:05 -05:00
Hailey a84a14d084 [🐴] Input hover and focus styles (#4064)
* styles for native input

* web focus/hover

* nit
2024-05-16 14:23:02 -07:00
Hailey ba068c8934 fix typo (#4060) 2024-05-16 16:16:51 -05:00
Eric Bailey 0c6af4fc6e Fix error styles (#4063) 2024-05-16 16:16:28 -05:00
Eric Bailey 449f16b7c5 Reset leave chat optimistic update if fails (#4058) 2024-05-16 15:52:53 -05:00
Hailey 5e5716c0a8 don't show individual labels on own profile, only "have been placed..." (#4057) 2024-05-16 13:22:04 -07:00
Eric Bailey 3a8baba129 [🐴] Tweak header styles (#4053)
* Tweak desktop header styles

* Tweak mobile

* Bump icon size

* Remove unused else
2024-05-16 15:19:35 -05:00
Hailey 72550df0e2 Properly update badge for other unread notifications (#4052)
* decrement badge count for chats

* handle decrement in `useMarkAsRead`

* remove async

* remove setting badge count

* oops

* update the number correctly

* nit
2024-05-16 12:21:29 -07:00
Hailey 5e8650a204 [🐴] Decrement app badge when opening unread chat (#4040)
* decrement badge count for chats

* handle decrement in `useMarkAsRead`

* remove async

* oops
2024-05-16 12:15:35 -07:00
Eric Bailey 4bceabc21c [🐴] Error recovery (#4036)
* Handle block state when sending messages

* Handle different pending failures

* Use existing profile data to handle blocks

* Better cleanup, leave room for more

* Attempt recover upon next send

* Reset pending failure

* Capture unexpected error

* Gracefully handle network errors and recovery

* Re-align error components and types

* Include history fetching in recoverable states
2024-05-16 14:01:39 -05:00
Hailey dff6bd7c65 [🐴] infinite stale time (#4051) 2024-05-16 11:58:45 -07:00
Hailey ef0ce951e7 [🐴] Only scroll down one "screen" in height when foregrounding (#4027)
* maintain position after foreground

* one possibility

* don't overscroll when content size changes.

* ignore the rule on 1 item

* fix

* [🐴] Pill for additional unreads when coming from background (#4043)

* create a pill with some animatons

* add some basic styles to the pill

* make the animations reusable

* bit better styling

* rm logs

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* import

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-05-16 10:40:12 -07:00
Hailey b15b49a48f [🐴] Remove keyboard controller lib (#4038)
* remove library

* implement using just reanimated

* always return false for `keyboardIsOpening` on web

* undo comment

* handle input focus scroll more elegantly

* add back minimal shell toggle on mobile web

* adjust initialnumtorender

* oops

* nit
2024-05-16 09:32:10 -07:00
Samuel Newman da2bdf5d6f [🐴] use Toggle component in settings screen (#4048)
* use Toggle component

* nits + notifs sounds native only
2024-05-16 16:57:07 +01:00
Hailey d639c40e17 [🐴] Tweak padding of web input (#4033)
* tweak more

* nit
2024-05-16 08:52:53 -07:00
Eric Bailey 98af0e8678 Handle failed resumeSession case when switching accounts (#4047) 2024-05-16 10:46:20 -05:00
Hailey 400c269330 [🐴] Copy tweaks (#4042)
* `notifications` -> `conversation`

* `users` -> `people`

* `other participants` -> `the other participant`

* rename
2024-05-16 08:37:04 -07:00
Hailey b635d000b5 [🐴] Disable hover card when blocked or blocking (#4041) 2024-05-16 08:17:34 -07:00
Hailey 9499d4343d [🐴] A few tweaks to message input on native (#4035)
* tweaks

* only apply the padding on ios

* use a hitslop of 10 instead

* version bump
2024-05-16 08:09:14 -07:00
Samuel Newman aded49f65b Implement prefersReducedMotion on native (#4039)
* implement prefersReducedMotion on native

* just take the function from the reanimated source

* use patch-package to export internal function
2024-05-16 12:01:26 +01:00
Eric Bailey 3674c8abce Remove error for refresh, not necessary (#4034) 2024-05-15 15:32:40 -05:00
Hailey bf7b66d5c1 Add push notification extensions (#4005)
* add wav

* add sound to config

* add extension to `updateExtensions.sh`

* add ios source files

* add a build extension

* add a new module

* use correct type on ios

* update the build plugin

* add android handler

* create a patch for expo-notifications

* basic android implementation

* add entitlements for notifications extension

* add some generic logic for ios

* add age check logic

* add extension to app config

* remove dash

* move directory

* rename again

* update privacy manifest

* add prefs storage ios

* better types

* create interface for setting and getting prefs

* add notifications prefs for android

* add functions to module

* add types to js

* add prefs context

* add web stub

* wrap the app

* fix types

* more preferences for ios

* add a test toggle

* swap vars

* update patch

* fix patch error

* fix typo

* sigh

* sigh

* get stored prefs on launch

* anotehr type

* simplify

* about finished

* comment

* adjust plugin

* use supported file types

* update NSE

* futureproof ios

* futureproof android

* update sound file name

* handle initialization

* more cleanup

* update js types

* strict js types

* set the notification channel

* rm

* add silent channel

* add mute logic

* update patch

* podfile

* adjust channels

* fix android channel

* update readme

* oreo or higher

* nit

* don't use getValue

* nit
2024-05-15 11:49:07 -07:00
Hailey 31868b255f [🐴] Tweak list on mobile web (#3958)
* mobile web tweaks chat screen

* revert a change

* remove unnecessary prop

* Spacing tweaks

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-15 09:50:16 -07:00
Eric Bailey 04aea93192 [🐴] Better retry styling (#4032)
* Pass whole object to MessageItem for clarity

* Add retry to pending-message

* Style send failure, retry

* Group pending messages

* Remove todos

* Fix types with fake message
2024-05-15 11:45:18 -05:00
Samuel Newman ed8922281a [🐴] Show if user can be messaged in new chat search (#4021)
* show if user can be messaged

* allow 2 lines in handle field due to new text

* cannot -> can't

* rework canBeMessaged logic and move to new file

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-15 16:05:17 +01:00
Minseo Lee 2121b5f86f Make more localizable (#3962)
* Update ProfileList.tsx

* Update NoFollowingFeed.tsx

* Update LabelsOnMeDialog.tsx

* Update LabelsOnMeDialog.tsx

* Update NoFollowingFeed.tsx

* Update SavedFeeds.tsx

* Revert "Update SavedFeeds.tsx"

This reverts commit db128eb27d.
2024-05-14 22:44:59 -07:00
Hailey a90cc1c030 [🐴] change Follows Only to People I Follow (#4028) 2024-05-14 19:58:56 -07:00
Eric Bailey 6382fec732 Reset after 5 min (#4026) 2024-05-14 21:21:09 -05:00
Eric Bailey 6efe90a5f5 [🐴] Block states, read only (#4022)
* Refactor ChatListItem for mod state

* Refactor Conversation Header for mod state

* Invalidate query for list when blocking/unblocking

* Remove unused prop, restore border

* Add mutations, hook up profile shadow to list query, use shadow-aware query for convo (#4024)
2024-05-14 20:07:53 -05:00
Hailey d390db0fa2 [🐴]Add DM push notification sound (#4000)
* add wav

* add sound to config
2024-05-14 18:02:57 -07:00
Samuel Newman 0e04b19627 remove serviceurl gate (#4019) 2024-05-14 21:19:22 +01:00
Samuel Newman ebc7571368 reword subtitle (#4017) 2024-05-14 21:18:54 +01:00
Hailey e1ed4a4429 [🐴] show deleted account for missing.invalid (#4014)
* show deleted account for `missing.invalid`

* sigh
2024-05-14 11:42:54 -07:00
Samuel Newman 08836ecbec [🐴] use "Chats" instead of "Messages" (#4013)
* use "Chats" instead of "Messages"

* chats to chat

* use messages in the header
2024-05-14 19:18:08 +01:00
Samuel Newman 6b2635c870 100vh settings screen (#4015) 2024-05-14 19:17:53 +01:00
Paul Frazee 03da056513 Run intl extract (#4016) 2024-05-14 11:15:27 -07:00
Samuel Newman 5af61ca4e4 [🐴] Settings screen (#3830)
* create settings screen + api

* update api package

* use putrecord API with validate false

* create new RadioGroup component
2024-05-14 18:57:16 +01:00
Samuel Newman 9861494e34 [🐴] Message drafts (#3993)
* drafts

* don't throw if no convo ID

* Remove labs package

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-14 18:55:43 +01:00
Minseo Lee f147256fdc Update Korean localization (#3887)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update src/locale/locales/ko/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update src/locale/locales/ko/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update src/locale/locales/ko/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update src/locale/locales/ko/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update messages.po

* Update src/locale/locales/ko/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Update messages.po

* Update messages.po

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
2024-05-14 10:51:13 -07:00
Ivan Beà d515985fdd Update catalan messages.po (#3984)
* Update catalan messages.po

New lines update
You can check it @jordimas @darccio @ferranrego @MiquelAdell @johnnydement @surfdude29

* Update messages.po

apply @surfdude29 corrections
2024-05-14 10:48:47 -07:00
Eric Bailey d7f1b2a5df Fix dep (#4011) 2024-05-14 12:20:12 -05:00
Eric Bailey 1c51a48764 [🐴] Make status checks easier, fix load state (#4010)
* Make status checks easier, fix load state

* Make naming more clear

* Split up types for easier re-use

* Replace hacky usage
2024-05-14 11:59:53 -05:00
Samuel Newman bffb9b5906 [🐴] Chat muted state (#3988)
* separate out chatlistitem and add muted icon

* move bell icon to the right of the timeelapsed
2024-05-14 17:41:20 +01:00
Eric Bailey 9173be686c [🐴] Swap in new package, update usages (#3992)
* Swap in new package, update usages

* Remove uneccessary patch

* Override type in safe place
2024-05-14 09:22:09 -05:00
Paul Frazee 107760d551 Add better onboard testing (#4007) 2024-05-13 20:23:31 -07:00
Hailey fd704bfd44 add a Login notifications request (#4006) 2024-05-13 19:51:12 -07:00
Hailey fce65b74ff align the trash icon in the center in feed edit list (#4004)
* align the trash icon in the center

* align_center instead of align_start
2024-05-13 18:26:58 -07:00
Paul Frazee 0776cd99e5 Make feeds easier to reorder (#3998)
* Make feeds easier to reorder

* Add reorder e2e test

* Tweak feed card to only allow one line (#4002)

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-13 15:56:48 -07:00
Eric Bailey 95514e3af7 [Reduced Onboarding] Fix forward/backward nav with profile step (#3997)
* WIP

* Fix forward-backward to profile step

* [Reduced Onboarding] Add avatar metric (#3999)

* Add prop to finished event

* Fix type

* Use separate event
2024-05-13 16:54:12 -05:00
Eric Bailey 9980012021 Gate base following feed usage (#3994) 2024-05-13 16:54:03 -05:00
Samuel Newman 5d92ac2ce3 dont send message if >1000 graphemes (#3995) 2024-05-13 22:36:56 +01:00
Paul Frazee 27bb73c701 New onboarding tests (#3996)
* Add onboarding test

* Add onboarding avatar-creator test

* Update profile screen edit test
2024-05-13 14:20:27 -07:00
Eric Bailey f0cd8ab6f4 Swap in base following (#3991) 2024-05-13 12:44:21 -07:00
Eric Bailey 10919319bf Remove profile step from old onboarding (#3989) 2024-05-13 13:15:38 -05:00
Hailey 8e1541e0a5 actually register token on permissions change (#3990)
* actually register token on permissions change

* actually register token on permissions change

* get updated permissions every time

* remove all usages of `usePermissions`

* skip perms check on granted result from request
2024-05-13 11:11:35 -07:00
Hailey d3406c89cf Move request for notifications permissions to HomeReadyScreen (#3977)
* cleanup the current logic

* add statsig logs

* implement requests for permissions where needed

* oops

* let `addPushTokenListener` handle the token registration

* place new log event type with the other `notifications` type

* place registration next to handler

* more organization

* only call `gate()` if permission is not yet granted

* be more specific to prevent gate pollution

* nit

* make `token` non-optional in `registerToken`

* remove `prevDid`, move `registerPushToken` into `useEffect`

* keep it outside actually

* nit
2024-05-13 09:19:35 -07:00
Matthieu Sieben 63b38b413d fix wording in french onboarding (#3987) 2024-05-13 09:19:21 -07:00
Hailey e02cae2acd Fix overflowing text on web and iOS in PostMeta (#3982)
* `flexShrink` on iOS and web

`flexShrink` on iOS and web

`flexShrink` on iOS and web

actually, `flexShrink`

use `flex`

* adjust web

* `expect-error` `onMouseUp`

* ignore ref type check
2024-05-13 08:49:54 -07:00
Paul Frazee d49b93dc7e Replace e2e tests with Maestro (#3983)
* Setup maestro tests and convert some initial tests

* Remove detox

* Replace all tests with maestro
2024-05-13 08:43:13 -07:00
Hailey 5cd4ac3a34 get a little more accurate with month length (#3981)
* get a little more accurate with month length

* create some wiggle room, create some specific tests

* update more tests
2024-05-13 08:39:34 -07:00
Hailey 73d094c67e Delete the entire temporary directory instead of just the temp file, also use cacheDirectory over documentDirectory (#3985)
* lint

* remove extra arg
2024-05-13 02:10:29 -07:00
Matthieu Sieben 00a57df5b1 Fix "Download CAR file" on mobile (#3816)
* download CAR file using AtpAgent instead of building URL

* add loader icon on download car button

* actually save to disk on android

* style nits

* bottom margin nit

* localize toast

* remove fallback so back button works correctly

* keep throwing an error if mime type isn't used

* be more explicit with toasts

* send errors to sentry when encountered

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-12 14:18:42 -07:00
dan 4458b03173 FeedFeedback fixes (#3968)
* Lower seen threshold to 1.5s

* Send feedContext for replies

* Use a simpler and more reliable feedContext fallback

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-05-12 10:30:00 -07:00
Hailey 97750c4aab Show "label has been placed..." even for self-labels (#3874)
* show labels placed on your content even if it's a self-label

even friendlier wording

friendlier wording

remove unnecessary `export`

temp revert reordering

show labels placed on your content even if it's a self-label

* Bump api 0.12.9

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-05-11 15:07:50 -07:00
dan 08462375ca Fix flashes when replacing For You (#3967)
* Fix flashes when replacing For You

* Switch to Discover if pinned after removing
2024-05-11 20:35:08 +01:00
dan 51b4b22dec Onboarding fixes (#3966)
* Ensure prefs are up-to-date before leaving onboarding

* Parallelize upsertProfile call

* Don't upsertProfile if no image

* Don't waterfall blob upload

* Fix useProfileUpdateMutation to parallelize uploads

* Invalidate user profile before leaving onboarding

* Ungate setting the pic
2024-05-11 19:54:58 +01:00
Paul Frazee 6f5b551bda Add shutdown message to for you feed (#3776) 2024-05-11 05:57:21 +01:00
Hailey d0440d087e bump (#3961) 2024-05-11 05:44:17 +01:00
Eric Bailey 4e37e2f59b [Reduced Onboarding] Add profile step (#3933)
* Onboarding avatar creator or upload (#2860)

* add screen to onboarding flow

* update base

* add icon

* fix icon

* fix after merge

* create flatlist

* add emoji list

* add state context, pressables

* select/update

* add camera icon

* add photo selection button

* image selection

* cleanup

* add most needed icons

* fix icon naming

* add icons

* export path strings for emoji

* canvas drawing for web

* types

* move breakpoints to individual steps

* create canvas

* canvas working 🎉

* update state

* it works!

* working on both platforms

* remove comments

* remove log

* remove unused web canvas

* animate picture selection/removal

* compress images on web correctly

* add times icon

* scrollable horizontal flatlist on web

* prefetch

* adjustments

* add more assets

* remove unused smiles

* add all the icons

* adjust color options

* animate grow/shrink selections

* change layout on tablet/desktop

* better web layout

* fix path

* adjust web layout

* organize

* organize imports and cleanup styles

* make generated images smaller

* implement design changes

use row for buttons on web

use RNGH FlatList

random color at start

improve logic

update dialog for web

update dialog style on mobile

some more progress

create dialog

simplify context

start implementing design

* rm change

* cleanup imports

* trigger a pr label

* Formatting

---------

Co-authored-by: Eric Bailey <git@esb.lol>
(cherry picked from commit 087186e386)

* UI tweaks

* Revert layout change

* Gate avi upload

* Support returning to profile step

* Add Statsig

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-11 05:37:23 +01:00
Eric Bailey 80ce6f980e [Reduced Onboarding] Add new step, new state to reducer (#3931)
* Add new step, new state to reducer

* Don't set default feeds
2024-05-11 05:19:16 +01:00
Eric Bailey 08979f37e7 Movable following feed (#3593)
* Handle home algo with backwards compat

* Remove todo, fix pwi view

* Simplify filter logic

* Handle edge case

* Handle home algo in FeedSourceCard

* Fix handling of pinned feed if home algo is disabled

* Handle home algo on ProfileFeed screen

* Rename

* Fix pinned feeds key

* Improve perf of pinned feeds with primary algo

* Update statsig API

* Revert unneeded changes

* Support following feed as well

* Better formatting

* Clarify primary algo usage

* Better comment

* Handle saved feed screen edge case

* Restore Feeds sparkle, fix line height

* Move gate call down

* Filter out primary algo from feeds page

* Filter dupe from Feeds screen

* Simplify logic

* Missing following handling

* Hide primary feed setting outside exp

* Revert testing change

* Migrate usePinnedFeedInfos

* Migrate FeedSourceCard

* Migrate Feeds screen

* Migrate SavedFeeds screen

* Handle timeline in feed infos

* Finish migrating ProfileFeed, FeedSourceCard

* Migrate ProfileList

* Finalize mutation hooks

* Allow unsaving lists

* Handle following feed on Feeds screen

* Handle following on SavedFeeds

* Get rid of deprecated interface usages

* Handle no pinned feeds

* Handle no feeds on Feeds screen

* Reuse component on SavedFeeds screen

* Handle no following feed

* Remove primary algo references

* Migrate to new plural APIs

* Remove unused event

* Prevent duplicate keys

* Make handling much more clear

* Dedupe useHeaderOffset

* Filter unknown feed types at source

* Use just following

* Immprove key handling

* Resume from last tab

* Bump sdk

* Revert Gemfile

* Additional protection in FeedSourceCard

* Fix ProfileList save/unsave handling

* Translate

* Translate

* Match existing handling post-signup

* Ensure onboarding results in correct selected feeds

* Some testing tweaks on create/onboarding

* Revert primary algo consderations

* Remove comment

* Handle default feed setting

* Rm unnecessary type cast

* Remove premature gate check

* Remove nullable check in onPageSelecting, assume the pager checks bounds

* Use null for default selected feed

* Rm unrelated change

* Remove the concept of __key__

I don't think this concept is consistent.

It's introduced on FeedSourceInfo which is used both by pinned feeds and by useFeedSourceInfoQuery. Pinned feeds use the pinning ID there. But there is no pinning ID for useFeedSourceInfoQuery. So this means this field is sometimes one thing and sometimes some other thing. That is a decent sign that it shouldn't be on that type at all.

It's not used anywhere except the desktop feed enumeration. It seems reasonable to assume there that we wouldn't want to show the same feed URL twice. (And if it does occur in the array twice, IMO we should solve that at the API level and dedupe it on read or next write.) So I think we should just use the URL in that place. (I used the descriptor, which is equivalent.)

* Dedupe pinned feeds by URL on read

* Filter timeline out of mergefeed sources

* Put FeedDescriptor into FeedSourceInfo

* Group saved info with feed for pins

This removes a loop within a loop within a loop.

* Fix Feeds link on native

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-11 04:39:21 +01:00
Eric Bailey 2974ce1b20 Gate chat icon in bottom bars (#3959) 2024-05-10 18:02:33 -05:00
Eric Bailey f84a2def29 [🐴] Simplify message passing, cleanup (#3952)
* Simplify message passing

* Setup/teardown events
2024-05-10 12:44:55 -05:00
Samuel Newman ab21aafc28 [🐴] Report message dialog (#3941)
* message report dialog

* report chat prompt

* typo

* 100% height sheet on android

* messages-specific report options

* restore unwanted sexual content

* chat -> conversation
2024-05-10 17:52:21 +01:00
Samuel Newman 7370bebf07 remove 12hr time (#3954) 2024-05-10 17:36:06 +01:00
Eric Bailey cf981124e4 Add icons to drawer (#3956) 2024-05-10 11:08:53 -05:00
Hailey 9f6552241f bump max width of message (#3955) 2024-05-10 09:04:03 -07:00
Hailey f928e0a547 [🐴] Mutate data instead of invalidating queries when muting or unmuting (#3946)
* mutate for mutes

* mutate data for mutes

* add initial data, `useConvoQuery` in `ConvoMenu`

* `useInitialData`

* don't use `identifier` for notifications, use `dates` instead

* better implementation

* simplify

* simplify

* fix types
2024-05-10 08:46:51 -07:00
Eric Bailey 8f56f79c6c [🐴] Change up icons (#3938)
* Swap for chat icon

* Replace icons in left nav

* Replace icons in bottom bars

* Ditch feeds, drop size

* Fine tune

* Swap bell icon, improve alignment and size
2024-05-10 10:42:45 -05:00
Eric Bailey d7f3a8d01f [🐴] Clean up after deleting message (#3950)
* Clean up after removal

* Remove console
2024-05-10 10:40:52 -05:00
Hailey 54c4baacb6 [🐴] Move KeyboardAvoidingView up to the main screen (#3953) 2024-05-10 08:24:29 -07:00
Hailey e729647c02 [🐴] Adjust messages list styles (#3945)
* some initial tweaks

* tweaks

* more tweaks

* tweak chat header

* properly align placeholders

* tweak web header

* one more...

* remove extra loading states from chat

* limit line count for display name

* Tweaks styles (#3949)

* Adjust sizing

* Consistent font size

* Adjust header

* oops

* fix accessibility in list

* don't use `identifier` for notifications, use `dates` instead

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-10 08:09:00 -07:00
Hailey 1a90426026 [🐴] Remove extra spinner states from chat screen (#3947)
* remove extra loading states from chat

* nits

* fix scrolling animation to bottom

* nit

* move spinner to top
2024-05-10 07:49:08 -07:00
Eric Bailey 195c9f1045 [🐴] Handle errors, improve styling (#3937)
* Handle errors, improve styling

* Remove old UI
2024-05-10 08:23:37 -05:00
Hailey 1821a992ab Use build arg in docker action to correctly pass git commit SHA (#3940)
* use env variables through docker args

* remove quotes

* use an output instead

* try that again

* write the variables to .env

* rm unused

* use short sha

* remove test branch
2024-05-09 17:29:25 -07:00
dan 6e172b6ce3 [Session] Restore emailAuthFactor and emailConfirmed from last session (#3939) 2024-05-09 16:05:44 -07:00
Eric Bailey 55fdbc7399 Add retries to all handlers (#3935) 2024-05-09 16:31:36 -05:00
Samuel Newman becc708c61 [🐴] Rich text in messages (#3926)
* add facets to message

* richtext messages

* undo richtexttag changes

* whoops, don't redetect facets

* dont set color directly

* shorten links and filter invalid facets

* fix link shortening

* pass in underline style
2024-05-09 21:08:56 +01:00
Samuel Newman 03b2796976 lowcase ALT text (#3934) 2024-05-09 20:58:22 +01:00
Hailey 17e3b946cb Handle push notifications for DMs (#3895)
* add some better handling for notifications

prep merge

move `useNotificationsListener` into shell

progress

better structure

only show messages notifications while using app if it is the current account

progress

only emit on native

current chat emitter

only show alerts for the current chat

type

add logs

setup handlers

* remove event emitter

* just needs cleanup

* oops

* remove unnecessary `queryClient` param

* few fixes

* cleanup

* nit

* remove folds

* remove comment

* simplify if

* add back invalidate

* comment out other navigations for now

* rename type

* handle various navigation cases

* push to conversation from notification

* update badge in all cases except `chat-message`

* ensure no duplicate notifications

* rm unused `animationOnReplace`

* revert to using `goBack` in the conversation header

* add todo comment
2024-05-09 10:04:05 -07:00
Eric Bailey 1341845537 Add gate, a:a swap onboarding state (#3930) 2024-05-09 11:34:36 -05:00
Hailey 2fe76333bc [🐴] Add hover context menu for convo list on web (#3923)
* remove some unnecessary props

* add hover trigger on web for convo list

* lint

* use `UserAvatar` to not affect accessibility

* remove extra wrapper

* add `label`

* always show on mobile

* adjust size of dots

* make the message trigger dots the same size

* 
2024-05-09 09:07:57 -07:00
Samuel Newman 55ac287d5e [🐴] Skeleton header (#3921) 2024-05-08 17:08:24 -07:00
Eric Bailey 3bac0182b5 [🐴] Integrate event bus (#3915)
* Integrate event bus

* Fixes

* Move events mgmt into Convo class

* Clean up poll interval updates

* Remove unused

* Remove annoying log
2024-05-08 18:01:07 -05:00
Eric Bailey ce2eddca8e [🐴] Refactor event bus (#3919)
* Refactor to singleton class outside react

* Fix retry, remove debug logs
2024-05-08 17:41:10 -05:00
dan 0c6bf276dd Replace updateCurrentAccount() with refreshSession() (#3910)
Replace updateCurrentAccount() with resumeSession()
2024-05-08 23:11:39 +01:00
Hailey f62b0458a7 [🐴] Adjust press and hold delay on messages (#3918)
* adjust press and hold delay on messages

* adjust hit slop
2024-05-08 13:56:36 -07:00
Samuel Newman 701e508a1a add sideborders prop (#3920) 2024-05-08 21:44:49 +01:00
Samuel Newman 750a5c899b actually optimistic mark as read (#3917) 2024-05-08 21:19:45 +01:00
Eric Bailey 7d06fb9432 Move to requestPollInterval handling (#3914) 2024-05-08 11:34:04 -05:00
bnewbold f3515e2673 use four-digit years for RSS pubDate (#3907) 2024-05-08 09:33:38 -07:00
Samuel Newman 38198fdf7f [🐴] Mark as read in convo menu (#3913)
* add mark as read option

* optimistic update + link up menu

* rm messageid
2024-05-08 15:48:05 +01:00
Eric Bailey 56f713077f [🐴] Reorg convo files (#3909)
* Remove unused prop

* Reorganize
2024-05-07 19:46:59 -07:00
dan 814ec2bd7f Add session reducer tests (#3860) 2024-05-08 03:34:35 +01:00
dan 0910525e2e [Session] Code cleanup (#3854)
* Split utils into files

* Move reducer to another file

* Write types explicitly

* Remove unnnecessary check

* Move things around a bit

* Move more stuff into agent factories

* Move more stuff into agent

* Fix gates await

* Clarify comments

* Enforce more via types

* Nit

* initSession -> resumeSession

* Protect against races

* Make agent opaque to reducer

* Check using plain condition
2024-05-08 03:30:55 +01:00
Samuel Newman 4fe5a869c3 [🐴] Unread messages badge (#3901)
* add badge

* move stringify logic to hook

* add mutation hooks

* optimistic mark convo as read

* don't count muted chats

* Integrate new context

* Integrate mark unread mutation

* Remove unused edit

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-07 21:23:09 -05:00
dan 0c41b3188a [Session] Remove global agent (#3852)
* Remove logs and outdated comments

* Move side effect upwards

* Pull refreshedAccount next to usage

* Simplify account refresh logic

* Extract setupPublicAgentState()

* Collapse setStates into one

* Ignore events from stale agents

* Use agent from state

* Remove clearCurrentAccount

* Move state to a reducer

* Remove global agent

* Fix stale agent reference in create flow

* Proceed to onboarding even if setting date fails

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-08 03:10:03 +01:00
Eric Bailey 31a8356aef Handle invalid service URLs (#3908) 2024-05-07 21:09:02 -05:00
Eric Bailey 165fdb7049 [🐴] Integrate global event bus (#3904)
* Conditionally run global event bus

* Add current convo id context, bundle providers
2024-05-07 20:25:58 -05:00
Hailey 37f22ca224 fix privacy api type (#3903) 2024-05-07 16:35:04 -07:00
Eric Bailey b2b1c6c040 Let React app replace preload (#3900)
* Let React app replace preload

* Fix html structure

* Fix indent
2024-05-07 18:29:21 -05:00
Eric Bailey 53d844495b Remove messages provider (#3902) 2024-05-07 18:29:06 -05:00
Eric Bailey f78126e01a [🐴] State transitions (#3880)
* Handle init/resume/suspend/background and polling

* Add debug and temp guard

* Make state transitions sync

* Make init sync also

* Checkpoint: confusing but working state machine

* Reducer-esque

* Remove poll events

* Guard fetchConvo

(cherry picked from commit 8385579d31500bb4bfb60afeecdc1eb3ddd7e747)

* Clean up polling, make sync

(cherry picked from commit 7f75cd04c3bf81c94662785748698640a84bef51)

* Update history handling

(cherry picked from commit b82b552ba4040adf7ead2377541132a386964ff8)

* Check for screen focus in app state listener

* Get rid of ad-hoc status checks
2024-05-07 17:54:52 -05:00
Eric Bailey 87cb4c105e [🐴] Global event mgmt (#3897)
* Add global event bus for messages logs

* Add rev to state

* Better handle error

* Clean up polling, add backgrounding

* Add trailConvo method

* Extend polling until we're ready for this
2024-05-07 17:54:34 -05:00
Paul Frazee 0625a914bd Run intl:extract 2024-05-07 14:15:34 -07:00
Hailey 4678c4353b typo in if/else (#3899) 2024-05-07 13:17:40 -07:00
Hailey 0658dd053d create new cache key on each run when saving previous commit hash (#3898)
* create new cache key on each run

* dynamic restore-key
2024-05-07 13:08:44 -07:00
Minseo Lee c6d30f671a Remove unnecessary Trans tags (#3888) 2024-05-07 20:06:39 +01:00
Samuel Newman 7d72dfb1cb [GIFs] Restore default alt text (#3893)
* restore default alt text

* factor out gif alt logic + enable require alt text setting

* rm console.log

* don't prefill input + esc handling

* typo

* Nits

* shorten user alt prefix

* Remove unnecessary condition, rename for clarity

* Add comment

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-07 20:05:40 +01:00
Samuel Newman 77e6c75a2c Fix color of new web splash logo (#3896) 2024-05-07 19:28:51 +01:00
Minseo Lee af77574b3c Update Feed.tsx (#3715) 2024-05-07 11:09:22 -07:00
Minseo Lee b1a1ca98e8 Update Feeds.tsx (#3719) 2024-05-07 11:07:57 -07:00
kodebanget 3cca5f04d6 Update Indonesian translation (#3891)
* Update Indonesian translation

* Update id/messages.po

---------

Co-authored-by: Indonesian <github-actions@github.com>
2024-05-07 10:33:59 -07:00
Minseo Lee 7f88ec7ca5 Update WhoCanReply.tsx (#3720) 2024-05-07 10:20:05 -07:00
Hailey 790a9c4fad fix bad bool check in action (#3885)
* fix bad bool check in action

* add `fetch-depth` so we can get the commit hash

* `.env` should be in `.easignore` 🙃
2024-05-06 20:13:12 -07:00
Jan-Olof Eriksson 92f6665f93 Finnish translation update (#3755)
* Update messages.po

Translated new strings (GIF's etc) and cleaned up deprecated ones.

* Update messages.po

resolve conflict

* Update messages.po

removed double quotes. Thanks @lapanti
2024-05-06 20:08:36 -07:00
Minseo Lee 2ea9e2c929 Improve localization marks (#3285)
* Update Lightbox.tsx

* Change strings for easier localization

* Update DeleteAccount.tsx

* Update LabelsOnMeDialog.tsx

* Update FeedCard.tsx

* Update index.tsx

* Update LabelsOnMeDialog.tsx

* Update index.tsx

* Update FeedCard.tsx

* Update SelfLabel.tsx

* Update Hashtag.tsx

* Update index.tsx

* Update Hashtag.tsx

* Update ChangeHandle.tsx

* Update index.web.tsx

* Update index.web.tsx

* Update index.tsx

* Remove unnecessary `<Trans>` tags

* Update Drawer.tsx
2024-05-06 19:58:04 -07:00
Paul Frazee 4fad18b2fa Implement FeedFeedback API (#3498)
* Implement onViewableItemsChanged on List.web.tsx

* Introduce onItemSeen to List API

* Add FeedFeedback tracker

* Add clickthrough interaction tracking

* Add engagement interaction tracking

* Reduce duplicate sends, introduce a flushAndReset to be triggered on refreshes, and modify the api design a bit

* Wire up SDK types and feedContext

* Avoid needless function allocations

* Fix schema usage

* Add show more / show less buttons

* Fix minor rendering issue on mobile menu

* Wire up sendInteractions()

* Fix logic error

* Fix: it's item not uri

* Update 'seen' to mean 3 seconds on-screen with some significant portion visible

* Fix non-reactive debounce

* Move methods out

* Use a WeakSet for deduping

* Reset timeout

* 3 -> 2 seconds

* Oopsie

* Throttle instead

* Fix divider

* Remove explicit flush calls

* Rm unused

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-05-07 03:08:33 +01:00
Paul Frazee e264dfbb87 Merge branch 'TuxPenguin09-web-loading' into main 2024-05-06 18:06:44 -07:00
Paul Frazee 032f849092 Protect against missing element 2024-05-06 18:06:31 -07:00
Paul Frazee 0a8dc289ff Merge branch 'web-loading' of https://github.com/TuxPenguin09/bsky-social-app into TuxPenguin09-web-loading 2024-05-06 17:51:51 -07:00
Paul Frazee 901feba6db Replace pluralize by plural by @tkusano (#3882)
* Replace pluralize with plural or Plural
* Replace all pluralize (defined by src/lib/strings/helpers.ts) with plural or Plural (defined by @lingui/macro) to make some UI elements translatable.
* Delete pluralize() and related test.

* Import @formatjs polyfill libraries for plural on ios and android

- ios and andorid: import `@formtjs/intl-locale` and `@formatjs/intl-pluralrules` to polyfill `Intl.Locale` and `Intl.PluralRules` which are used in `plural()` and '<Plural />'.
- update `plural` use in notification messages for better translation.

* Rewrite to pass lint

* Add Catalan plural polyfill

* more replacement

* import zh plural data for zh-CN

* Refactor feed header components (#2964)

* Move home-related files to view/com/home

* Add HomeHeader in front of FeedTabBar

* Move isDekstop check outside FeedsTabBar

* Remove PWI logic from tabbar

* Separate platform-specific layout from shared logic

* Rename Home Feed Prefs to Following Feed Prefs (#2965)

* use `useOpenLink` hook for links in ALF (#2975)

* use `useOpenLink` hook for links in ALF

* web only for `outline`

* increase timeout to 15s (#2958)

* Normalize relative day (#2874)

* fix: normalize relative date

* chore: add comments

* refactor: skip flooring normalized diff

* refactor: let -> const

* fix: get own copy of date to prevent mutating

* refactor: rounding does the same trick

* Add handle validation to create account UI (#2959)

* show uiState errors in the box as well

simplify copy

update ui for only letters and numbers

add ui validation to handle selection

* simplify names

* Fix accidental text-node render

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>

* Make dim theme dim (#2966)

* Make dim color scheme dim

* Tweaks

* Overall tweaks

* We have to go darker

* Tweak saturation of blues in dim

* Increase contrast on dark-dark mode

* adjust dim

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>

* Fix dim mode unread notif color

* use `showControls` to show/hide live text icon on ios (#2982)

* Update .po files

* fix reversed icons in validator 🤦 (#2991)

* Adjust `windowSize` on `PostThread` `FlatList` (#2989)

* adjust window size, cells batching period

* rm batching period change

* Pluralize 'follow(s)'

* Include a space between the msgid count and "follower(s)/following(s)" so the translator can adjust the translated count line to fit within the Drawer.

* pluralie '# following'

* Fix & Update

* Rewrite to use Plural

* rmeove unused import

* When commiting changes, disable 'simple-import-sort' plugin in .eslintrc.js to sync with bluesky-social:main

* Revert simple-import-sort/imports related changes

* Move ProfileHoverCard web to plural util

* Followings -> following

* Add plural following to hovercard

* Followings -> Following

---------

Co-authored-by: Takayuki KUSANO <kusano@tkusano.jp>
Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>
Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Mary <148872143+mary-ext@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-06 16:55:57 -07:00
Paul Frazee 2ca4b74955 Merge branch 'piotrpalek-fix-banner-cropper' into main 2024-05-06 15:49:52 -07:00
Paul Frazee fe82257801 Dont leave promise unresolved 2024-05-06 15:44:19 -07:00
Paul Frazee e1940983a3 Merge branch 'fix-banner-cropper' of https://github.com/piotrpalek/social-app into piotrpalek-fix-banner-cropper 2024-05-06 15:30:54 -07:00
Samuel Newman 136b0e12ab make gif alt text prompt selectable (#3879) 2024-05-06 22:14:00 +01:00
Hailey fdb5ffff53 remove trailing period from query term in useActorAutocompleteQuery (#3765)
* remove trailing period from query term

* Rm useMemo

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-05-06 22:04:47 +01:00
Hailey b4015d10d1 Add PrivacyManifest info to comply with new App Store guidelines (#3784)
* add necessary privacy reasons

* bump expo to support creation of the manifest
2024-05-06 21:47:55 +01:00
Hailey 99f3f10fe7 A few containWeb List nits (#3877)
* use getters for returned values

* pass ref

* add log to `onScroll` in tester

* improve expect error
2024-05-06 21:45:14 +01:00
Eric Bailey 0b6ace990e [Clipclops] All my clops gone (#3850)
* Handle two common errors, provide more clarity around error states

* Handle failed polling

* Remove unused error type

* format
2024-05-06 15:35:05 -05:00
Ivan Beà 2a1dbd2756 Update catalan messages.po (#3764)
Translate new lines, messages are coming! 
You can check it @jordimas @darccio @ferranrego @MiquelAdell @mvdan @johnnydement @Mejans @surfdude29
2024-05-06 13:27:08 -07:00
Minseo Lee a9feba4efd Update Korean localization (#3809)
* Update messages.po

* Update messages.po

* Update messages.po
2024-05-06 13:26:32 -07:00
Takayuki KUSANO 5cfe5d4f58 Update Japanese translations (#3810)
* Update Japanese translations

* Updated Japanese translation

* Updated Japanese translation

* Update Japanese translations

* Updated based on @Hima-Zinn's suggestion
2024-05-06 13:25:59 -07:00
Frudrax Cheng c90443b37a Update zh-TW translations (#3873)
* 修正及改進翻譯

* Epic zh-TW rebrand

* small fix

* remove reundant "設定" for "偏好"

* legacy for "殘存"

* Update Translator

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-05-06 13:25:07 -07:00
Hailey b34d224207 remove hide_vertical_scrollbars test (#3855) 2024-05-06 20:59:36 +01:00
Hailey db0b030359 show spinner when preferences has not loaded yet (#3756) 2024-05-06 20:58:03 +01:00
Samuel Newman c33c3b7d1e Alt text for gifs (#3876)
* add alt text dialog

* multiline alt text input

* add pressable alt text badge

* rename `ALT: ` to `Alt text: ` to avoid including old bad ones

* reuse alt text reminder

* reuse alt text reminder in gallery

* add alt text reminder in the dialog itself

* autofocus text input

* reorder components to fix tab order

* fix close btn position
2024-05-06 17:28:38 +01:00
Hailey ae7626ce6e [🐴] Finalize web message screen (#3868)
* add `onStartReached` to web list

* fix `rootMargin`

* Add `contain`, handle scroll events

* improve types, fix typo

* simplify

* adjust `scrollToTop` and `scrollToOffset` to support `contain`, add `scrollToEnd`

* rename `handleWindowScroll` to `handleScroll`

* support basic `maintainVisibleContentPosition`

* rename `contain` to `containWeb`

* remove unnecessary `flex: 1`

* add missing props

* add root prop to `Visibility`

* add root prop to `Visibility`

* revert adding `maintainVisibleContentPosition`

* remove unnecessary wrapper

* add style

* oops

* maintain position for web

* always apply `flex: 1` to styles when contained

* add a contained list to storybook

* make `onScroll` a worklet in storybook

* revert test code

* remove unnecessary `flex: 1`
2024-05-06 08:48:08 -07:00
Hailey bc07019911 Further align web List with FlatList, add contain mode to web list implementation (#3867)
* add `onStartReached` to web list

* fix `rootMargin`

* Add `contain`, handle scroll events

* improve types, fix typo

* simplify

* adjust `scrollToTop` and `scrollToOffset` to support `contain`, add `scrollToEnd`

* rename `handleWindowScroll` to `handleScroll`

* support basic `maintainVisibleContentPosition`

* rename `contain` to `containWeb`

* remove unnecessary `flex: 1`

* add missing props

* add root prop to `Visibility`

* add root prop to `Visibility`

* revert adding `maintainVisibleContentPosition`

* oops

* always apply `flex: 1` to styles when contained

* add a contained list to storybook

* make `onScroll` a worklet in storybook

* revert test code

* add scrolling to storybook

* simplify getting scrollable node

* nit: extra whitespace

* nit: random comment

* foolproof the logic

* typecheck
2024-05-06 08:34:32 -07:00
Hailey 594b40c3ae Fix IntersectionObserver rootMargin in web List implementation, add onStartReached (#3866)
* add `onStartReached` to web list

* fix `rootMargin`
2024-05-05 04:24:01 -07:00
Hailey 6b615f3720 only use KeyboardProvider in conversation screen (#3869) 2024-05-05 03:14:14 -07:00
Hailey c4160c25a3 [Clipclops] Delete message in dialog (#3849)
* delete and copy

* add retry dialog if message send fails

* add layout animation

* fix `nextMessage` being incorrect

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-05-05 02:06:10 +01:00
Samuel Newman 7448c8f785 [🐴] Improve message pressing (#3864)
* allow tapping message when keyboard open

* dismiss keyboard on open msg menu

* show message info on press

* Revert "show message info on press"

This reverts commit 61d039a702.
2024-05-05 01:13:57 +01:00
Hailey 91f8202549 fix typo in app-info (#3863) 2024-05-04 16:45:59 -07:00
Samuel Newman 9b7818d358 [🐴] Dismiss keyboard before opening convo menu (#3862)
* Dismiss keyboard before opening convo menu

* call `props.onPress()` instead
2024-05-05 00:39:52 +01:00
Hailey 4862bc2ba8 add bundle identifiers to app-info (#3861)
* add bundle identifiers to `app-info`

* add them to the `.env.example`

* add environment variables for docker build

* add environment variables for native builds and bundles

* also include the hour in bundle date

* organize app info better in settings
2024-05-04 16:33:10 -07:00
Hailey eb55bdf172 [🐴] List Adjustments (#3857) 2024-05-04 13:22:14 -07:00
Samuel Newman c223bcdaf7 Assorted clipclop fixes (#3853)
* empty state for new chat dialog

* use terniary

* dark mode pending state

* copy message text option

* fix service url input (scrollview ftw)

* whoops, fix equality

* slightly reduce horizontal message padding
2024-05-04 01:49:49 +01:00
Hailey feff55a14a Clipclop tweaks (#3851)
* scroll on input resize

* add back the padding 🙊

* fix timestamps
2024-05-03 15:08:59 -07:00
Hailey 876816675e [Clipclops] Refactor message list (#3832)
* rework the list for accessibility

* Reverse reverse

* progress

* good to start testing

* memo `MessageItem`

* small hack

* use our custom `List` impl

* use `ScrollProvider` for `onScroll` event

* remove use of `runOnJS`

* actually, let's keep it

* add some comments

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-03 14:18:01 -07:00
Samuel Newman 6a4199febb [Clipclops] Pending message style with layout animation (#3844)
* decrease group gap to 3 mins

* pending style with layout animation

* make pending state lighter
2024-05-03 20:19:48 +01:00
Samuel Newman 55f3df5596 reenable tabs (#3847) 2024-05-03 20:14:10 +01:00
Hailey 19a6bdcc86 Version bump (#3848) 2024-05-03 11:21:02 -07:00
Samuel Newman ce02a41163 add focus refresh + polling (#3846) 2024-05-03 17:57:20 +01:00
dan 4a2d4253e5 [Session] Align state and global agent switchpoints (#3845)
* Adopt synced accounts unconditionally

* Remove try/catch around resuming session

* Move to login form on resume failure

* Restructure code flow for easier reading

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-03 17:57:09 +01:00
dan 85b34418ef Don't clear toasts when changing users (#3843)
* Move ThemeProvider to the top

* Move RootSiblingParent above the remounted part

* Move ToastContainer outside the remounted part

* Remove setTimeout around toasts

* Consistently handle dropped session
2024-05-03 16:36:58 +01:00
Samuel Newman aeed4786db make service url gate friendlier (#3841) 2024-05-03 16:32:20 +01:00
Samuel Newman 67b0cdf649 remove broken keyboard offset code (#3842) 2024-05-03 16:14:25 +01:00
Samuel Newman 997e621ce3 [Clipclops] Header tweaks (#3839)
* wrap text

* add dividers to convo menu
2024-05-03 15:55:35 +01:00
Samuel Newman a5511e3c22 update date logic to account for timezones (#3840) 2024-05-03 15:55:24 +01:00
Eric Bailey 051e897a2b [Clipclops] Moar error (#3837)
* Add history error

* Log error

* Add period
2024-05-03 09:39:40 -05:00
dan 1e484c6318 [Session] Reset global agent on expire (#3838) 2024-05-03 13:46:34 +01:00
dan cdf7a1957a [Session] Rely on agent session change event for persisting resumed session (#3836)
* Rely on agent session change handler for resumption

* Add a fast path for noop resumes
2024-05-03 03:47:11 +01:00
Eric Bailey c9cf608f78 [Clipclops] External store, suspend/resume (#3829)
* Initial working external store

* Clean up WIP, explore suspend/resume

* Clean up state, bindings, snapshots, add some logs

* Reduce snapshots, add better logic check

* Bump interval a smidge

* Remove unused type
2024-05-02 20:57:51 -05:00
dan c13685a0cf [Session] Fix stale emailAuthFactor and emailConfirmed on the client (#3835)
* Fix account refresh to not clobber falsy values

* Use ?? in more places
2024-05-03 02:52:37 +01:00
dan 0f827c3213 [Session] Track agent in state (#3833)
* Expand currentAccountDid into currentAgentState

* Inline all callsites of upsertAccount

* Inline all internal callsites of clearCurrentAccount

* Add agent to currentAgentState

* Collapse extra setStates

* Add TODOs
2024-05-03 02:04:36 +01:00
Samuel Newman a9af83692c visually align icon (#3831) 2024-05-03 01:28:03 +01:00
dan 6405ad7cba [Session] Call persist handler directly (#3828) 2024-05-02 23:05:53 +01:00
dan b86c3b486f Improve account switcher pending state (#3827)
* Protect against races

* Reduce UI jank when switching accounts

* Add pending state to selected account

* Disable presses while pending
2024-05-02 21:55:50 +01:00
Hailey 8ba1b10ce0 [Clipclops] Message actions for native and web (#3807)
* haptic on long press

* add animation to press and hold

* eslint disable for now

* adjust styles

* dont trigger if animation is cancelled

* organize

* add a delete menu

* reset scale automatically

* message actions dialog

cleanup

center the trigger

handle focus/unfocus better

make triggers accessible

weg dropdown menu

add a wep specific wrapper

decrease press delay

add report button

improve shrink logic

use `self_end` instead of `margin: auto`

rm extra `?`

move `MessageItem` to `components`

add delete button

* rm some padding

* update after merge

* fix merge

* web only types

* fix crash

* add an explanation

* fix web types

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-05-02 13:54:17 -07:00
Samuel Newman 6da18e3dcf Only run "disable min shell on foregrounding" behaviour if on the home screen (#3825)
* change useEffect to useFocusEffect

* v2 -> v3
2024-05-02 21:27:54 +01:00
Samuel Newman 96c5db3e69 create keyboardverticaloffset hook (#3823) 2024-05-02 21:05:11 +01:00
Samuel Newman aca55cb192 rename "MessagesList" to "Messages" (#3826) 2024-05-02 21:02:45 +01:00
Eric Bailey a20fe4c9a0 [Clipclops] Deletions (#3824)
* Handle message deletions

* Handle failures
2024-05-02 13:12:34 -05:00
dan 1a07e23192 [Session] Extract selectAccount out (#3812) 2024-05-02 18:25:09 +01:00
dan 5ec945b762 [Session] Extract resumeSession out (#3811) 2024-05-02 18:17:53 +01:00
Samuel Newman dadf27fd2f [Clipclops] Minor web tweaks (#3822)
* add a11y + onPress to web send button

* only adjust leading on web, due to overflow issue
2024-05-02 18:00:42 +01:00
Samuel Newman bff055f618 [Clipclop] Input polish (#3819)
* tweak input styles + add min-shell mode

* android tweaks + hitslop
2024-05-02 17:08:41 +01:00
Hailey e977c99c96 [Clipclops] rm <Trans> from header (#3818) 2024-05-02 08:54:12 -07:00
Eric Bailey c2062753c5 Allow unmuting and unblocking of curate lists, but not the opposite (#3817) 2024-05-02 10:17:17 -05:00
aliamanuba 1d8fdbcc34 Add Preload for Web - Update base.html 2024-05-02 19:38:33 +08:00
aliamanuba c303df5bd6 Added Preload for Web
- Bluesky logo in the center when a new visitor or shift+refresh by browser client
2024-05-02 19:24:35 +08:00
Hailey cc9727a844 [Clipclops] Remove viewability config (#3805)
* remove viewability config

* use `onScroll` for keeping track of content offset
2024-05-01 16:26:19 -07:00
Samuel Newman e19f882450 [Clipclops] Clop menu, leave clop, mute/unmute clop (#3804)
* convo menu

* memoize convomenu

* add convoId to useChat + memoize value

* leave convo

* Create mute-conversation.ts

* add mutes, remove changes to useChat and use chat.convo instead

* add todo comments

* leave convo confirm prompt

* remove dependency on useChat and pass in props instead

* show menu on long press

* optimistic update

* optimistic update leave + add error capture

* don't `popToTop` when unnecessary

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-05-02 00:15:10 +01:00
Paul Frazee d3fafdc066 Fix: put label defs provider above moderation opts provider (#3806) 2024-05-01 15:59:19 -07:00
Eric Bailey 5148b957b7 [Clipclops] Pending messages (#3803)
* Make pending message like normal message

* Remove getter

* Make props public
2024-05-01 16:29:34 -05:00
Samuel Newman e2556d9f40 [Clipclops] Replace 🐴 with real icon (#3802)
* replace 🐴 with paper plane icon

* replace envelope with plus
2024-05-01 21:49:10 +01:00
Eric Bailey fc0eab2d03 Retry clops (#3800)
* Add convo retries, sketch out tests

* Only append nextMessage to messages

* Remove debug code
2024-05-01 15:24:56 -05:00
Hailey 333ccdad39 [Clipclops] Dynamic input height (#3778)
* input max height/scrollability

* remove unused imports

* add a web-specific version

* enter and shift enter for web

* missing onSubmit for native

* missing attributes

* improve layout of input on web

* use the correct text color in the input

* trim messages

* remove `onSubmit`

* move prop up

* trim message on web

* remove extra function call

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-05-01 20:42:11 +01:00
Hailey 6f9993ca55 [Clipclops] Fix list, rework structure (#3799)
* proper min index

* move keyextractor out of react

* move onSendMessage out

* don't render the flatlist conditionally

* add loader

* rework structure

* remove some unneeded logic
2024-05-01 11:48:19 -07:00
Samuel Newman 8304ad91ac add header to empty chat list view (#3791) 2024-05-01 18:43:54 +01:00
Eric Bailey 538ca8dff1 [Clipclops] 2 Clipped 2 Clopped (#3796)
* Add new pkg

* copy queries over to new file

* useConvoQuery

* useListConvos

* Use useListConvos

* extract useConvoQuery

* useGetConvoForMembers

* Delete unused

* exract useListConvos

* Replace imports

* Messages/List/index.tsx

* extract getconvoformembers

* MessageItem

* delete chatLog and rename query.ts

* Update import

* Clipclop service (#3794)

* Add Chat service

* Better handle deletions

* Rollback unneeded changes

* Better insertion order

* Use clipclops

* don't show FAB if error

* clean up imports

* Update Convo service

* Remove temp files

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-05-01 10:14:41 -07:00
dan d61b366b26 [Session] Derive currentAccount from accounts + currentAccountDid (#3795)
* Derive currentAccount from accounts and currentAccountDid

* Add TODOs for divergence with __globalAgent
2024-05-01 17:35:27 +01:00
dan df9af92eb2 [Session] Use flag on state for persistence (#3793)
* Move isInitialLoad and isSwitchingAccounts out of main state

* Remove spreads, order object keys

* Track need to persist on state object

* Reoder state variables
2024-05-01 17:26:33 +01:00
Samuel Newman a6061489ff replace getDate with toIsoString().slice(0,10) (#3792) 2024-05-01 15:50:30 +01:00
Samuel Newman 80a1687dae exclude bskyweb bskyembed and web-build (#3790) 2024-05-01 15:29:30 +01:00
Samuel Newman 09f3b2ae14 [Clipclops] Improve message list behaviour (#3789)
* improve message list behaviour

* replace useAgent with useSession

* add explicit types to appease linter
2024-05-01 15:16:54 +01:00
Hailey b8d8bec388 sentry errors for captcha web views and registration attempts (#3761)
* sentry errors for captcha web views

* include handles with errors

* log all registration request failures

* rm

* use a better trigger for web captcha errors

* add another trigger for recording a possible signup error

* unknown error type

* don't needlessly log on href errors

* honestly i probably cant always do a captcha in 20 seconds

* rm log

* timeout on back

* remove unnecessary colons
2024-05-01 01:08:59 -07:00
Samuel Newman 81ae7e425d Add kawaii mode (#3773) 2024-05-01 08:59:40 +01:00
dan 181e61bedb Memoize context value (#3786) 2024-05-01 05:35:52 +01:00
Paul Frazee 31cb3e5422 Performance improvements: structural sharing & moderation opts context (#3785)
* Fix: correctly apply structural sharing to preferences object

* Move moderation opts into a context

* Fix import

* Remove log

* Pass userdid directly

* Pass moderationPrefs directly
2024-04-30 21:06:51 -07:00
dan 39807a8630 [Session] Refactor to prepare for V2 (#3781)
* Move types to another file

Co-authored-by: dan <dan.abramov@gmail.com>

* Move utilities out

Co-authored-by: dan <dan.abramov@gmail.com>

* Move PUBLIC_BSKY_AGENT

Co-authored-by: dan <dan.abramov@gmail.com>

* Move createPersistSessionHandler inline

Co-authored-by: dan <dan.abramov@gmail.com>

* Call configureModeration when clearing account too

This ensures that the app labelers get reset in a test environment.

Co-authored-by: dan <dan.abramov@gmail.com>

* Make guest configureModeration sync, non-guest async

* Extract isSessionExpired

Co-authored-by: dan <dan.abramov@gmail.com>

* Flip isSessionExpired condition

Co-authored-by: dan <dan.abramov@gmail.com>

* Extract agentToSessionAccount

Co-authored-by: dan <dan.abramov@gmail.com>

* Extract createAgent*

Co-authored-by: dan <dan.abramov@gmail.com>

* Simplify isSessionExpired

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-01 02:55:43 +01:00
dan 66ad5543f1 [Session] Move deactivated field off the session object (#3780) 2024-05-01 01:36:56 +01:00
dan 339f26567a [Session] Consistently copy SessionAgent fields (#3779)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-05-01 01:13:55 +01:00
Samuel Newman 80bcf81dc5 [Clipclops] Separate messages if there's a time gap (#3777)
* separate msg groups by age

* clean up logic and add comments
2024-04-30 23:40:26 +01:00
Hailey db968b7610 [Clipclops] Header for chat (#3775)
* add temp `getchat` query

* properly get the other profile

* add basic header

* normalize layout on all devices

* remove unused imports, adjust style

* remove unnecessary log

* remove another log

* remove some more imports

* cleanup

* use `Button` instead in the header

* lint
2024-04-30 15:04:17 -07:00
Hailey 268e30d21a [Clipclops] adjust scroll position, keyboard color (#3771)
* use the correct keyboard appearance based on theme

* i guess the min index should be 1
2024-04-30 11:33:41 -07:00
Samuel Newman 611ff0c7e4 [Clipclops] Add clop sent time to clipclop (#3772)
* add message sent time to message

* fix last message in group logic
2024-04-30 19:31:30 +01:00
Samuel Newman 7b694fd860 [Clipclops] Use API data for clipclop list (#3769)
* use real API

* remove extra tab icon

* messages list web layout + style improvements

* use style's text color for input

* make new chat button way more obvious

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-04-30 18:15:48 +01:00
Samuel Newman bcd3678067 [Clipclops] New clipclop dialog (#3750)
* add new routes with placeholder screens

* add clops list

* add a clop input

* add some better padding to the clops

* some more adjustments

* add rnkc

* implement rnkc

* implement rnkc

* be a little less weird about it

* rename clop stuff

* rename more clop

* one more

* add codegenerated lexicon

* replace hailey's types

* use codegen'd types in components

* fix error + throw if fetch failed

* remove bad imports

* update messageslist and messageitem

* import useState

* replace hailey's types

* use codegen'd types in components

* add FAB

* new chat dialog

* error + default search term

* fix typo

* fix web styles

* optimistically set chat data

* use cursor instead of last rev

* [Clipclops] Temp codegenerated lexicon (#3749)

* add codegenerated lexicon

* replace hailey's types

* use codegen'd types in components

* fix error + throw if fetch failed

* remove bad imports

* update messageslist and messageitem

* import useState

* add clop service URL hook

* add dm service url storage

* use context

* use context for service url (temp)

* remove log

* cleanup merge

* fix merge error

* disable hack

* sender-based message styles

* temporary filter

* merge cleanup

* add `hideBackButton`

* rm unneeded return

* tried to be smart

* hide go back button

* use `searchActorTypeahead` instead

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-04-30 17:43:57 +01:00
dan 2b7d796ca9 Session fixes, pt. 1 (#3762)
* Update persisted schema for new source of truth, implement in existing session

(cherry picked from commit b1e5f12bae)

* Improve toasts, log caught error, during switch account

(cherry picked from commit fe0d150706)

* Handle thrown errors from initSession during login

(cherry picked from commit 2c85c04591)

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-04-30 17:38:05 +01:00
Samuel Newman 4de78fb69e use keyboardDismissMode rather than onScrollBeginDrag (#3767) 2024-04-30 16:11:41 +01:00
Hailey eb8bfd11d1 [Clipclops] Add screen to view and send clip clops (#3754)
* add new routes with placeholder screens

* add clops list

* add a clop input

* add some better padding to the clops

* some more adjustments

* add rnkc

* implement rnkc

* implement rnkc

* be a little less weird about it

* rename clop stuff

* rename more clop

* one more

* [Clipclops] Temp codegenerated lexicon (#3749)

* add codegenerated lexicon

* replace hailey's types

* use codegen'd types in components

* fix error + throw if fetch failed

* remove bad imports

* update messageslist and messageitem

* import useState

* add clop service URL hook

* add dm service url storage

* use context

* use context for service url (temp)

* remove log

* nits

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-04-29 23:34:26 -07:00
Hailey 5d19f27052 switch branch for installing react-native-bottom-sheet (#3760) 2024-04-29 16:13:41 -07:00
dan 42966fb49e Fix List onMomentumScrollEnd (#3759) 2024-04-29 23:38:03 +01:00
Paul Frazee 28fc98d942 Release 1.80 (#3757)
* Test fixes

* Intl extract
2024-04-29 15:00:25 -07:00
Frudrax Cheng 599dab1c7a Update zh-TW translations (#3678)
* consistent improvements

* update messages.po

* improve translation

* improve translation

* fix punctuation issues

* remove superseded strings

* GIFs to GIF

* modify according to review suggestions

* fix some misnomers

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* modify according to review suggestions

* modify according to review suggestions

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* modify according to review suggestions

* a small adjustment

---------

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>
2024-04-29 14:54:17 -07:00
Gabriella 6dd2e07ab9 Italian localization (#3684)
* Add files via upload

* Update messages.po

Changed the grama of string

* Update messages.po

Following the input of @niconick89.bsky.social I have added additional correction to some of the strings.
2024-04-29 14:53:45 -07:00
Ivan Beà 983d9e55b3 Update catalan messages.po (#3697)
* Update catalan messages.po

New lines translated
You can check it @jordimas @darccio @ferranrego @MiquelAdell @mvdan @johnnydement @Mejans @surfdude29

* Update messages.po

Remove extra space

* Update messages.po
2024-04-29 14:53:13 -07:00
Minseo Lee c8aa16e90e Update Korean localization (#3698)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-04-29 14:52:39 -07:00
Takayuki KUSANO c2fff6a861 Update Japanese translation (#3734)
* Remove old old onboarding related entries

cf. https://github.com/bluesky-social/social-app/pull/3674

* Update Japanese translation

(accessibilityLabel & accessibilityHint)
cf. https://github.com/bluesky-social/social-app/pull/3670

* Update Japanese translation

* Fix Japanase translation related to block
2024-04-29 14:52:15 -07:00
Frudrax Cheng f3c32f9996 Update zh-CN translations (#3716)
* fix punctuation issues

* improve translation

* remove superseded strings

* update messages.po

* fix typo

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>

* update language-team

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po

Co-authored-by: Leonid <kasumi@bangdream.moe>

---------

Co-authored-by: IceCodeNew <32576256+IceCodeNew@users.noreply.github.com>
Co-authored-by: Leonid <kasumi@bangdream.moe>
2024-04-29 14:51:41 -07:00
Eric Bailey a4e34537ce Send Bluesky feeds and suggested follows more data (#3695)
* WIP

* Fix constructors

* Clean up

* Tweak

* Rm extra assignment

* Narrow down the argument

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-29 22:04:35 +01:00
Kisaragi Hiu d893fe005d android: fix various places still using default Material Teal (#3555)
These places include TextInput cursor, TextInput selection, and the
spinner (ActivityIndicator) --- the default Material Teal is out of
place wherever it shows up.

This sets Expo's primaryColor to #1083fe, which is the color that
defaultTheme.palette.default.brandText resolves to, then applies it as
the native accent color via a plugin because Expo doesn't apply the
accent color.
2024-04-29 11:36:05 -07:00
Hailey 2feea51ae3 clear search on tab press (#3753)
* clear search on tab press

* don't need to call `onPressCancelSearch`
2024-04-29 17:32:20 +01:00
dan 5d715ae1d0 Improve search screen perf (#3752)
* Extract SearchHistory to a component

* Extract AutocompleteResults to a component

* Extract SearchInputBox to a component

* Add a bunch of memoization

* Optimize switching by rendering both

* Remove subdomain matching

This is only ever useful if you type it exactly correct. Search now does a better job anyway.

* Give recent search decent hitslops
2024-04-29 16:52:24 +01:00
dan 3c2d73909b Remove layout animation from search (#3751) 2024-04-29 16:11:59 +01:00
Hailey 388c4f79cf Increase search TextInput hit area and improve the related UI (#3748)
* improve hit area of search text input

use text cursor on web

use a pressable instead

use a vertical padding of 9

oops

move vertical padding to `TextInput` to increase hit area

* Hide it from a11y tree, change cursor

* Hide clear on empty text

* Render either Clear or Cancel

* Remove Clear button

* Animate it

* Better animation

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-29 05:12:20 +01:00
dan dfce190cb6 [iOS] Fix selecting search input on focus (#3746)
* Select search text on focus

* Scope to iOS only
2024-04-28 22:52:40 +01:00
dan 361d255e95 Remove useEffect from TimeElapsed (#3741) 2024-04-28 22:37:00 +01:00
dan 256bb33de0 Remove test gating code (#3742) 2024-04-28 22:36:50 +01:00
dan 2a08931127 Fix dropdown immediately closing on Enter (#3745)
* Move dropdown content into separate component

* Fix dropdown with keyboard

* No-op is sufficient
2024-04-28 21:29:43 +01:00
dan 1dd3d6657c Account for momentum when hiding minimal shell (#3740)
* Add optional momentum events to scroll context

* If there is a velocity, don't snap until momentum end

* Don't show bar on scroll down

* Rm onMomentumBegin
2024-04-28 17:48:20 +01:00
dan 3b4848ba59 Reduce hovercard false positives, add them to display names and handles (#3739)
* Don't trigger hovercards on scroll

* Add display name / handle hovercards

* Increase hovercard delay
2024-04-28 13:59:18 +01:00
Mary 74cd1d4458 YouTube Music as supported player (#3736) 2024-04-27 22:11:08 -07:00
Piotr P bf7aee19b8 add missing cropImageUtil file 2024-04-27 14:59:00 +02:00
Piotr P beddddcb57 hide alternative ratio buttons when using custom ratio 2024-04-27 14:31:51 +02:00
Piotr P bc956803b8 allow for custom cropper aspect ration based on image 2024-04-27 14:31:45 +02:00
Piotr P ebd333b331 Fix cropper crashing after clicking cancel 2024-04-27 14:31:39 +02:00
Piotr P ae26963b45 eslint autofixes 2024-04-27 14:31:33 +02:00
dan 21e5a87fab Patch lexicon for perf (#3733) 2024-04-27 07:54:47 +01:00
Hailey 61d7e6014b ensure dialog is closed on unmount (#3650)
Revert "properly check if the ref is null"

This reverts commit 8f563808a5d39389b0bc47a31e73cd147d1e7e8b.

properly check if the ref is null

ensure dialog is closed on unmount
2024-04-27 07:42:49 +01:00
Hailey 7eb1444f2c remove precacheThreadPostProfiles (#3729)
* remove `precacheThreadPostProfiles`

* add `displayName` to `PreviewableUserAvatar`

* memo

* use `precacheProfile`

* pass `profile` directly to `PreviewableUserAvatar`

* update the `UserAvatar`'s props

* remove feed cache

* one more spot

* rm unused queryClient

* Don't call fn unnecessarily

* Preload for display name too

* try notification item

* add to feeditem

* and finally, precache for post threads

* timestamp

* Fix

* onBeforePress

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-27 06:31:07 +01:00
Samuel Newman ce85375c85 [Clipclops] New routes with placeholder screens (#3725)
* add new routes with placeholder screens

* gate content

* add filled envelope style

* swap filled state

* switch to `useAgent`
2024-04-27 05:54:18 +01:00
Samuel Newman 1af59ca8a7 Special-case bsky.app/download to open share sheet or copy to clipboard (#3710)
* special-case bsky.app/download to share

* Address feedback

* Improve detection

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-27 05:25:28 +01:00
Hailey b10c96f28d ver bump (#3731) 2024-04-27 04:38:51 +01:00
Hailey 5f9136479b Improve usability of search on web (#3663)
* dont select the text on web

* TODO REVERT THESE CHANGES

* use `usethrottledvalue` for autocomplete

* use `isFetching` from query

* rm setTimeout

* getting there

* improve functionality of cancel button

* rm todo

* add comment back

* encode `searchText` rather than `queryTerm`

* use "back" on web in some cases

* don't flash results in autocomplete

* remove unnecesary usestate

* rename everything to `query` temporarily

* revert accidental lint

* rm todo

* rm comment

* use `useFocusEffect` to update the query term on back navigation

* `searchText` is always defined here

* Fix race

* remove back functionality

* use `keepPreviousData` for query

* rename `q` to `queryParam`

* remove hack

* remove `q=` on cancel

* blur on submit

* use `setParams` instead of `replace`

* use `replace` on web still

* clear the search input when we clear `q` on native

* onPress dismiss attempt

* Adjustments

* Fix search history

* Always hide autocomplete

* Clear right pane search on select

* `blur` on autosuggestion press

* Rename to reduce diff

* Fixes

* Unify codepaths

* Fixes

* precache the autosuggestion

* do the cache in the link card

* Revert "precache the autosuggestion"

This reverts commit 79c433e984.

* use `throttledValue` and `keepPreviousData` in sidebar search

* show spinner when fetching pt 1

* show spinner when fetching pt 2

* show spinner properly for autocomplete

* Fix extra border

* Position fixed

* TS

* Revert "TS"

This reverts commit df187ea2d7.

* Revert "Position fixed"

This reverts commit 9c721c952b.

* Maybe fix iPad

* Revert "TODO REVERT THESE CHANGES"

This reverts commit 279f717f30.

* Rename var

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-27 04:34:53 +01:00
bnewbold d81a373d21 embedr: handle out-of-range maxwidth; change default (#3713) 2024-04-25 17:23:45 -07:00
dan f2797218f8 Move Notifications up on desktop web (#3696) 2024-04-25 23:30:07 +01:00
Eric Bailey 45d354cd0c [Session] Add useAgent hook and replace (#3706)
* Hook it up

* Memoize getAgent method

* Use one shared reference

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 22:29:05 +01:00
Eric Bailey d8c8e1e854 [Session] Drill getAgent into notifications handlers (#3705)
* Drill into notifications handlers

(cherry picked from commit 7ac9e500866732e1f2e205bbe96e70db331e5ffb)

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 21:57:45 +01:00
Eric Bailey e5fdbfe294 [Session] Drill getAgent into Onboarding/util (#3704)
* Drill agent into Onboarding/util

(cherry picked from commit 2ba68eb5e446a694730b720f2a5b3307eb0914ef)

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 21:53:27 +01:00
Eric Bailey 35005da59e [Session] Drill getAgent into notifications/utils (#3703)
* Drill into notifications/util

(cherry picked from commit 84b535ed54f4fe93debcd198809bb184519c3507)

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 21:48:01 +01:00
Eric Bailey a69e567991 [Session] Drill into getAgent into whenAppViewReady (#3702)
* Drill into whenAppViewReady

(cherry picked from commit e290e5be3df509bdd9d0e626a164996c9dee3636)

* Drill getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 21:39:28 +01:00
Eric Bailey ec37696034 [Session] Drill getAgent into feed APIs (#3701)
* Update to desired post-feed usage

* Drill agent into feed apis

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 21:29:06 +01:00
Kevin Scannell 282ad4b17d Irish translation back to 100% (#3683) 2024-04-25 09:08:56 -07:00
Eric Bailey 6aded4f257 [Session] Base (#3541)
* Add readLastActiveAccount to use accounts[] as source of truth

* Add public service constant, use
2024-04-25 10:35:21 -05:00
Hailey 5b82b15007 remove use of pointerEvents on iOS profile header (#3694) 2024-04-25 01:24:20 +01:00
Hailey c3fcd486b3 Cleanup files after each iteration of compression and downloading (#3599)
* delete image on each iteration of compression

* replace a few other instances of `unlink()`

* ensure that moving to the permanent path will succeed

* use `cacheDirectory`

* missing file extension?

* assert

* Remove extra .

* Extract safeDeleteAsync, fix normalization

* Normalize everywhere

* Use safeDeleteAsync in more places

* Delete .bin too

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-25 01:12:36 +01:00
dan 90c3ec8749 Ignore image responses on non-200 status (#3693)
* Ignore image responses on non-200 status

* Fix tests
2024-04-24 23:16:11 +01:00
Mary 15055cb8c4 Persist PDS URL for session resumption (#3620)
* fix: store PDS URL for session resumption

* fix: handle a few more cases

* fix: blocking resumption should also use pds url

* refactor: do it in the construct itself

* fix: revert ce96223
2024-04-24 21:57:16 +01:00
dan 05212ca9e3 Remove Moderation from sidebar (#3692) 2024-04-24 21:37:16 +01:00
dan e2a59449df Remove old Suggested Follows logic (#3689) 2024-04-24 17:45:11 +01:00
dan 8ec3d8c76e Rewrite the link detection (#3687)
* Rewrite the link detection

* Handle parens and colons
2024-04-24 17:30:44 +01:00
Hailey b3df0b177f Remove unnecessary .trimEnd() and fix facet detection (#3672)
* Fix link facet detection

Exclude the trailing period from the link, similar as done in the atproto package

* Fix JSON to text conversion

The trimEnd() call was only needed because we were always appending \n\n at the end. Fix that by only adding line breaks after non-final paragraphs.

* Detect paste reliably

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-24 15:10:29 +01:00
Eric Bailey 05beb1bbad Remove old old onboarding (#3674) 2024-04-23 19:30:49 -05:00
dan 24da3a8f4e Disable autoplay by default if prefers-reduced-motion (#3671) 2024-04-23 17:07:18 -07:00
Samuel Newman 0847e2752b Add option to remove quoted post in composer (#3670)
* add option to remove quoted post

* add generous hitslop
2024-04-24 00:36:59 +01:00
Samuel Newman 9ebfa9a015 Add border radius to GIF loading state (#3669) 2024-04-23 23:56:23 +01:00
Hailey 76aef2d064 use mp4 over webm (#3666)
* use mp4 over webm

* tinymp4

* safari only
2024-04-23 23:55:01 +01:00
Paul Frazee 316fce6439 Release 1.79 (#3661)
* Update tests

* Intl exract
2024-04-23 11:26:50 -07:00
Takayuki KUSANO dc3f694a91 Update Japanese translation (#3656)
* Update Japanese translation

- GIPHY is replaced by Tenor
- Accessibility hint for long-pressing hashtags have been changed to follow

* Translated accessibility hints related to embedded GIFs

* Translate Email 2FA related messages.

* Updated Japanese transaltion

* More update

* Update
2024-04-23 10:55:03 -07:00
dan 096725110a [Statsig] Add test gates and events (#3659)
* [Statsig] Add test gates and events

* Better types
2024-04-23 04:47:13 +01:00
Paul Frazee 30c2c05103 Quick fix to ensure disable 2fa dialog adjusts to keyboard (#3658) 2024-04-22 19:43:54 -07:00
Paul Frazee 710e913024 Email auth factor (#3602)
* Add email 2fa toggle

* Add UI elements needed for 2fa codes in login

* Wire up to the server

* Give a better failure message for bad 2fa code

* Handle enter key in login form 2fa field

* Trim spaces

* Improve error message
2024-04-22 19:18:13 -07:00
Hailey cbb817b5b7 GIF Viewer (#3605)
* ios player

autoplay after recycle

remove all items from AVPlayer queue

recurururururursion

use managers in the view

add prefetch

make sure player items stay in order

add controller and item managers

start of the view

create module, ios

* android player

smoother

basic caching

prep cache

somewhat works

backup

other files

android impl

blegh

lets go

touchup

add prefetch to js

use caching

* bogus testing commit

* add dims to type

* save

* add the dimensions to the embed info

* add a new case

* add a new case

* limit this case to giphy

* use gate

* Revert "bogus testing commit"

This reverts commit b3c8751b71.

* add web player base

* flip mp4/webp

* basic mp4 player for web

* move some stuff into `ExternalLinkEmbed` instead

* use a class component for web

* remove extra component

* add `onPlayerStateChange` event type on web

* layer properly

* fix tests

* add new test

* about ready. native portions done, a few touch ups on web needed

show placeholder on ios

fix type

rm log

display thumbnail until video is ready to play

add oncanplay, playsinline

remove unused method

add `isLoaded` change event

release player when finished

apply gc to the view

cleanup logs

android gc

rm log

automatic gc for assets

make `nativeRef` private

remove unnecessary `await`

cleanup

rev log

only play on prepare whenever needed

rm unused

perfperfperf

rm var

comment + android width

native height calculations

rm pressable

add event dispatcher on android

add event dispatcher on ios

* ready to test ios

fix autoplay ios

clean

oops

* autoplay on web

* normalize across all platforms

add check for `ALT:`

separate gif embed logic to another file

handle permissions requests

flatten web styles

normalize styles

normalize styles

prefetch functions

pause animatable on foreground android

nits

one more oops

idk where that code went

lint

rethink the usage

wrap up

android

clear bg

update gradle

more android

rename dir

update android namespace

web

ios

add deps

use webp

rm unused

update types

use webp on mobile

* rm gate from types

* remove unused event param

* only start placeholder op if doesn't exist in disk cache

* fix gifs animating on app resume android

* remove comment

* add `isLoaded` for ios

* add `isLoaded` to Android

* onload for web

* add visual loading state

* rm a log

* implement isloaded for android

* dialogs

* replace `webpSource` with `source`

* update prop name

* Move to Tenor for GIFs (#3654)

* update some urls

* right order for dimensions

* add GIF coder for ios

* remove giphy check

* rewrite tenor urls

* remove all the unnecessary stuff for consent

* rm print

* rm log

* check if id and filename are strings

* full size playback controls

* pass tests

* add accessibility to gifs

* use `onPlay` and `onPause`

* rm unused logic for description

* add accessibility label to the controls

* add gif into to external embed in composer

* make it optional

* gif dimensions

* make the jsx look nicer

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-04-23 02:54:15 +01:00
dan fe9b3f0432 Ungate profile scroll fix (#3655) 2024-04-23 00:54:59 +01:00
Samuel Newman 49b5d420e6 rm country param (#3653) 2024-04-23 00:37:46 +01:00
dan 861804629a [GIFs] Remove consent flow (#3652)
* Remove tenor from settings

* Remove consent flow
2024-04-23 00:18:03 +01:00
Samuel Newman 76449fb6ef [GIFs] Replace GIPHY with Tenor (#3651)
* replace GIPHY with Tenor

* remove "directly" wording

* replace GIPHY wording

* remove log
2024-04-22 23:39:32 +01:00
Hailey 1a4e05e9f9 properly close the switch account dialog (#3558)
* properly close the switch account dialog

* use it for switch account as well

* ensure dialog is closed on unmount

Revert "properly check if the ref is null"

This reverts commit 8f563808a5d39389b0bc47a31e73cd147d1e7e8b.

properly check if the ref is null

ensure dialog is closed on unmount

* Revert "ensure dialog is closed on unmount"

This reverts commit a48548fd8e.
2024-04-22 22:46:05 +01:00
Samuel Newman f49d73dd00 [GIFs] Reset scroll on query change (#3642)
* scroll list to top on query change

* dismiss keyboard on swipe list

* don't need an effect
2024-04-22 22:18:39 +01:00
surfdude29 0b3cc59019 Update French translations (#3644)
* Update French translations

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-04-22 14:13:10 -07:00
Samuel Newman f4e72cc83c [GIFs] Add error boundary to GIF picker (#3643)
* error boundary on gif picker

* add dialog.close for web users

* fix size of dialog on web

* Safer coercion

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-22 22:07:48 +01:00
Samuel Newman 27c4054fcb Revert "Add layout transitions to the composer photo gallery on iOS (#3609)" (#3649)
This reverts commit 1a5b8b2c94.
2024-04-22 21:56:40 +01:00
Jan-Olof Eriksson 94ea2a3e56 Update Finnish translations (#3630)
* Update messages.po

Repostausten yhdenmukaistamista

* Update messages.po

* Update messages.po

* Update messages.po

Typos

* Update messages.po

Couple of typos

* Update messages.po

Removed strings that are obsolete and no longer used.

* Update messages.po
2024-04-22 13:48:48 -07:00
Takayuki KUSANO c525974d51 Update Japanese translations (#3632)
* Update Japanese translations

- Add GIPHY related messages
- Add a11y related messagges
- Update a message in empy search screen

* Updated Japanese translation.
2024-04-22 13:48:22 -07:00
Minseo Lee 0e082cb094 Update messages.po (#3639) 2024-04-22 13:47:49 -07:00
Hailey 551e3330b9 remove unnecessary padding from the right hand side of the post in threaded (#3645) 2024-04-22 21:44:01 +01:00
Samuel Newman b09903e3b8 only open tag menu on long press (#3553) 2024-04-22 21:29:29 +01:00
Samuel Newman bcd88b088a add maxwidth to app language dropdown (#3635) 2024-04-22 21:24:50 +01:00
Hailey 243769e657 remove gate from updates (#3646) 2024-04-22 21:06:25 +01:00
Matthieu Sieben 0e3a13b6df docs(build): update build instructions (#3641) 2024-04-22 10:44:44 -07:00
dan ce1c1e1cbe Search in PWI (#3628) 2024-04-20 00:29:35 +01:00
dan d3c0b48da3 Top/Latest for hashtags (#3625)
* Split HashtagScreen into two components

* Hashtag tabs

* Visual fixes
2024-04-19 23:37:11 +01:00
Hailey c0ca891501 Player improvement pre-reqs (#3618)
* add dims to type

* save

* add the dimensions to the embed info

* add a new case

* add a new case

* limit this case to giphy

* use gate

* flip mp4/webp

* fix tests

* add new test
2024-04-19 23:31:20 +01:00
Samuel Newman 22e86c9903 fix onEndReached issue by forcing flatlist to scroll (#3623) 2024-04-19 23:26:04 +01:00
Samuel Newman edbb18afa4 Throttle gif search by 500ms (#3622)
* debounce gif search by 300ms

* Throttle it instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-19 22:55:53 +01:00
Samuel Newman 8b33ffdfb5 Add disable autoplay preference and group related settings into a dedicated page (#3626)
* add autoplay preference

* group accessibility settings into a dedicated page

* fix gray background on web

* Put a11y first

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-19 22:10:37 +01:00
dan ade2ea6172 Ungate Top/Latest search (#3627) 2024-04-19 21:58:18 +01:00
dan c42a557417 [Statsig] Send locale info (#3621) 2024-04-19 15:51:41 +01:00
dan 55aea348c2 [Statsig] Update experiments (#3617) 2024-04-19 15:23:47 +01:00
Hailey f709fbcbdd align center post meta in threaded (#3615)
* align center post meta in threaded

* put `displayNameStyle` in correct place

* maybe?

* with mobile padding too?
2024-04-19 05:38:54 +01:00
Hailey c91f065be5 add dimensions to data (#3616)
* add dimensions to data

* keep alt text

* put it in the right url

* just send the original height and width instead
2024-04-18 21:32:25 -07:00
Samuel Newman ba1c4834ab Add GIF select to composer (#3600)
* create dialog with flatlist in it

* use alf for composer photos/camera/gif buttons

* add gif icons

* focus textinput on gif dialog close

* add giphy API + gif grid

* web support

* add consent confirmation

* track gif select

* desktop web consent styles

* use InlineLinkText instead of Link

* add error/loading state

* hide sideborders on web

* disable composer buttons where necessary

* skip cardyb and set thumbnail directly

* switch legacy analytics to statsig

* remove autoplay prop

* disable photo/gif buttons if external media is present

* memoize listmaybeplaceholder

* fix pagination

* don't set `value` of TextInput, clear via ref

* remove console.log

* close modal if press escape

* pass alt text in the description

* Fix typo

* Rm dialog

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-19 03:42:26 +01:00
Takayuki KUSANO 2090738185 Update Japanese translation (#3557)
* Remove obsoleted entries

* Add new translation messages.

* Fix one translation

* Update Japanese translation
2024-04-18 14:28:49 -07:00
Frudrax Cheng bf5363c7dc Update zh-TW localization (#3564)
* Fix file format, punctuations and wording

* Some minor adjustments

* Update messages.po

* Remove superseded strings

* Some minor adjustments
2024-04-18 14:28:08 -07:00
Frudrax Cheng 2fb41566e9 Update zh-CN localization (#3565)
* Some minor adjustments

* Update messages.po

* Remove superseded strings
2024-04-18 14:27:19 -07:00
Ivan Beà bf2dccd2a2 Update catalan messages.po (#3595)
New lines translated again, just a few

You can check it @jordimas @darccio @ferranrego @MiquelAdell @mvdan @johnnydement @Mejans @surfdude29
2024-04-18 14:25:45 -07:00
Mary 08c6014751 Fix splash screen language picker appearance on Chrome (#2952)
* fix: correct language picker appearance on Chrome

* fix: prevent chevron shrink on long language names
2024-04-18 14:21:09 -07:00
Gildásio Filho 3beb4ec63d Update messages.po (#3610) 2024-04-18 13:54:23 -07:00
Dovgonosyk 91190e11e2 Update Ukrainian translation (#3552)
Co-authored-by: Ukrainians <github-actions@github.com>
2024-04-18 13:53:54 -07:00
Minseo Lee 7e72a73bee Update Korean localization (#3551)
* Update messages.po

* Update messages.po

* Update messages.po
2024-04-18 13:44:14 -07:00
Samuel Newman 1a5b8b2c94 Add layout transitions to the composer photo gallery on iOS (#3609)
* add layoutanimation + transition to images

* make iOS-only

* use useLayoutEffect

* make iOS only (again)
2024-04-18 12:37:22 -07:00
dan bef7d8a325 [Statsig] Slightly block the UI on gates (#3608) 2024-04-18 17:53:51 +01:00
dan 6101c32bd9 [Statsig] Prefetch configs for other accounts (#3607)
* Poll both current and other accounts

* Make createStatsigOptions a function

* Pass prefetchUsers with the initial request

* Add initializeCalled check

* Be resilient to object identity changes

* Decrease poll interval to 1 minute
2024-04-18 16:26:05 +01:00
dan 41b5b5b283 Add our own cache in front of Statsig (#3604) 2024-04-18 15:28:24 +01:00
dan 02becdf449 [Statsig] Make gate checks lazily (#3594) 2024-04-18 04:39:29 +01:00
Hailey 086dc93a7a don't underline handle in post meta (#3591)
* alignment

remove the unnecessary styles now

seriously?

flex-end everything

flex shrink

test

test

rm unneeded flex

flex the text

don't underline handle in post meta

* use `paddingLeft`

* use `paddingLeft` but with `4`

* Fix overflow color

* Use nbsp to make mobile work

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-18 03:09:10 +01:00
bnewbold 7e16276c04 embedr: return null width (#3598) 2024-04-17 14:41:29 -07:00
Jake Gold 56828c088d NOOP deploy test 2024-04-17 14:05:08 -07:00
Hailey 410f155988 Cleanup files after upload on native (#3597)
* cleanup images after uploading from the composer

cleanup external embed images as well

cleanup files after upload

add `expo-file-system`

* remove test log

* await

* Revert "await"

This reverts commit 771814b40c.

* just log an error if it throws
2024-04-17 12:49:22 -07:00
Samuel Newman a2df81416b delete useMyFollowsQuery (#3529) 2024-04-17 19:39:37 +01:00
Hailey d5982891fa properly animate the profile hover card (#3590)
* properly implement with `isOpen` and `isPositioned`

* well, this works just as well

* add `willChange`
2024-04-17 02:51:25 +01:00
dan 480fa10e0b Add hovercards to "Reply To" (#3587)
* Add hovercard for Reply To

* Tweak durations
2024-04-16 23:44:41 +01:00
dan 1e26654a9b Scrolling while target is hovered and card is visible should hide the card (#3586)
* Don't remove the effect, it's not needed here (and wrong)

* Differentiate between hovering target and card

* Group related code closer

* Hide on scroll away

* Use named arguments

* Inline defaults

* Track reason we're showing

* Only hide on scroll away while hovering target
2024-04-16 23:32:49 +01:00
Jaz 4a771b9350 Merge pull request #3585 from bluesky-social/download_url
Add a handler for /download that directs you to the device-appropriat…
2024-04-16 17:29:50 -05:00
dan 8864e9aefe Restructure feed hover state machine code (#3550) 2024-04-16 22:47:33 +01:00
Hailey 69d3768006 Better dist strings for Sentry (#3584)
* better version codes for sentry

* use a `.` to follow the same intended format as before

* ignore dist build number
2024-04-16 14:38:25 -07:00
Hailey 046e11de31 Automatically add a link card for URLs in the composer (#3566)
* automatically add a link card for urls in the composer

simplify was paste check

use a set

simplify the cross platform reuse

web implementation

remove log

pasting in the middle of a block of text

proper regex

dont re-add immediately after paste and remove

don't use `byteIndex`

lfg

automatically add link card

* `mayBePaste`

* remove accidentally pasted url from comment
2024-04-16 14:29:32 -07:00
Jaz Volpert 09e1f0e9ae Add a handler for /download that directs you to the device-appropriate store 2024-04-16 14:17:15 -07:00
dan 71c427cea8 Make ref_ always strings (#3583)
* Make ref_ always strings

* Harden types
2024-04-16 21:55:12 +01:00
Hailey 48bd98f9ef Use the existing ExternalLinkEmbed for embed previews in the composer (#3579)
* use existing `ExternalLinkEmbed` for showing previews

* cleanup
2024-04-16 13:38:47 -07:00
dan a66c9d0bc4 Always send ref_ params (#3582) 2024-04-16 21:28:39 +01:00
Samuel Newman 2974b407be add sort to searchPosts request (#3581) 2024-04-16 20:38:41 +01:00
Hailey 45e572b212 bump api, remove as number from types (#3580)
* bump api, remove `as number` from types

* bump dev env
2024-04-16 20:34:34 +01:00
Hailey 38074854b2 Allow a post to contain only a quote (#3577)
* allow posts with only a quote

* bump version while we're at it
2024-04-16 10:20:05 -07:00
Samuel Newman 6980cc7f37 Hide translate/copy text options when !no-unauthenticated (#3573)
* hide translate/copy text options when no-pwi

* only do this for no-unauth

* always show if logged in

* swap order of OR
2024-04-16 17:22:55 +01:00
Eric Bailey f771a5961d Add icons for onboarding (#3571) 2024-04-16 09:08:11 -05:00
Paul Frazee d5db632e29 1.78 2024-04-15 20:47:28 -07:00
Paul Frazee 68d002a966 Fix error getting through by primary feed sort (#3562) 2024-04-15 20:41:44 -07:00
bnewbold f265d65a18 embedr: improved HTML snippet, with links (#3559) 2024-04-15 12:32:26 -07:00
Paul Frazee 4b69948366 Release 1.77.0 (#3549)
* A couple test fixes

* Intl extract
2024-04-13 20:44:14 -07:00
Paul Frazee 0b43d728e4 Improve the language behaviors around the PWI (#3545)
* Handle leftnav overflow with longer languages' copy

* Update the language dropdown to set ALL language prefs

* Add hackfix to language cachebusting on PWI

* Reset feeds on language change
2024-04-13 19:49:52 -07:00
Mary 23056daa29 fix: only close drawer if directly tapping backdrop (#3534) 2024-04-14 01:13:05 +01:00
Nick Manos cb3f246822 Fix Android in-app browser closing when switching apps (#3546) 2024-04-13 17:02:44 -07:00
Hailey 3b9c5ceeb3 Cache DID and profile basic on profile card presses (#3523)
* cache profiles

add onPress back

rm log

cache profile and did when pressing profile card

* minimal diff
2024-04-13 17:02:32 -07:00
Hailey 7543f72b77 Remove extra wrapper on notification user links (#3548) 2024-04-13 16:55:49 -07:00
dan 41925bdc07 Fix hover card animation with a reducer (#3547) 2024-04-14 00:54:45 +01:00
Dovgonosyk eeb1b5e3b4 Update Ukrainian translation (#3537)
Co-authored-by: Ukrainians <github-actions@github.com>
2024-04-13 14:24:32 -07:00
bnewbold bb67757094 add oEmbed links to public post HTML meta headers (#3522) 2024-04-13 12:21:59 -07:00
bnewbold 58842d03a9 rebased embedr (#3511)
* skeleton of embedr service, based on bskyweb

* embedr container setup

* builds on this branch

* actual routes

* fix embedr go:embed

* tweak embedr dockerfile

* progress on embedr

* fix path params

* tweaks to build process

* try to get embedr dockerfile to install embed deps

* build this branch

* updates to match sam's output HTML

* try to unbreak embedr dockerfile

* small embedr tweak

* docker hack

* get embed.js copied over to embedr

* don't x-frame-options for embed.bsky.app

* bskyembed: remove a console.log

* use html/template for golang snippet generation

* simplify embedr API fetches

* missing file

* Rm console.log fully

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 12:20:06 -07:00
Mary 196dd3a8ab Increase hit slop for web's app language picker (#3535)
* fix: make app language picker tap region larger

* fix: add right padding on drawer signup card

noticeable on portuguese language

* fix: mimic hitSlop
2024-04-13 12:02:22 -07:00
Takayuki KUSANO a8c1e71907 Update Japanese translation (#3425)
* Updated Japanese translation and removed obsolete messages

* Forgot to add trailing question mark

* Unified translation of "birthday"/"birthdate"/"birth date", undo unnecessary entries to reduce the difference

* Translated new strings

* Unified translation of 'copyright violation'

* Sync with main latest, unified translation of 'people'
2024-04-13 11:50:32 -07:00
dan 2164d32295 Fix oopsie (#3538) 2024-04-13 18:40:50 +01:00
Hailey 228d947a84 Fade in animation for card (#3521)
* fade in and out the card

one more fix

dont leave an invisible card behind

okay just about there

move styles

glitch

clear hide timeouts on card enter

about there

* Tweak timings

* Rewrite with explicit states

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 18:28:53 +01:00
Samuel Newman 1a9eeb760f [Embeds] Add ref_url (#3533)
* get outer location and pass in to the iframe

* enable post.html in dev

* only add ref_url if starts with http

* Revert "enable post.html in dev"

This reverts commit 6f224c6e2c.

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 13:22:19 +01:00
Samuel Newman 4c95ec2ec4 add ref_src (#3532) 2024-04-13 12:44:37 +01:00
dan 9fb20915e8 [Embed] Don't reuse DOM when changing embed (#3530)
* Don't reuse DOM when changing embed

* add skeleton loading state 💀

* autoselect text

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-04-13 12:19:21 +01:00
dan 1390b1dc9e [Statsig] Send ref source (#3531)
* [Statsig] Send ref source

* Add is web check

* Fix types
2024-04-13 12:09:49 +01:00
dan c3f75330ed More obvious click area (#3528) 2024-04-13 11:46:16 +01:00
Samuel Newman acbadc610b add hideRecord prop (#3527) 2024-04-13 11:42:23 +01:00
Samuel Newman c1137c3984 [Embeds] Tweak homepage styles (#3526)
* tweak error styles

* reduce error horizontal padding
2024-04-13 11:18:50 +01:00
Hailey 826f6b043c Moderate content in embeds (#3525)
* move info to its own file

* Revert "move info to its own file"

This reverts commit 1d45a2f403.

* better way

* all cases

* pass labelInfo to ImageEmbed

* blur avatars

* add back as string

* one more as string

* external embed

* add back as string again
2024-04-13 11:18:18 +01:00
Eric Bailey f5bb348bf5 Profile hovers (#3518)
* Add hover card for mentions

* Reposted by

* Fix key

* Add to composer reply to
2024-04-13 06:13:53 +01:00
dan a845587e1f [Embeds] Show error for users with PWI flag on landing (#3524) 2024-04-13 05:50:09 +01:00
Samuel Newman 4c966e5d6d [Embeds] "Embed post" post dropdown option (#3513)
* add embed option to post dropdown menu

* put embed post button behind a gate

* increase line height in dialog

* add gate to gate name union

* hide embed button if PWI optout

* Ungate embed button

* Escape HTML, align implementations

* Make dialog conditionally rendered

* Memoize EmbedDialog

* Render dialog lazily

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 05:13:53 +01:00
Samuel Newman 4b3ec55732 [Embeds] Embed subdomain landing page (#3501)
* add build output to web build

* simplify post-build step by copying everything at once

* make script that converts placeholder -> iframe

* dynamically resize iframe based on inner content

Requires the iframe content to `postMessage` its height back up to the parent

* add lang to embed

* svg explicit height -> viewBox

* add build output to web build

* simplify post-build step by copying everything at once

* attempt to fix go embed issue

* rm changes to bskyweb

* remove another bskyweb change

* embed landing page

* Drop xl breakpoint, too far down

* Remove pointer enter behavior

* Avoid button width jump

* Escape HTML

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 03:58:40 +01:00
Samuel Newman 8e29b1f633 [Embeds] Embed for single post (#3450)
* add bskyembed vite app

* create build script (temp until embedr is ready)

* add build output to web build

* simplify post-build step by copying everything at once

* add simple post viewer

* add butterfly logo

* add vite plugin legacy

* proper error screen

* add image embed

* add url embed

* record embed + embedwithmedia

* add list+feed embeds

* add labeller embed (just to be safe)

* fix curatelist and modlist being the wrong way around

* Add PWI opt-out

* add favicon

* improve wording of PWI

* remove padding I used for screenshots

* add disabled state to embed

* improve PWI styles by adding an icon

* remove unused prop

* rm open proxy

* [Embeds] Add CTA and add general polish - input needed! (#3454)

* add CTA, colourful icons, and bigger logo

* make hover effect smaller + add to cta

* more responsive + preserve whitespace

* add trailing newsline to deploy script

* add repost indicator

* Make butterfly link to content

* More consistent error text wording

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-13 02:07:39 +01:00
Hailey 93731e6d6b cache fix for search post results (#3520) 2024-04-12 17:31:55 -07:00
Hailey 7d01ff90d3 wait a sec before showing card (#3516) 2024-04-12 16:51:07 -07:00
Kisaragi Hiu cefa0a55e8 android: fix navigation bar always being bright even in dark mode (#3464)
Right now both light mode and dark mode get light navigation bar, and
looks jarring in the dark modes.

This commit applies a more appropriate color before the UI thread
runs (in app config), as well as applying the current theme background
after the UI shell is mounted.

This should fix #3332.

Co-authored-by: Hailey <me@haileyok.com>
2024-04-12 15:40:22 -07:00
Hailey c3821fdc31 Remove vertical scrollbars from views on native (#3429)
* remove vertical scrollbars

* add to a few missing lists

* gate this change

* use `hide_vertical_scroll_indicators`

* fix gate lint

* fix bool
2024-04-12 15:22:09 -07:00
Eric Bailey 6218eb0eea Zhuzh sign in dialog (#3512) 2024-04-12 15:19:58 -07:00
Eric Bailey 1f61109cfa Profile card hover preview (#3508)
* feat: initial user card hover

* feat: flesh it out some more

* fix: initialize middlewares once

* chore: remove floating-ui react-native

* chore: clean up

* Update moderation apis, fix lint

* Refactor profile hover card to alf

* Clean up

* Debounce, fix positioning when loading

* Fix going away

* Close on all link presses

* Tweak styles

* Disable on mobile web

* cleanup some of the changes pt. 1

* cleanup some of the changes pt. 2

* cleanup some of the changes pt. 3

* cleanup some of the changes pt. 4

* Re-revert files

* Fix handle presentation

* Don't follow yourself, silly

* Collapsed notifications group

* ProfileCard

* Tree view replies

* Suggested follows

* Fix hover-back-on-card edge case

* Moar

---------

Co-authored-by: Mary <git@mary.my.id>
Co-authored-by: Hailey <me@haileyok.com>
2024-04-12 17:01:32 -05:00
Hailey f91aa37c6b Enable updates for production behind receive_updates gate (#3496)
* add gate type

* gate the updates

* enable updates in `production`

* web placeholder for `useOTAUpdates()`

* update comment
2024-04-12 14:51:53 -07:00
surfdude29 1f587ea4b6 Remove obsolete strings from en message catalog (#3462) 2024-04-12 14:49:36 -07:00
imbstt aa1d4d4e26 Update German translations (#3466)
* Change occurrences of "likt" to "liked"

* Improve existing German translations

* Translate new strings for German translation

* Apply suggestions from code review

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

---------

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>
2024-04-12 14:48:08 -07:00
Gildásio Filho f6dc216110 Update pt-BR localization to latest version (#3472)
* Update messages.po

* Update messages.po
2024-04-12 14:47:16 -07:00
Ivan Beà 5aed7db208 Update Catalan messages.po (#3476)
* Update messages.po

new lines translated

* Update messages.po

change {nom} by {name}

* Update messages.po

update changes by @jordimas
2024-04-12 14:46:39 -07:00
Frudrax Cheng a306fbfca3 Update zh-TW Localization (#3478)
* Update messages.po

* Fix typo

* Update messages.po

* Remove superseded strings
2024-04-12 14:46:15 -07:00
Minseo Lee 7b02b5d716 Update Korean localization (#3491)
* Update messages.po

* Update messages.po
2024-04-12 14:45:13 -07:00
Paul Frazee 4fab3c42f9 Remove report post option from PWI (#3510) 2024-04-12 14:43:55 -07:00
Paul Frazee ec5c4929c1 PWI improvements (#3489)
* Enable home and feeds on the PWI

* Add global SigninDialog to drive useRequireAuth()

* Tweak desktop styles

* Make the logo in leftnav PWI a clickable home link

* Add label

* Improve dialog on web

* Fix query key

* Go to home after signout from settings screen

* Filter out feeds from the discover listing for logged out users which are known to break without auth

* Update profile header follow/subscribe to give signin prompt

* Show profile feeds tabs on pwi

* Add language selector to account creation footer and pwi left nav desktop

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-04-12 14:13:13 -07:00
Hailey 44039c68d6 Store QP authors in the DID cache (#3509)
* store qp author in did cache

* organize

* this seems nicer

* move outside of jsx
2024-04-12 12:53:48 -07:00
dan 835f2e6548 Fix stale Notifications after push (#3507) 2024-04-12 11:33:34 -07:00
Paul Frazee 14208eef11 Fix: dont let notifications count go behind the icon (#3505) 2024-04-12 10:21:55 -07:00
Hailey eb2fd53340 QT Jump Pt. 2 - Remove code duplication (#3506)
* remove code duplication

* now it's safe to remove shimmer
2024-04-12 18:00:44 +01:00
dan 7047755c50 Fix optimistic like/repost (#3503) 2024-04-12 16:39:59 +01:00
Samuel Newman f3951f2718 remove build-embed from Dockerfile (#3502) 2024-04-12 16:14:20 +01:00
Paul Frazee ed2c8b720e Dont apply the content-language filter if it will remove all content (#3492)
* Dont apply the content-language filter if it will remove all content

* Improve code
2024-04-12 15:53:11 +01:00
Samuel Newman ad97d4350c [Embeds] Create vite project and add to build pipeline (#3448)
* add bskyembed vite app

* create build script (temp until embedr is ready)
2024-04-12 15:52:26 +01:00
Hailey 24bd3d6986 add likeCount etal. to embedViewRecordToPostView (#3500)
* fix qt jumps

Revert "don't show loading placeholder if we don't need it"

This reverts commit 406f801f217b2733fdd82732c0af74186fc47464.

don't show loading placeholder if we don't need it

add `likeCount` etal. to `embedViewRecordToPostView`

* lint

* Revert the shimmer change

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-04-12 15:49:09 +01:00
dan bedb0c3fbd Use getSuggestions endpoint behind the gate (#3499)
* Move suggested follows out of the component

* Add new suggestions implementation

* Put new endpoint behind the gate

* Make bottom less weird
2024-04-12 13:02:15 +01:00
Hailey e3e8f10538 Added new_profile_scroll_component to Gate type (#3487)
* added to the types

* alphabetical pls

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-04-11 23:59:13 +01:00
dan 491116ca66 Fix useGate lint rule (#3486) 2024-04-11 23:59:02 +01:00
Hailey 4e51772003 Make bio area scrollable on iOS (#2931)
* fix dampen logic

prevent ghost presses

handle refreshes, animations, and clamps

handle most cases for cancelling the scroll animation

handle animations

save point

simplify

remove unnecessary context

readme

apply offset on pan

find the RCTScrollView

send props, add native gesture recognizer

get the react tag

wrap the profile in context

create module

* fix swiping to go back

* remove debug

* use `findNodeHandle`

* create an expo module view

* port most of it to expo modules

* finish most of expomodules impl

* experiments

* remove refresh ability for now

* remove rn module

* changes

* cleanup a few issues

allow swipe back gesture

clean up types

always run animation if the final offset is < 0

separate logic

update patch readme

get the `RCTRefreshControl` working nicely

* gate new header

* organize
2024-04-11 15:20:38 -07:00
Hailey 740cd029d7 Improve Android haptic, offer toggle for haptics in the app (#3482)
* improve android haptics, offer toggle for haptics

* update haptics.ts

* default to false

* simplify to `playHaptic`

* just leave them as `feedInfo`

* use a hook for `playHaptic`

* missed one of them
2024-04-11 15:20:26 -07:00
Samuel Newman 9007810cdb Search - only enable queries once tab is active (#3471)
* only enable queries once tab is active

* remove hasBeenTrue hook

* make enabled optional
2024-04-10 23:32:31 +01:00
dan 310d865440 [Statsig] Mark Testflight as staging tier (#3470) 2024-04-10 20:08:46 +01:00
dan 427f3a848d [Statsig] Typecheck gates (#3467)
* Typecheck gates

* Lint against untyped useGate()

* Alphabetic
2024-04-10 19:36:37 +01:00
Hailey bf974b147e Bump to 1.77 (#3468) 2024-04-10 08:50:44 -07:00
Samuel Newman 353a963920 Search - extra tabs (#3408)
* add extra tab to search and translate tab names

* add feature gate

* flatten pager children

* Revert "flatten pager children"

This reverts commit 0050d42558.

* have pager children as array

* move gate to custom hook

* bundle titles and pages together

* remove comment

* Fix a crash

* Use Views as children

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-04-10 16:02:13 +01:00
Hailey b5f5777939 notify slack on production builds (#3461)
* notify slack on production builds

* ugh
2024-04-09 17:25:59 -07:00
Hailey 26f5e02afa notify slack on production builds (#3460) 2024-04-09 17:00:14 -07:00
Paul Frazee ee87f2cadd 1.76 release preparations (#3459)
* Run intl:extract

* Update dev-env to 0.3.4

* Test fixes
2024-04-09 16:27:39 -07:00
Frudrax Cheng fbcd4ddabc Update zh-CN translation (#3433)
* Update messages.po

* Update messages.po by reviewer suggestions

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po by reviewer suggestions

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po by reviewer suggestions

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po by reviewer suggestions

Co-authored-by: Leonid <kasumi@bangdream.moe>

* Update messages.po by reviewer suggestions

* Remove superseded strings

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: Leonid <kasumi@bangdream.moe>
2024-04-09 15:13:00 -07:00
Gabriella edab3d2db6 Italian Localization (#3388)
* Italian Localization

New strings translated for v.1.75

* Update messages.po

Changed two expressions following the revision of @marcomaroni

* Update messages.po

Additional changes to text applied following the suggestion of external translators.

* Update messages.po

Deleted extra stop and corrected a gramatical error

* Update messages.po

Added a correction on string 414 which had a grammatical error.

* Update messages.po

String with Labeler updated.

* Update messages.po

Additional changes made to wordings in traduced strings
2024-04-09 15:12:28 -07:00
dan d89b6eb7fd [Statsig] Send prev route name (#3456) 2024-04-09 15:09:53 -07:00
dan c300d4cab6 [Statsig] Instrument feed display (#3455)
* [Statsig] Instrument feed display

* Back out leftover change
2024-04-09 15:09:42 -07:00
Eric Bailey c96bc92042 Small logic cleanups (#3449)
* Small logic cleanups

* Small logic cleanups (#3451)

* remove a few things

* oops

* stop swallowing the error

* queue callbacks

* oops

* log error if caught

* no need to be nullable

* move isClosing=true up

* reset `isClosing` and `closeCallbacks` on close completion and open

* run queued callbacks on `open` if there are any pending

* rm unnecessary ref and check

* ensure order of calls is always correct

* call `snapToIndex()` on open

* add tester to storybook

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-04-09 15:08:02 -07:00
Samuel Newman a49a5a351d Use ALF for the embed consent modal (#3336) 2024-04-09 00:58:18 +01:00
Eric Bailey 2bc20b1752 Onboarding tweaks (#3447)
* Remove feed

* Follow bsky.app
2024-04-08 14:32:00 -05:00
dan 6d3f9397f4 [Experiment] Ignore the persisted tab (#3442) 2024-04-08 18:39:32 +01:00
dan f03390e4b2 [Experiment] Show "Follow Back" label (#3439) 2024-04-08 18:38:59 +01:00
dan 887fedabea [Statsig] Track like/follow metadata (#3435)
* Track becoming mutuals

* Track poster/liker status

* Track post and followee clout

* Track follower and liker clout

* Extract utility
2024-04-08 18:38:51 +01:00
dan 8188f61e7d [Experiment] Turn off interval polling for Discover (#3431)
* Include feed URL in feed events

* [Experiment] Turn off polling interval for Discover
2024-04-08 17:21:44 +01:00
dan 1150007d37 Auto-expand follow suggestions on web (#3432) 2024-04-08 17:20:58 +01:00
dan ed5647d434 [Experiment] Disable min shell on foregrounding (#3430) 2024-04-08 17:20:41 +01:00
Hailey 731d94b973 Implement back button fix for all places in the app (#3434) 2024-04-08 09:09:40 -07:00
Hailey a1ac84687f Keep each deployment job in a separate concurrency group (#3446) 2024-04-08 08:54:50 -07:00
Hailey 00076ad1ff Bump async-storage to comply with App Store guidelines (#3436) 2024-04-08 08:24:59 -07:00
Hailey a6babaceaf adjust app.config.js to prevent development manifest error (#3413) 2024-04-05 13:29:54 -07:00
Hailey cd29dba761 fix dialog back button for android (#3428)
* fix types

* remove unused async

* add try/catch
2024-04-05 12:52:53 -07:00
Hailey c80dcc565e only run labelers for core team (#3426)
* use `pull_request_target` instead of `pull_request`

* adjust

* only run for core team
2024-04-05 08:58:28 -07:00
Hailey 443dfb5c3e prevent deployment race conditions (#3416) 2024-04-05 08:27:22 -07:00
dan 46c112edfd Enforce that text is wrapped in <Text>, remaining cases (#3421)
* Toggle.Button -> Toggle.ButtonWithText

* Simplify Prompt.Cancel/Action

* Move lines down for better diff

* Remove ButtonWithText

* Simplify types

* Enforce Button/ButtonText nesting

* Add suggested wrapper in linter error

* Check <Trans> ancestry too

* Also check literals

* Rm ts-ignore
2024-04-05 15:09:35 +01:00
dan 49266c355e Remove special cases for some buttons with text (#3412)
* Toggle.Button -> Toggle.ButtonWithText

* Simplify Prompt.Cancel/Action

* Move lines down for better diff

* Remove ButtonWithText

* Simplify types
2024-04-05 14:57:53 +01:00
Hailey 9b087b721d Lint and check types before building (#3424) 2024-04-04 23:15:59 -07:00
Hailey 40ccb574b8 properly import linear gradient (#3423) 2024-04-05 06:03:14 +01:00
Hailey 9bcb0a7a81 migrate to expo-linear-gradient (#3420)
* replace packages

* rm useless alias from webpack config

* fix accidental double commit

* replace all usages
2024-04-04 21:22:13 -07:00
Hailey 4e59914d2a migrate to 'expo-haptics' (#3418)
* migrate to 'expo-haptics'

* run yarn install twice if necessary
2024-04-04 21:19:38 -07:00
Hailey cddbbc4bd4 migrate to expo-application (#3417)
* migrate to `expo-application`

* replace additional usage
2024-04-04 21:19:28 -07:00
Hailey 0433f8ad68 migrate to expo-clipboard (#3419)
* replace package

* replace usages
2024-04-04 21:19:15 -07:00
Hailey 101d1589bf Bump some Expo package, remove unused packages to prepare for migration (#3415)
* bump some package versions

* remove completely unused packages

* remove blurview

* update yarn.lock
2024-04-04 18:30:32 -07:00
Samuel Newman 93b606e55a Use CSS keyframe animation for spinner on web (#3411)
* Use css keyframe animation for spinner on web

* duplicate css to index.html
2024-04-04 23:18:06 +01:00
dan 575f390d7b Fix false positive DEV check (#3410) 2024-04-04 22:54:18 +01:00
Hailey 2e048706e9 fix comments on prs (#3406)
* fix comments on prs

* remove labels

* remove test
2024-04-04 13:52:38 -07:00
dan 3915bb4316 Enforce Text suffix for Text-rendering components (#3407)
* Rm unused

* Add Text suffix to Title/Description

* Add Text suffix to text components

* Add Text suffix to props

* Validate Text components returns
2024-04-04 21:34:55 +01:00
Hailey c190fd58ec replace deprecated term with q in search actor (#3405) 2024-04-04 11:13:11 -07:00
dan b783745b2e Extract query key roots to constants (#3404)
* Extract query key roots to constants

* Dedupe labelers-detailed-info

* Align naming
2024-04-04 18:57:38 +01:00
Paul Frazee b26abf212e Enable tags on profile descriptions (close #3081) (#3397) 2024-04-04 10:52:35 -07:00
surfdude29 8b3017bca0 Alphabetise languages by language code (#3350)
* Alphabetise languages in lingui.config.js

* Alphabetise languages in helpers.ts

* Alphabetise languages in i18n.ts

* Alphabetise languages in i18n.ts

* Alphabetise languages in i18n.web.ts

* Alphabetise languages in languages.ts
2024-04-04 10:51:54 -07:00
Jan-Olof Eriksson 51e939ed3d Bug fixes and some improvements to Finnish localization (#3306)
* Update messages.po

Couple of nasty bugs.

* Update messages.po

Bugs and improvements

* Update messages.po

Hashtag = aihetunniste, not just "tunniste"

* Update messages.po

typo

* Update messages.po

Liked by, tykännyt

* Update messages.po

More translations.

* Update messages.po

* Update messages.po

* Update messages.po

Following - Seurataan

* Update messages.po

one typo

* Update messages.po

line 352 fixed
2024-04-04 10:49:04 -07:00
Samuel Newman 9f657fbace Open share sheet when long pressing link (#3317)
* uitextview use library w/ fixes

bump

bump

multiple uitextview fixes

* bump

* Open share sheet on link long press

* rm package manager field

* add link warning to longpress

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-04-04 10:37:57 -07:00
Hailey 4d28dcc48f rm 'pornography' label wording (#3402)
* rm 'pornography'

* add `adult content` to `REASONSEXUAL`
2024-04-04 10:15:04 -07:00
dan 3e88fdfbc4 Don't mutate array (#3403) 2024-04-04 18:14:44 +01:00
dan 19b1721ef3 Fix profile follow from Likes (#3401) 2024-04-04 18:03:58 +01:00
dan 4cc57f4bfd Lint against strings without wrapping <Text> (#3398)
* Add a rudimentary rule

* Get the rule passing

* Support special-casing text props

* More tests
2024-04-04 17:32:50 +01:00
Hailey 8e393b16f5 Simplify list logic further to prevent misuse (#3334)
* simplify list logic further

more simplification

simplify by removing `isEmpty`

use `isFetchingNextPage` everywhere for clarity

change `isFetching` to `isFetchingNextPage` for clarity

remove some useless `useMemo`s

move `renderItem` and `keyExtractor` out of component

* clean bundle size check

* update deploy

* adjust

* adjust

* one test

* try now

* test it

* done
2024-04-03 20:59:33 -07:00
Hailey b1bd7ab6e3 Add webpack analyzer, PR comments for webpack bundle size (#3383)
try that again 9

try that again 8

try that again 7

try that again 6

try that again 5

try that again 4

try that again 3

try that again 2

try that again

merge base 3

merge base 2

merge base

use latest main commit rather than tag

webpack diff analyzer

use cache v4

use cache

again...

blegh

blegh

try cache again

cache

try again

one more adjutment

adjust

okay again maybe

maybe now?

maybe now

oops again

oops

add diff comments

add open analyzer script

add webpack analyzer
2024-04-03 19:31:29 -07:00
Gildásio Filho 9d9c9095ee Update pt-BR localization to latest version (#3371)
* Update messages.po

* Update messages.po

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update messages.po

---------

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
2024-04-03 19:22:10 -07:00
Samuel Newman 712768dd8f Use ALF for the account quick switch dialog (#3327)
* Use ALF for account quick switch

* clean up modal type

* add haptics to dialog opening

* move account list to it's own component and share

* make tick slightly darker
2024-04-03 19:18:14 -07:00
Ivan Beà 8cdd8394df Update catalan localization messages.po (#3307)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

Apply corrections suggested by @surfdude29, thanks

* Update messages.po

adding @jordimas corrections
2024-04-03 18:53:58 -07:00
dan e51ccb46b8 Scope query client per DID (#3333)
* Move QueryProvider inside the key

* Pull useQueryClient-dependent code down in App.native

* Remove useQueryClient dependency from session provider

* Scope query client per DID
2024-04-04 02:51:10 +01:00
Hima db3cd3e821 Fix & Add: Japanese Translation (6) (#3304)
* Create test.txt

* Delete src/locale/locales/ja/messages.po

* Add files via upload

* Delete src/locale/locales/ja/test.txt

* messages.po を更新

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* messages.po を更新

* messages.po を更新

* messages.po を更新

* messages.po を更新
2024-04-03 18:49:48 -07:00
Minseo Lee af9b961411 Fix magnify icon (#3292)
* Update icons.tsx

* Update icons.tsx
2024-04-03 18:49:14 -07:00
Minseo Lee 7cf22e2047 Update Korean localization (#3281)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-04-03 18:47:04 -07:00
Hailey 7fb117d213 Upgrade UITextView to latest (#3090)
* uitextview use library w/ fixes

bump

bump

multiple uitextview fixes

* bump

* update to latest

* cleanup
2024-04-03 18:05:03 -07:00
Hailey a356b1be1a Work around GitHub false-positive for passing secret to another action (#3396)
* run bundle/deploy on main pushes

* don't fetch from origin if not necessary

* fix false-postive for secret in outputs

rm test

test 'false'

rm test

use in both places

workaround "secret" string

add a manual testflight deployment option for android

add a manual testflight deployment option for android

add a manual testflight deployment option for android

* rm test code
2024-04-03 18:04:48 -07:00
Kevin Scannell cad0590694 Irish PO file thanks to @kingdonncha1.bsky.social (#2924)
* Irish PO file thanks to @kingdonncha1.bsky.social

* feat: add Gaeilge options added by @kscanne into the GUI

---------

Co-authored-by: Kat Gaea <kat.knight@newgaea.net>
2024-04-03 17:32:53 -07:00
Paul Frazee 93fbd91193 Add cursor to 'learn more' on screenhider (close #2871) (#3395) 2024-04-03 17:28:31 -07:00
Paul Frazee 9d5c82d9a8 Merge branch 'atiksoftware-main' into main 2024-04-03 17:15:33 -07:00
Paul Frazee 55e4ea84f8 Add turkish to app languages 2024-04-03 16:50:15 -07:00
dan a32eb96210 Show redbox in DEV on string <View> child for web (#3394) 2024-04-04 00:46:49 +01:00
Paul Frazee a4d4562aba Merge branch 'main' of https://github.com/atiksoftware/social-app into atiksoftware-main 2024-04-03 16:31:13 -07:00
Hailey eda98679df don't fetch from origin if unnecessary when performing OTA deploy (#3392)
* run bundle/deploy on main pushes

* don't fetch from origin if not necessary
2024-04-03 16:27:17 -07:00
Hailey 8e882a4579 run bundle/deploy on main pushes (#3391) 2024-04-03 16:00:52 -07:00
dan 295a0949f4 Factor out QueryProvider (#3331) 2024-04-03 23:53:44 +01:00
dan 6c728f79de Make notifications init reactive to queryClient (#3329) 2024-04-03 23:42:28 +01:00
dan fc1e30afd6 Thread queryClient explicitly through (#3328)
* Pass queryClient explicitly to resetProfilePostsQueries

* Pass queryClient explicitly to updatePostShadow

* Pass queryClient explicitly to updateProfileShadow
2024-04-03 23:33:46 +01:00
Hailey 73df7e53b3 Add OTA updates support for testflight channel (#3291)
* some progress

another adjustment, testing

another adjustment, testing

fix again

fix again

set default runtime version

fix

test this script

test this script

test this script

add build numbers to the deployment url

clean

give script access to build number

add `useBuildNumberEnv` without a bump

new line

fix missing async

add channel name to deployment url

add updates check on launch for testflight users

ver bump

init updates on launch for native

add `testflight` as default in build submit

add is_testflight check

* disable inline predictions to prevent ios composer jank

* temp bump

* Revert "temp bump"

This reverts commit 44c51134a3.

* adjustments

version bump

adjust

fixes

test

* cleanup and finalize

drop check down to every 15 minutes

adjustments

change to 15 mins

use jq to get version if necessary

rm test on push

figured it out

remove nightly testflight releases

test again again again again again AGAIN ONCE MORE

test again again again again again AGAIN

test again again again again again AGAIN

test again again again again again

test again again again again

test again again again

test again again

test again

test

test

test

run deploy if necessary

run deploy if necessary

run deploy if necessary

run deploy if necessary

run deploy if necessary

remove test message

fix environment

oops

cleanup

merge in changes

* remove unnecessary `workflow_call`

* remove changes that have been merged into main now

* finalize android

update git ignore

rm test stuff from the bundle action

remove test message

test message

fix

test message

test message

few android fixes

few android fixes

fix jq

add a test message

fix slack webhook

create android deployments test 2

create android deployments

add `testflight-android` profile to eas.json

more cleanup

some more cleanup

simplify some logic

remove unnecessary channel

rename to `useOTAUpdates`

* rm test portion
2024-04-03 15:14:44 -07:00
Danni 02b2ab4f1f Update Indonesian ID translation to latest (#2803)
* Update Indonesian translation.

* Apply suggestions from code review

Co-authored-by: Fafin <151415765+kodebanget@users.noreply.github.com>
Co-authored-by: Aditya Dirgantara <ccoremapd@icloud.com>

* Update src/locale/locales/id/messages.po

Co-authored-by: Aditya Dirgantara <ccoremapd@icloud.com>

* Change Umpan word to Feed on ID locale

---------

Co-authored-by: Fafin <151415765+kodebanget@users.noreply.github.com>
Co-authored-by: Aditya Dirgantara <ccoremapd@icloud.com>
2024-04-03 14:30:53 -07:00
Frudrax Cheng b76bf9484d Add zh-TW localization (#2781)
* add zh-TW localization

* fix typo

* fix languages.ts

* improve translation

* improve translation

* 部分翻譯修正
- 使用全形標點符號
- 將部分簡體字修正為正體字
- 更改部分用語

* fix incorrectly commented strings

* small fix and suggestion

* update translation team

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* modify the translation based on the review suggestions

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: noeFly <jeffyang0123@gmail.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: noeFly <jeffyang0123@gmail.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: noeFly <jeffyang0123@gmail.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>

* modify translation by review

* modify translation by review

* modify translation by review

* modify translation by review

* modify translation by review

* modify translation by review

* minor fixes

* minor fixes

* Update messages.po

* translate new strings

* fix typo

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* fixed typo

* Update messages.po

* correct translation

* Update messages.po

* modify translation by review

* Update messages.po

* Update messages.po

---------

Co-authored-by: noeFly <jeffyang0123@gmail.com>
Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: Yuki Cheung <13027432+snowleo208@users.noreply.github.com>
Co-authored-by: Howard Guo <50100922+toto6038@users.noreply.github.com>
2024-04-03 14:30:04 -07:00
dan 75d6535402 Remove Button error boundary (#3372) 2024-04-03 19:11:29 +01:00
Samuel Newman 75c9da931c Add share warning to big share button in post ctrl (#3367) 2024-04-03 19:03:54 +01:00
Samuel Newman 907c7c0586 make entire recent search clickable (#3387) 2024-04-03 16:13:29 +01:00
dan 8de27160f5 Remove unnecessary yarn call (#3380) 2024-04-03 03:05:53 +01:00
dan 67fca733fa Use Prettier at the root (#3375) 2024-04-02 12:02:20 +01:00
dan a45da17c48 Separate ESLint and Prettier (#3373)
* Disable legacy Prettier ESLint integration

* Run Prettier separately

* Add caching

* Separate -some and -all

* Reduce node inits
2024-04-01 22:58:31 -07:00
Hailey 0ff7e71ee3 disable inline predictions to prevent ios composer jank (#3363)
* disable inline predictions to prevent ios composer jank

* temp bump

* Revert "temp bump"

This reverts commit 44c51134a3.
2024-03-31 15:55:30 -07:00
Samuel Newman 3f79cb3e12 apply bg color to entire scrollview (#3364) 2024-03-31 14:51:31 -07:00
surfdude29 69217f9a09 Mark Retry and Go Back buttons in Error.tsx for localisation (#3352)
* Mark `Retry` and `Go Back` buttons in Error.tsx for localisation

* add and sort imports

* sort imports better
2024-03-29 17:51:35 -07:00
Hailey ef24611a1f revert change for closing composer on web only (#3343) 2024-03-22 17:05:39 -07:00
Paul Frazee 0baf9f9919 1.75 2024-03-22 13:07:54 -07:00
surfdude29 d507fa9f38 Mark under13 and Next and Back buttons in signup for localisation (#3341)
* Mark under13 string for translation

* Mark buttons for localisation

* tweak label

* wrap in `ButtonText`

* lint

* try to fix lint again
2024-03-22 10:18:00 -07:00
Eric Bailey 5b44aa962f Wrap Button children in an error boundary (#3340)
* Wrap Button children in an error boundary

* Check for Trans component
2024-03-22 12:14:47 -05:00
Eric Bailey f04932140a Fix crash during onboarding (#3338)
* Fix crash during onboarding

* Fix other usage
2024-03-22 11:32:49 -05:00
Samuel Newman b27a0b8c97 Merge pull request #3337 from bluesky-social/samuel/scrollable-loggedoutlayout
Move scrollview to `LoggedOutLayout` to fix scrolling on web
2024-03-22 15:36:10 +00:00
Hailey 772d528145 fix android back after closing composer (#3330) 2024-03-22 08:16:34 -07:00
Samuel Newman 4ec434926e move auth flows scrollview to loggedin layout 2024-03-22 13:49:19 +00:00
Samuel Newman 6f2dfcb502 Merge pull request #3326 from bluesky-social/samuel/lowercase-i
Change Sign In -> Sign in on Splashscreen
2024-03-22 00:34:42 +00:00
Samuel Newman a3eab31bda Sign In -> Sign in 2024-03-21 22:24:37 +00:00
dan df7f9856bb Use logger.error instead of rethrow (#3323) 2024-03-21 14:39:19 -07:00
Eric Bailey 4d50aac4ee Release fixes (#3318)
* Fix error overflow

* await setSavedFeeds before setting birth date

* await birth date first instead of feeds

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-03-21 12:11:23 -07:00
Samuel Newman e874dd290e Merge pull request #3313 from bluesky-social/samuel/package-manager-field
Specify package manager in package.json
2024-03-21 17:25:40 +00:00
Eric Bailey 5f39ca3187 Mods UI fixes (#3296)
* Fix report dialog buttons on Android by adjusting styles

* Dry up label pref comp
2024-03-21 12:21:36 -05:00
Hailey 4ff2bb7aba Fix missing error on PostThread (#3295) 2024-03-21 10:16:04 -07:00
Eric Bailey eb0ee6ae1c Fix dialogs state references, fixes Android back button (#3314)
* Fix active/open dialogs state

* Improve close logic
2024-03-21 12:06:39 -05:00
dan 55fb81867b [Statsig] Protect against early logEvent call crashing (#3315)
* [Statsig] Check if initialized

* Never interrupt the caller
2024-03-21 17:01:55 +00:00
Eric Bailey 7503d83eaa Fix android splash jump (#3316)
* Setup translucent status bar of splash screen on android (#3300)

Co-authored-by: Eric Bailey <git@esb.lol>

* Fix conflict better

---------

Co-authored-by: Eiichi Yoshikawa <edo@bari-ikutsu.com>
2024-03-21 11:53:01 -05:00
Samuel Newman a8ccc91335 Specify package manager in package.json 2024-03-21 16:00:36 +00:00
dan 396d183dfc [Statsig] Onboarding and routing events (#3302) 2024-03-21 11:04:02 +00:00
Hailey ad3dd9f6dc Fix problems with BottomSheet and the report dialog (#3297)
* use @discord/bottom-sheet

* add @types/invariant

* some progress on keyboard dialog

* rework

rework

add a comment

use discord bottom sheet

* remove `@gorhom/bottom-sheet`

* remove android specific code

* organize imports
2024-03-20 17:26:38 -07:00
Samuel Newman c649ee1afa Merge pull request #3217 from bluesky-social/samuel/alf-login
Use ALF for login & signup flow
2024-03-20 23:29:24 +00:00
Samuel Newman d2d4d3a092 bump pkg json version 2024-03-20 23:28:53 +00:00
Eric Bailey 6bf97d4fd5 Adjust DateField timezone offset 2024-03-20 17:44:31 -05:00
Eric Bailey 0dbc796ff6 Fix key error on choose account 2024-03-20 17:41:17 -05:00
Eric Bailey 19fab671a3 Move some things around 2024-03-20 17:25:08 -05:00
Samuel Newman 8ad813cd86 Merge pull request #3294 from bluesky-social/samuel/alf-splash
Use ALF for Splashscreen
2024-03-20 22:23:35 +00:00
Eric Bailey 58588efcea Bump button size on choose account 2024-03-20 17:18:07 -05:00
Eric Bailey b0fcfa563d Password flow tweaks 2024-03-20 17:14:13 -05:00
Eric Bailey 70f5cc6a9f Login form tweaks 2024-03-20 17:00:35 -05:00
Eric Bailey 5c08f0d95b Remove log 2024-03-20 16:46:37 -05:00
Eric Bailey bcffaffc07 StepInfo tweaks 2024-03-20 16:42:07 -05:00
Eric Bailey aa239451af Signup shell tweaks 2024-03-20 16:26:30 -05:00
Eric Bailey 6e1541f203 HostingProvider tweaks 2024-03-20 16:15:41 -05:00
Samuel Newman 94cc08929f fix pencil svg in asset folder 2024-03-20 20:18:31 +00:00
Samuel Newman 1d10946f54 sort imports for files related to this PR 2024-03-20 19:44:52 +00:00
Samuel Newman 823ce63796 Merge remote-tracking branch 'origin/main' into samuel/alf-login 2024-03-20 19:36:22 +00:00
Samuel Newman 81bc3ed4c3 Merge pull request #3189 from bluesky-social/samuel/sort-imports
Sort imports using eslint-plugin-simple-import-sort
2024-03-20 19:35:53 +00:00
Samuel Newman fb17afc99d dismiss keyboard when opening dialog 2024-03-20 18:02:18 +00:00
Samuel Newman cf9d884b5b use inlinelink instead of textlink 2024-03-20 17:22:36 +00:00
Samuel Newman eacd1cbe2a use alf for splashscreen (web) 2024-03-20 17:11:59 +00:00
Samuel Newman adcd097136 use alf for splashscreen (native) 2024-03-20 17:11:41 +00:00
Samuel Newman 708d0fe3e1 skip initial entering animation for login 2024-03-20 16:10:07 +00:00
Samuel Newman a0839723ee login form back button goes to chooseaccount conditionally 2024-03-20 15:58:54 +00:00
Samuel Newman 6d1307fdc7 rm extra atom 2024-03-20 15:54:55 +00:00
Samuel Newman 4c60d4d070 remove unnecessary group component 2024-03-20 15:42:39 +00:00
Samuel Newman 09e9769eea add logEvent that got lost in merge from main 2024-03-20 15:40:03 +00:00
Samuel Newman d24ffba01d Merge remote-tracking branch 'origin/main' into samuel/alf-login 2024-03-20 15:37:14 +00:00
Paul Frazee 023e12bb4e Run intl:extract (again) 2024-03-19 20:30:03 -07:00
Paul Frazee 832d5734b4 Merge branch 'main' of github.com:bluesky-social/social-app into main 2024-03-19 20:29:13 -07:00
dan 20337ceef1 [Statsig] Track active time (#3289) 2024-03-19 20:25:37 -07:00
Paul Frazee b5bda17812 Merge branch 'main' of github.com:bluesky-social/social-app into main 2024-03-19 20:24:18 -07:00
dan 3d8d1dd173 [Statsig] Track login/logout (#3286)
* [Statsig] Track login/logout

* Fix missing attribution
2024-03-19 20:24:05 -07:00
Paul Frazee 6255e33b50 Run intl:extract 2024-03-19 20:22:52 -07:00
Paul Frazee 2e2fae378a Set keyboardDismisMode to interactive on the report dialog (#3288) 2024-03-19 20:21:25 -07:00
dan b6c9d34e45 [Statsig] Track feed refresh (#3283) 2024-03-19 17:56:31 -07:00
Paul Frazee 54f424d047 Various e2e test fixes (#3284)
* Just use the first picture every time

* Add missing testIDs

* Various test fixes

* Use simplified link fetcher for e2e

* Disable tests for now-n

* Update test-env creation
2024-03-19 17:54:40 -07:00
Hailey a90566d864 use different labels for porn and sexual (#3282)
* use different labels for `porn` and `sexual`

* newline
2024-03-19 17:47:10 -07:00
Samuel Newman 2fa26ceedc hog FormError 2024-03-19 22:16:29 +00:00
Samuel Newman 49cd7e4bcf add pressed state and rm cloneElement 2024-03-19 22:06:59 +00:00
Samuel Newman 1f02ed5d87 change choose account form to use Button + add hover styles 2024-03-19 22:03:49 +00:00
Samuel Newman 2428d22368 change hosting provider and forgot pw touchables to button 2024-03-19 21:58:53 +00:00
Paul Frazee bdf77f8548 Fix detection of !no-unauthenticated (#3279) 2024-03-19 14:43:00 -07:00
Samuel Newman 8556016a69 remove textfield references from hosting provider 2024-03-19 21:37:12 +00:00
cdfzo 43be4f7d3d Fix typo in tagMenuSearchByUser (#3181) 2024-03-19 14:32:59 -07:00
Samuel Newman 717c53bea8 remove explicit height/width 2024-03-19 21:30:41 +00:00
Samuel Newman fd448a5fab rename pencil -> pencilLine and reexport 2024-03-19 21:28:18 +00:00
Samuel Newman 793710b02b rm package manager field 2024-03-19 21:14:51 +00:00
Samuel Newman 8b5279ce15 animate login spinner 2024-03-19 21:10:31 +00:00
Eric Bailey 89709949ab Bump sdk for mute words updates (#3277) 2024-03-19 14:08:07 -07:00
Paul Frazee f2fc654f34 Merge branch 'alexkuz-web-fix-fonts-and-image-box' into main 2024-03-19 14:07:36 -07:00
Paul Frazee e433a1c968 Remove dead style 2024-03-19 14:06:04 -07:00
Paul Frazee a2ed2c3b22 Merge branch 'web-fix-fonts-and-image-box' of https://github.com/alexkuz/social-app into alexkuz-web-fix-fonts-and-image-box 2024-03-19 14:05:43 -07:00
Samuel Newman b226f41560 use in-button spinner instead of activity indicator 2024-03-19 20:56:13 +00:00
Hailey ccf53af2ba Prevent linking to post from an embed in composer (#3275) 2024-03-19 13:26:25 -07:00
dan ebf8644df9 Track notification open (#3274) 2024-03-19 13:19:11 -07:00
Dovgonosyk 0cac671e8a Update Ukrainian translation (#2951)
Co-authored-by: Ukrainians <github-actions@github.com>
2024-03-19 13:13:27 -07:00
surfdude29 69f8ea80f8 Fix typos and clarify two accessibilityHints (#2923)
* Clarify accessibilityHint in Settings

* Fix typo in ModerationMutedAccounts.tsx

* Fix typo in ModerationBlockedAccounts.tsx

* fix lint error in ModerationMutedAccounts.tsx

* try again

* fix lint error in index.tsx

* try again

* Update index.tsx

* Update index.tsx

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-03-19 13:11:48 -07:00
dan 5bec587717 [Statsig] Include OS and track app state changes (#3273)
* Include platform in identify

* Track back/foregrounding
2024-03-19 13:11:26 -07:00
Paul Frazee e9222a9d97 Merge branch 'jaoler-main' into main 2024-03-19 13:04:52 -07:00
Paul Frazee 40908e9ce7 Fix formatting 2024-03-19 13:04:45 -07:00
Paul Frazee 5dc41eb0d9 Merge branch 'main' of https://github.com/jaoler/Bluesky-app-Finnish-translations into jaoler-main 2024-03-19 13:04:06 -07:00
Paul Frazee d966b3e425 Fix merge error 2024-03-19 12:56:29 -07:00
Samuel Newman 10943b4ff4 fix merge issue (double hook) 2024-03-19 19:52:27 +00:00
Samuel Newman 4794ab6b9a Merge remote-tracking branch 'origin/main' into samuel/alf-login 2024-03-19 19:51:35 +00:00
Hailey a1c4f19731 Use ALF for signup flow, improve a11y of signup (#3151)
* Use ALF for signup flow, improve a11y of signup

* adjust padding

* rm log

* org imports

* clarify allowance of hyphens

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* fix a few accessibility items

* Standardise date input across platforms (#3223)

* make the date input consistent across platforms

* integrate into new signup form

* rm log

* add transitions

* show correct # of steps

* use `FormError`

* animate buttons

* use `ScreenTransition`

* fix android text overflow via flex -> flex_1

* change button color

* (android) make date input the same height as others

* fix deps

* fix deps

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-03-19 12:47:46 -07:00
Ivan Beà 5621c80425 Update catalan localization messages.po (#2904)
* Update catalan localization messages.po

Localization of new lines

* Update messages.po

* Update messages.po

Corrections applied
2024-03-19 12:44:22 -07:00
Leonid 0e2619f7d5 Update zh-CN translation to latest version (#2901)
* Update Chinese translation for "followed you" message

* Update translations for zh-CN locale

* Update messages.po

* Delete empty line

* Add translations in messages.po

* fix some issue

* Apply suggestions from code review

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* Update src/locale/locales/zh-CN/messages.po

* accept suggestions

* unify translations

* Update Chinese translations for Navigation and PreferencesHomeFeed

* Update translations

* merge latest translations

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
2024-03-19 12:43:41 -07:00
Paul Frazee d14be05922 Merge branch 'Titianbeetle-main' into main 2024-03-19 12:42:43 -07:00
Paul Frazee 0ae9da83df Merge branch 'main' of https://github.com/Titianbeetle/social-app into Titianbeetle-main 2024-03-19 12:42:37 -07:00
Gildásio Filho f685f9c8c0 Update pt-BR localization to latest version (#2876)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update src/locale/locales/pt-BR/messages.po

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>

* Update messages.po

---------

Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
2024-03-19 12:31:33 -07:00
Paul Frazee 9e4f81b156 Merge branch 'quiple-patch-3' into main 2024-03-19 12:29:57 -07:00
Paul Frazee 14982b9393 Merge branch 'patch-3' of https://github.com/quiple/social-app into quiple-patch-3 2024-03-19 12:29:22 -07:00
Minseo Lee dac73cbeea Update Korean localization (#2769)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update src/locale/locales/ko/messages.po

Co-authored-by: Lens0021 / Leslie <lorentz0021@gmail.com>

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: Lens0021 / Leslie <lorentz0021@gmail.com>
Co-authored-by: Daniel S. Park <soohan@heartade.dev>
2024-03-19 12:24:23 -07:00
Eric Bailey dfe88e1656 Use consistent avatar shape/defaults for labelers (#3257)
* Add type: labeler to easy spots

* Search and ProfileCard

* Filter out of suggested follows

* ComposeReplyTo

* PReviewable avatar in posts

* Lists

* PostMeta

* Notifications

* Autocomplete

* Straggler

* Bump sdk
2024-03-19 12:18:57 -07:00
Hailey b9474a5d55 ProfileFollows and ProfileFollowers cleanup (#3219)
* cleanup PostThread

rm some more unnecessary code

cleanup some more pieces

fix `isLoading` logic

few fixes

organize

refactor `PostThread`

allow chaining of `postThreadQuery`

Update `Hashtag` screen with the component changes

Make some changes to the List components

adjust height and padding of bottom loader to account for bottom bar

* rm unnecessary chaining logic

* maxReplies logic

* adjust error logic

* use `<` instead of `<=`

* add back warning comment

* remove unused prop

* adjust order

* implement list improvements for followers/follows

* update prop name

* small adjustments

fix flex

add window size

adjust isLoading

* remove log

* don't show retry for no results

* don't show error if `isLoading`
2024-03-19 12:11:20 -07:00
Hailey addd66b37f PostThread cleanup (#3183)
* cleanup PostThread

rm some more unnecessary code

cleanup some more pieces

fix `isLoading` logic

few fixes

organize

refactor `PostThread`

allow chaining of `postThreadQuery`

Update `Hashtag` screen with the component changes

Make some changes to the List components

adjust height and padding of bottom loader to account for bottom bar

* rm unnecessary chaining logic

* maxReplies logic

* adjust error logic

* use `<` instead of `<=`

* add back warning comment

* remove unused prop

* adjust order

* update prop name

* don't show error if `isLoading`
2024-03-19 12:10:10 -07:00
Hailey 07e6d001a2 patch-fix RCTRefreshControl (#3259) 2024-03-19 12:05:28 -07:00
Hailey 2255d21bda prevent duplicate pickers from opening on android (#3240)
* prevent duplicate pickers from opening on android

* revert unnecessary changes

* test

* one more test
2024-03-19 12:03:16 -07:00
Hailey 5e0a6a12ff Update trusted hosts, allow #, and add more tests (#3232)
* Update trusted hosts, allow `#`, and add more tests

* update comments
2024-03-19 12:01:54 -07:00
Eric Bailey 5b4b8e47d9 Use default label prefs for pwi (#3271) 2024-03-19 11:39:56 -07:00
Paul Frazee c9c3bd98b7 Rework the labeler selection step of the report flow (#3269)
* Rework the labeler selection step of the report flow

* Fix: use gtMobile

* Use primitives, fix avatar

* Spacing tweaks

* Show handle instead of description

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-03-19 11:38:17 -07:00
Hailey 9277282e6c add expo-updates github action (#3270)
* add expo-updates github action

* add two scripts
2024-03-19 11:18:22 -07:00
surfdude29 a02d5f9eb9 Update French translation (#3117)
* Update French translation

* Apply suggestions from code review

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Update src/locale/locales/fr/messages.po

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Change `étiquette` to `mot-clé`

* Change other usages of `actualité` to `actu`

* Update messages.po

* Change certain space characters to non-breaking spaces

* Update src/locale/locales/fr/messages.po

* Update src/locale/locales/fr/messages.po

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Update messages.po

* Remove superseded strings and match some

* Add new translations

* Update revision date

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-03-19 11:08:33 -07:00
surfdude29 1cefe70ebe Update German translations (#2917)
* Update German translations

* Apply suggestions from code review

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

* Further suggestions from code review

* Apply further suggested change

* Apply suggestions from code review

* Apply suggested changes from PythooonUser

* Update src/locale/locales/de/messages.po

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* Apply suggestions from @cdfzo's code review manually

* Apply suggestion from @cdfzo's code review manually

* Update messages.po

* Update src/locale/locales/de/messages.po

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

* Update messages.po

* Apply suggestions from code review

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

* Update src/locale/locales/de/messages.po

* Update messages.po

* Change `Benachrichtigungen` to `Mitteilungen` in line with #2805

* Apply suggestions from code review

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

* Apply suggestions from code review

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>

* Change four usages of Benutzerhandle

* Update messages.po

* Update src/locale/locales/de/messages.po

* Add credits

* Update messages.po

* Add new translated strings following merge

* Update messages.po

* Update messages.po

* Update german translations by @cdfzo

* Update german translations

* Apply suggestions from code review

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Correct translations from pr review

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update revision date of messages.po

* Update messages.po

* Update messages.po

* Delete superseded strings

* Add new translations

* Update messages.po

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* Apply suggested change from code review by @cdfzo

* Update revision date of messages.po

---------

Co-authored-by: Felix Siebeneicker <felix.siebeneicker@outlook.de>
Co-authored-by: cdfzo <cdfzo@pm.me>
2024-03-19 11:07:26 -07:00
Eric Bailey b622f63918 Mobile mod label setting component (#3267)
* Mobile mod label setting component

* Bump label title size

* Dont show disabled label config on mobile

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-03-19 09:56:11 -07:00
Samuel Newman bd8d8fb9f1 change error to warn 2024-03-19 16:13:15 +00:00
Eric Bailey 877eab0fe3 Fix space on bottom of mod screen (#3266)
* Fix space on bottom of mod screen

* fix PWI label overflow + center loader (#3268)

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-03-19 11:04:41 -05:00
Samuel Newman b6903419a1 simplify gotoForm 2024-03-19 15:31:00 +00:00
Samuel Newman 49a392bfb3 rm useless function wrap 2024-03-19 15:29:25 +00:00
Samuel Newman 08d12d9a3d move FormError to components/forms 2024-03-19 15:28:06 +00:00
Samuel Newman f491bd89cc Merge remote-tracking branch 'origin/main' into samuel/alf-login 2024-03-19 15:18:29 +00:00
Hailey 2a5b0ab2ac add Partial<GestureResponderEvent> to .open() (#3227) 2024-03-19 08:14:29 -07:00
Eric Bailey 8ac5144a58 Bday modal tweaks (#3252)
* Smol tweaks to bday dialog

* Juse use existing DateInput for now

* Remove unused code

* Remove passed-in prefs

* Adjust load state

* Revert "Adjust load state"

This reverts commit 802459fd04.

* Fix type error
2024-03-19 09:57:14 -05:00
Hailey 4de8e8fa14 fix borders for labels tab (#3261)
* fix borders for labels tab

* rm entire wrapping view
2024-03-19 09:56:28 -05:00
Samuel Newman 9c49b209ca Merge pull request #3253 from bluesky-social/samuel/square-border-radii
Fix nested border radius issue on square avatars
2024-03-19 14:51:08 +00:00
Minseo Lee ad43d594c9 Merge remote-tracking branch 'upstream/main' into patch-3 2024-03-19 10:52:29 +09:00
Paul Frazee 3abf302b0b Bump @atproto/api@0.12.0 (#3260)
* Bump @atproto/api@0.12.0

* Fix unit tests
2024-03-18 17:46:25 -07:00
Paul Frazee 959121f394 Update the reporting flow to first select a recipient if the user has multiple labelers (#3258) 2024-03-18 16:15:57 -07:00
Paul Frazee 1b10c7bc08 Use entryway for labeler getServices (#3256) 2024-03-18 14:58:02 -07:00
Samuel Newman 248f51a977 change default avi to use a rect instead of a path 2024-03-18 20:08:58 +00:00
Samuel Newman 63fee70dfe change outer border radius to 10 2024-03-18 20:08:46 +00:00
Paul Frazee 20d463ff2f 3p moderation services [WIP] (#2550)
* Add modservice screen and profile-header-card

* Drop the guidelines for now

* Remove ununsed constants

* Add label & label group descriptions

* Not found state

* Reorg, add icon

* Subheader

* Header

* Complete header

* Clean up

* Add all groups

* Fix scroll view

* Dialogs side quest

* Remove log

* Add (WIP) debug mod page

* Dialog solution

* Add note

* Clean up and reorganize localized moderation strings

* Memoize

* Add example

* Add first ReportDialog screen

* Report dialog step 2

* Submit

* Integrate updates

* Move moderation screen

* Migrate buttons

* Migrate everything

* Rough sketch

* Fix types

* Update atoms values

* Abstract ModerationServiceCard

* Hook up data to settings page

* Handle subscription

* Rough enablement

* Rough enablement

* Some validation, fixes

* More work on the mod debug screen

* Hook up data

* Update invalidation

* Hook up data to ReportDialog

* Fix native error

* Refactor/rewrite the entire moderation-application system

* Fix toggles

* Add copyright and other option to report

* Handle reports on profile vs content

* Little cleanup

* Get post hiding back in gear

* Better loading flow on Mod screen

* Clean up Mod screen

* Clean up ProfileMod screen

* Handle muting correctly

* Update enablement on ProfileMod screen

* Improve Moderation screen and dialog

* Styling, handle disabled labelers

* Rework list of labels on own content

* Use moderateNotification()

* ReportDialog updates

* Fix button overflow

* Simplify the ProfileModerationService ui

* Mod screen design

* Move moderation card from the profile header to a tab

* Small tweaks to the moderation screen

* Enable toggle on mod page

* Add notifs to debugmod and dont filter notifs from followed users

* Add moderator-service profile view

* Wire up more of the modservice data to profiles

* A bunch of speculative non-working UI

* Cleanup: delete old code

* Update ModerationDetailsDialog

* Update ReportDialog

* Update LabelsOnMe dialog

* Handle ReportDialog load better

* Rename LabelsOnMeDialog, fix close

* Experiment to put labeling under a tab of a normal profile

* Moderator variation of profile

* Remove dead code and start moving toward latest modsdk

* Remove a bunch of now-dead label strings

* Update ModDebug to be a bit more intuitive and support custom labels

* Minor ui tweaks

* Improve consistency of display name blurring

* Fix profile-card warning rendering

* More debugmod UI tuning

* Update to use new labeler semantics

* Delete some dead code and do some refactoring

* Update profile to pull from labeler definition

* Implement new label config controls (wip)

* Tweak ui

* Implement preference controls on labelers

* Rework label pref ui

* Get moderation screen working

* Add asyncstorage query persistence

* Implement label handling

* Small cleanup

* Implement Likes dialog

* Fix: remove text outside of text element

* Cleanup

* Fix likes dialog on mobile

* Implement the label appeal flow

* Get report flow working again with temporarily fixed report options

* Update onboarding

* Enforce limit of ten labeler subscriptions

* Fix type errors

* Fix lint errors

* Improve types of RQ

* Some work on Likes dialog, needs discussion

* Bit of ReportDialog cleanup

* Replace non-single-path SVG

* Update nudity descriptions

* Update to use new sdk updates

* Add adult-content-enabled behavior to label config

* Use the default setting of custom labels

* Handle global moderation label prefs with the global settings

* Fix missing postAuthor

* Fix empty moderation page

* Add mutewords control back to Mod screen

* Tweak adult setting styles

* Remove deprecated global labels

* Handle underage users on mod screen

* Adjust font sizes

* Swap in RichText

* Like button improvements

* Tweaks to Labeler profile

* Design tweaks for mod pref dialog

* Add tertiary button color

* Switch moderation UIs to tertiary color

* Update mutewords and hiddenposts to use the new sdk

* Add test-environment mod authority

* Switch 'gore' to 'graphic-media'

* Move nudity out of the adult content control

* Remove focus styles from buttons - let the browser behavior handle it

* Fixes to the adult content age-gating in moderaiton

* Ditch tertiary button color, lighten secondary button

* Fix some colors

* Remove focused overrides from toggles

* Liked by screen

* Rework the moderationlabelpref

* Fix optimistic like

* Cleanup

* Change how onboarding handles adult content enabled/disabled

* Add special handling of the mod authorities

* Tweaks

* Update the default labeler avatar to a shield

* Add route to go server

* Avoid dups due to bad config

* Fix attrs

* Fix: dont try to detect link/label mismatches on post meta

* Correctly show the label behavior when adult content is disabled

* Readd the local hiddenPosts handling

* WIP

* Fix bad merge

* Conten hider design tweaks

* Fix text string breakage

* Adjust source text in ContentHider

* Fix link bug

* Design tweaks to ContentHider and ModDetailsDialog

* Adjust spacing of inform badges

* Adjust spacing of embeds in posts

* Style tweaks to post/profile alerts

* Labels on me and dialog

* Remove bad focus styles from post dropdown

* Better spacing solution

* Tune moderation UIs

* Moderation UI tweaks for mobile

* Move labelers query on Mod screen

* Update to use new SDK appLabelers semantics

* Implement report submission

* Replace the report modal entirely with the report dialog

* Add @ to mod details dialog handle

* Bump SDK package

* Remove silly type

* Add to AWS build CI

* Fix ToggleButton overflow

* Clean up ModServiceCard, rename to LabelingServiceCard

* Hackfix to translate gore labels to graphic-media

* Tune content hider sizing on web desktop

* Handle self labels

* Fix spacing below text-only posts

* Fix: send appeals to the right labeler

* Give mod page links interactive states

* Fix references

* Remove focus handling

* Remove remnant

* Remove the like count from the subscribed labeler listing

* Bump @atproto/api@0.11.1

* Remove extra @

* Fix: persist labels to local storage to reduce coverage gaps

* update dipendencies

* revert dipendencies

* Add some explainers on how blocking affects labelers

* Tweak copy

* Fix underline color in header

* Fix profile menu

* Handle card overflow

* Remove metrics from header

* Mute 'account' not 'user'

* Show metrics if self

* Show the labels tab on logged out view

* Fix bad merge

* Use purple theming on labelers

* Tighten space on LabelerCard

* Set staleTime to 6hrs for labeler details

* Memoize the memoizers

* Drop staleTime to 60s

* Move label defs into a context to reduce recomputes

* Submit view tweaks

* Move labeler fetch below auth

* Mitigation: hardcode the bluesky moderation labeler name

* Bump sdk

* Add missing translated string

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Add missing translated string

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Hailey's fix for incorrect profile tabs

Co-authored-by: Hailey <me@haileyok.com>

* Feedback

* Fix borders, add bottom space

* Hailey's fix pt 2

Co-authored-by: Hailey <me@haileyok.com>

* Fix post tabs

* Integrate feedback pt 1

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 2

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 3

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 4

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 5

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 6

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 7

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Integrate feedback pt 8

Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>

* Format

* Integrate new bday modal

* Use public agent for getServices

* Update casing

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Takayuki KUSANO <65759+tkusano@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-03-18 12:46:28 -07:00
Hailey d5ebbeb3fc Use [bot] in action username (#3250) 2024-03-18 09:59:39 -07:00
Samuel Newman 1dcd5c116f Merge pull request #3247 from bluesky-social/samuel/dynamic-translations
Fix instances of static translations (`t` macro)
2024-03-18 16:14:00 +00:00
Hailey 88ab83bd52 Properly fill container for YT Shorts videos (#3238)
account for jest

account for jest

yt iframe fill container
2024-03-18 09:09:08 -07:00
Samuel Newman 574c8b913d Add missing macro
Co-authored-by: Gildásio Filho <gildasiogx@gmail.com>
2024-03-18 16:01:48 +00:00
Hailey 79175e2a09 Fix PR labeler bot comment delete (#3249) 2024-03-18 08:40:43 -07:00
Samuel Newman fbfb78b860 change usage of t to msg 2024-03-18 14:37:30 +00:00
Alexander K 54dd4af312 remove scrollbar gutter for Chrome when body scroll is locked 2024-03-17 22:20:50 +01:00
Alexander K 0e3b2633b9 Add 'Liberation Sans' font for FireFox on Linux; lightbox buttons adjustments 2024-03-17 21:34:52 +01:00
Minseo Lee 73dae9f7b5 Update Modal.tsx 2024-03-16 17:17:54 +09:00
Minseo Lee 86d036cca8 Update Modal.tsx 2024-03-16 17:04:45 +09:00
Minseo Lee a3786ee5cd Update Modal.tsx 2024-03-16 17:02:05 +09:00
Minseo Lee 12d8f0071a Update ReasonOptions.tsx 2024-03-16 16:56:56 +09:00
Minseo Lee b4480738e3 Update ReasonOptions.tsx 2024-03-16 16:50:15 +09:00
Minseo Lee 7a0bf7266a Update Lists.tsx 2024-03-16 16:48:58 +09:00
Minseo Lee 6d57094c6a Merge branch 'bluesky-social:main' into patch-3 2024-03-16 16:23:04 +09:00
Samuel Newman d2a11f3344 translate error 2024-03-15 22:08:06 +00:00
Hailey 98bca69ae9 Adjust PR Labeler (#3224) 2024-03-15 13:42:51 -07:00
Hailey fa8b21cea7 Add package diff PR labeler (#3212)
* add PR labeler

* test cache

* rm change
2024-03-15 12:28:21 -07:00
Samuel Newman e30b3d9b3c Merge pull request #3218 from bluesky-social/samuel/alf-birthday
Use ALF for the birthday modal and remove legacy one
2024-03-15 16:45:17 +00:00
Hailey 39da1cd465 add padding to the ScrollableInner 2024-03-15 09:30:19 -07:00
Samuel Newman 38ea041136 change to scrollable inner 2024-03-15 16:22:09 +00:00
Samuel Newman 58ac22c45b make alignment platform specific rather than size specific 2024-03-15 16:21:15 +00:00
Samuel Newman 502df521c1 center date input 2024-03-15 16:03:08 +00:00
Samuel Newman 884f37c349 rename BirthdaySettings -> BirthDateSettings + remove legacy modal 2024-03-15 15:50:54 +00:00
Samuel Newman 577091d44d ALF the birthday modal and remove legacy one 2024-03-15 15:45:58 +00:00
Samuel Newman 273fe3e8e9 scrollview persist taps, autoFocus code 2024-03-15 14:21:38 +00:00
Samuel Newman 0f67be3627 animate transitions on web only 2024-03-15 14:21:15 +00:00
Samuel Newman e31fcb1a6d reenable set new password button 2024-03-15 13:54:23 +00:00
Samuel Newman 7d69570a44 run ticket through svgomg 2024-03-15 13:53:57 +00:00
Samuel Newman a1fc95f30e convert password reset flow 2024-03-15 13:49:13 +00:00
Samuel Newman f71ec52517 Merge remote-tracking branch 'origin/main' into samuel/alf-login 2024-03-15 12:11:34 +00:00
Minseo Lee 242b899f79 Merge branch 'bluesky-social:main' into patch-3 2024-03-15 15:38:31 +09:00
Hailey 4f8381678d Remove FixedTouchableHighlight , fix Android press issues (#3214)
* rm `FixedTouchableHighlight`

* adjust delay for highlight

* remove unnecessary background colors to support background ripple
2024-03-14 18:46:06 -07:00
Minseo Lee d9b94f54ef Merge branch 'bluesky-social:main' into patch-3 2024-03-15 08:59:56 +09:00
Samuel Newman 6279c5cf31 Merge pull request #3209 from bluesky-social/samuel/loggedout-warning-2
Add warning about sharing if post author has the !no-unauthenticated label
2024-03-14 18:52:47 +00:00
Samuel Newman 8316f97e27 fix collapsed input issue 2024-03-14 18:25:39 +00:00
Samuel Newman 78a836d2b1 add warning to profile as well 2024-03-14 15:30:40 +00:00
Samuel Newman 7bdaa624b7 use prompt.basic instead of full prompt 2024-03-14 15:30:27 +00:00
Minseo Lee 4813f26158 Merge branch 'bluesky-social:main' into patch-3 2024-03-14 21:11:00 +09:00
dan 1c25c76645 [Statsig] Track posting, end reached (#3206)
* Track post create

* Track feed endReached
2024-03-14 00:21:42 +00:00
Samuel Newman a06f6ada4e experiment: animate between screens 2024-03-13 23:47:01 +00:00
Samuel Newman 9f5289a101 alf the login form 2024-03-13 23:34:01 +00:00
dan 7eaa573b57 [Statsig] Track likes, reposts, follows (#3195)
* [Statsig] Track likes

* Move tracking to intent

* Track repost/unrepost

* Track profile follows/unfollows

* Less copy paste

* Reorder
2024-03-13 22:31:51 +00:00
Samuel Newman f5b39f2755 convert base login component and ChooseAccountForm 2024-03-13 22:16:32 +00:00
Hailey db79c918b2 1.73 Version Bump (#3200) 2024-03-13 12:06:03 -07:00
Samuel Newman 44b3a37f65 Merge pull request #3201 from bluesky-social/samuel/handle-invalid-files
Filter out non-image files from image picker
2024-03-13 17:59:03 +00:00
Samuel Newman 8c7f813d87 filter out files with non-image mime types 2024-03-13 17:38:37 +00:00
Samuel Newman 41b10e3df5 forgot to save comment whoops 2024-03-13 15:51:55 +00:00
Samuel Newman 4d2efd84e4 sort relative imports and move unprefixed ones 2024-03-13 15:49:24 +00:00
Samuel Newman 70c76a76a0 add custom import order 2024-03-13 14:50:25 +00:00
dan f1d55f49fa Send route name with Statsig events (#3194)
* Add types to Statsig events

* Send route name with events
2024-03-13 03:29:03 +00:00
Samuel Newman 125ef1c756 Revert "run linter"
This reverts commit 1512b5cf68.
2024-03-13 01:55:14 +00:00
Minseo Lee 1760043f79 Update index.tsx 2024-03-13 10:41:38 +09:00
Minseo Lee 2938a1397e Update index.tsx 2024-03-13 10:41:34 +09:00
Minseo Lee 3ead08ab26 Merge branch 'bluesky-social:main' into patch-3 2024-03-13 10:30:07 +09:00
Eric Bailey 653240bc05 Tweak prompt styles on mobile web (#3193) 2024-03-12 20:12:45 -05:00
dan 7af338ed21 Unfork Statsig for web (#3192) 2024-03-13 00:33:47 +00:00
Eric Bailey 202adb6d7b Fix dropdown close via a portaled backdrop (#3191) 2024-03-12 19:25:58 -05:00
Eric Bailey 5c771050bc Fix sensitivity while scrolling (#3190) 2024-03-12 19:10:44 -05:00
Hailey 9f2f7f221c ALF confirmation dialogs (Dialogs Pt. 3) (#3143)
* Improve a11y on ios

* Format

* Remove android

* Fix android

* ALF confirmation dialog

* Use ALF for Delete Post confirmation

organize

diff

fix text

minimize

change copy

alternative confirm prompt

revert type changes

add ButtonColor param

* small adjustment to buttons in prompt

* full width below gtmobile

* update hide post dialog

* space out dialogs

* update dialogs for lists

* add example

* add to app passwords

* Revert some changes

* use sharedvalue for `importantForAccessibility`

* add back `isOpen`

* fix some more types

* small adjustment to buttons in prompt

* full width below gtmobile

* update the rest of the prompts

rm old confirm modal

rm update prompt

feed error prompt

feed source card and profile block/unblock

composer discard

* Update src/view/screens/AppPasswords.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* lint

* How about a default

* Reverse reverse

* Port over confirm dialogs

* Add some comments

* Remove unused file

* complete merge

* add testID where needed

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-03-12 16:56:14 -07:00
Samuel Newman 1512b5cf68 run linter 2024-03-12 22:02:28 +00:00
Samuel Newman a3c09f9f86 add and configure import sort plugin 2024-03-12 21:57:56 +00:00
Hailey 090b35e52e Use new menu for Profile (#3168)
* use new menu on profile

* organize imports

* fix testID

* add person icons

* use `style` prop for minWidth

* use new icons

* rm circleban

* Add unfollow option if account is blocked/blocking

* use `StyleProp` 🤯

* ts after merge

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-03-12 14:06:12 -07:00
Alice 70ad820d64 npx update-browserslist-db@latest (#3166)
Should silence the annoying warning for a bit.
2024-03-12 20:39:24 +00:00
Eric Bailey eeba0387b7 Small fixes (#3184)
* Fix alignment of MutedWords close button

* Add cancel button to dropdowns

* Revert "Add cancel button to dropdowns"

This reverts commit b8f5ddce92.
2024-03-12 14:33:02 -05:00
Eric Bailey c9d821c572 Combine actions, convert to new menu (#3174)
* Combine actions, convert to new menu

* remove about tab and move content to header

* Tweak alignment

* fix missing rkey

* hog the like button

* Add a little more whitespace

* Improve a11y

* Yeah toast

* Update usage

* Pin to Home

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-03-12 13:50:53 -05:00
Hailey 8123299192 Convert profile edit avatar/banner dropdown menus to new menu (#3177)
* convert profile edit dropdown menu to new menu

fix banner text

add `showCancel` prop to menu outer

banner dropdown to menu

add Cancel button to menu

replace user avatar dropdown with menu

add StreamingLive icon

add camera icon

* remove export

* use new camera icon

* adjust icon color
2024-03-12 10:17:27 -07:00
Hailey 80cc1f18a2 Save image to user media library when taken from camera during composing (#3180)
* save images to media library when taken from camera

* ensure we have access to media library

* `canAskAgain`

* just use MediaLibrary directly to avoid duplication
2024-03-12 09:46:43 -07:00
Hailey ee57d74765 Dedupe navigation events (push, navigate, pop, etc) (#3179) 2024-03-12 09:46:25 -07:00
Eric Bailey b8afb935f4 Unwrap Menu.Trigger on web (#3182) 2024-03-12 11:23:01 -05:00
Samuel Newman 17d921fd9d Merge pull request #3178 from bluesky-social/scrolltotop-overlap
Move scroll to top button inline if viewport is narrow (vertically)
2024-03-12 15:22:40 +00:00
Minseo Lee 2456ca828f Merge branch 'bluesky-social:main' into patch-3 2024-03-12 16:24:32 +09:00
Samuel Newman 1c9debed9a move imports to top 2024-03-12 00:30:02 +00:00
Samuel Newman f3619cf9f9 move button inline if viewport is small (vertically) 2024-03-12 00:21:48 +00:00
Paul Frazee c1c7a55fd5 Update po files 2024-03-11 14:26:18 -07:00
Hailey c83fe94f41 Fix onboarding FeedCard text overflow (#3176) 2024-03-11 12:57:37 -07:00
Hailey 3a6e58ba6e Fix lineHeight problems on native with new Text (#3175) 2024-03-11 12:54:51 -07:00
Hailey a289e6bce5 only include localhost:19006 as intent filter on android (#3167) 2024-03-11 11:57:23 -07:00
Hailey e4a1069b43 await share before closing menu (#3173) 2024-03-11 10:42:37 -07:00
Jan-Olof Eriksson 4a2251f48b Merge branch 'bluesky-social:main' into main 2024-03-11 14:52:33 +02:00
Alice 596e744d41 Fix button widths in the Settings on web (#3165)
* Fix button widths in the Settings on Web
Had to set `box-sizing: content-box` because
in certain translations the buttons would
become multiline.

Fixes #3060.

* you know what. whatever. i didn't want to be able to change box-sizing anyways. i'm perfectly happy with this workaround.

* ...

* flex-grow: 1
2024-03-10 15:00:51 -07:00
Minseo Lee 236223d02a Merge branch 'bluesky-social:main' into patch-3 2024-03-10 22:50:48 +09:00
Eric Bailey 1aaed1cc0d Fix font styles on web (#3162) 2024-03-09 15:42:42 -08:00
Alice f6685419d8 Fix aria-label on the Share button (#3159)
It had the same one as the Like button for some reason
2024-03-09 13:07:56 -08:00
Eric Bailey 594958c6dc Fix RSS URLs treated as internal (#3156)
* Fix RSS URLs treated as internal

* Add utils to patch relative RSS external links

* modify router to support multiple paths

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-03-09 10:35:23 -06:00
dan aad8c080ed Poll Statsig for config changes (#3158) 2024-03-08 16:29:31 -08:00
Hailey 7899a6fd09 Fix missing check for invite code (#3157) 2024-03-08 15:25:33 -08:00
Hailey 62e57c3b08 Adjustments to ALF prompt buttons (Dialogs Pt. 2) (#3144)
* Improve a11y on ios

* Format

* Remove android

* Fix android

* small adjustment to buttons in prompt

* full width below gtmobile

* Revert some changes

* use sharedvalue for `importantForAccessibility`

* add back `isOpen`

* fix some more types

* small adjustment to buttons in prompt

* full width below gtmobile

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-03-08 14:43:28 -08:00
Hailey 8ee325e73d Make ALF prompt scrollable for accessibility (#3150)
* make alf prompt scrollable

* padding
2024-03-08 14:31:50 -08:00
Hailey 0f9f08b1ef Fix reactivity of dialogs (Dialogs Pt. 1) (#3146)
* Improve a11y on ios

* Format

* Remove android

* Fix android

* Revert some changes

* use sharedvalue for `importantForAccessibility`

* add back `isOpen`

* fix some more types

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-03-08 14:31:24 -08:00
Eric Bailey 8f623c3bdf Refactor PostDropdownBtn to use new Menu (#3112)
* Refactor PostDropdownBtn

(cherry picked from commit 0adf6cb75e3d4b7c1630cf6153c0d7e289e1b859)

* Update icons

(cherry picked from commit ac89ef9b28721c00736b1388455f3f5f092de0ad)

* Port over fixes

* fix scrollbar disappearing

* Try CSS solution

* Disable arrow for now

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-03-08 14:45:59 -06:00
dan dd86d0964d Enable gating and experimentation on native, send init event (#3149)
* Add the mobile fork

* Add init event
2024-03-08 04:33:42 +00:00
Hailey 31826633cb rm waitlist modal, button during sign up (#3148) 2024-03-07 20:14:24 -08:00
dan c8e0fa9c97 Mark bundle start time on web (#3147)
* Mark bundle start time on web

* TS
2024-03-08 04:13:36 +00:00
Hailey 1cf49517b5 Allow all encoding for hashtags in URL (#3131) 2024-03-07 09:04:02 -08:00
Minseo Lee e74c46e9ab Merge branch 'main' into patch-3 2024-03-07 11:19:50 +09:00
Hailey 8b0e575f64 Adjust FlatList performance in main feeds (#3134)
* adjust flatlist perf settings

* calculate initial num to render based on screen height

* adjust window size

* don't react to screen height changes
2024-03-06 15:33:23 -08:00
Hailey 357b61d0a5 version bump (wait for release) (#3095) 2024-03-06 15:24:37 -08:00
Hailey d5b0a33ae3 Run extract and compile when building for web (#3132) 2024-03-06 12:27:49 -08:00
Hailey 800eecbfe4 fix internal links showing up as external pt2 (#3129)
* fix internal links showing up as external pt2

* fix internal links showing up as external pt2
2024-03-06 11:40:10 -08:00
Hailey 4e6020b88c fix internal links showing up as external (#3128)
* fix internal links showing up as external

* fix internal links showing up as external
2024-03-06 11:34:48 -08:00
Hailey 2d9a5db967 Switch date picker libraries (#3126)
* Revert other base PR changes, switch date picker library

rm expo-linear-gradient

Revert "remove unused packages, switch to `expo-linear-gradient`"

This reverts commit 20a0ffcf

Revert "upgrade expo deps"

This reverts commit a43dca92ca.

Revert other library changes

This reverts commit 5219f66e

Revert "re-add normalize-url"

This reverts commit 654019c4ba.

Revert "add `expo-haptics`"

This reverts commit ff3a0399b1.

Revert "add `expo-clipboard`"

This reverts commit 440ae91632.

Revert "add `expo-file-system`"

This reverts commit c0fe0c9453.

fix android alf

use modal on android

migrate to `react-native-date-picker`

rm `@reactnativecommunity/datetimepicker`

add `react-native-date-picker`

add `expo-file-system`

add `expo-clipboard`

add `expo-haptics`

re-add normalize-url

rm blur view

upgrade expo deps

remove unused packages, switch to `expo-linear-gradient`

* rm old library

* Use UTC for dates

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-03-06 13:13:03 -06:00
Hailey b8f36a8bca Fix double border on web hashtag list (#3091)
* add `topBorder` to Views.tsx

* fix double border
2024-03-06 11:02:48 -08:00
Jake Gold 7a592d8140 bskyweb: remove waitlist email endpoint (#3127) 2024-03-06 10:33:41 -08:00
Eiichi Yoshikawa f61d1e1f94 Apply notification icon settings of FCM on Android (#3113)
Co-authored-by: Hailey <me@haileyok.com>
2024-03-06 10:24:08 -08:00
dan 5b8d116e33 By default, hide replies to people you don't follow in the Following feed (#3124)
* Show replies from followed by default

* Update @atproto/api
2024-03-06 17:27:59 +00:00
dan 2e0f806441 Fix jumpy moderation icon on desktop (#3125) 2024-03-06 16:12:37 +00:00
Minseo Lee f3db23a3b1 Merge branch 'bluesky-social:main' into patch-3 2024-03-06 19:38:48 +09:00
Minseo Lee 0c6a82062f Update src/view/screens/Settings/index.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-03-06 19:38:23 +09:00
Minseo Lee 4a858bacd6 Update src/view/screens/Settings/index.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-03-06 19:38:13 +09:00
dan eb298d2e60 Initial feature gating and A/B testing integration (#3122)
* Add statsig dependency

* Add SDK provider

* Move to separate file, add tier and hashing

* Disable local storage for now

* Add initial gate testing fixture

* Fork for web just in case

* More WIP

* wip

* Rm test gate

* Add shim on native

* Clarify
2024-03-06 05:55:34 +00:00
Eiichi Yoshikawa 26fc0cf66d Improve splash display on android (#3105)
* Set window background during startup on android

* Set statusbar color to transparent and fine-tune it
2024-03-05 21:28:27 -08:00
Eric Bailey 317e0cda7a Add Menu component (#3097)
* Add POC menu abstraction

* Better platform handling

* Remove ignore

* Add some menu items

* Add controlled dropdown

* Pass through a11y props

* Ignore uninitialized context

* Tweaks

* Usability improvements

* Rename handlers to props

* Add radix comment

* Ignore known type

* Remove todo

* Move storybook item

* Improve Group matching

* Adjust theming
2024-03-05 21:15:42 -06:00
Hailey e721f84a2c add newArchEnabled: false flag to app.config.js (#3115) 2024-03-05 18:55:23 -08:00
Hailey 57854e6fc2 use onClose instead of onChange for close callback (#3116) 2024-03-05 16:55:20 -08:00
dan 20b88f43e2 Hide feeds topbar on scroll (#3108) 2024-03-05 16:45:08 +00:00
Eric Bailey 6c9d6f5b05 Improve dialogs a11y (#3094)
* Improve a11y on ios

* Format

* Remove android

* Fix android
2024-03-04 15:37:11 -06:00
Eric Bailey ebd279ed68 Don't warn on internal links (#3089)
* Don't want on internal links

* Just disable mismatch for this inline link
2024-03-04 09:25:47 -08:00
Jan-Olof Eriksson cbc65247ae Add files via upload 2024-03-04 19:09:47 +02:00
Jan-Olof Eriksson 521530eeb6 Update messages.po
Updated latest strings
2024-03-04 19:05:03 +02:00
Jan-Olof Eriksson c52635c578 Update messages.po 2024-03-04 19:04:04 +02:00
Jan-Olof Eriksson e8bc44e166 Update messages.po
Updated new strings
2024-03-04 19:02:48 +02:00
Jan-Olof Eriksson e724ab8123 Merge branch 'bluesky-social:main' into main 2024-03-04 18:11:00 +02:00
Gabriella 4022598692 Update messages.po
Updated two expression
2024-03-03 12:47:39 +01:00
Minseo Lee d0438b6b28 Update Lists.tsx 2024-03-02 13:26:21 +09:00
Minseo Lee ab2b454be8 Merge branch 'bluesky-social:main' into patch-3 2024-03-02 13:04:51 +09:00
dan b70c404d4b Sticky desktop header (#3077) 2024-03-01 18:40:47 -08:00
dan f2249614be Fix Profile tab switch jumps on Chrome (#3076) 2024-03-02 01:34:43 +00:00
Hailey b07846f2fa Revert "Enable tags inside of quotes (#3041)" (#3075)
This reverts commit f016cdbca9.
2024-03-01 17:15:45 -08:00
Hailey 4fc0b566ef dismiss keyboard on touch mute dialog (#3074) 2024-03-01 17:15:20 -08:00
Eric Bailey 2962862de2 Theme tweaks (#3004)
* Improve contrast using existing scale

* Make it mathy

* Tweaks

* Adjust noty

* Remove console

* Cleanup

* Match saturation

* Replace usages of tokens with correct palette

(cherry picked from commit 1d9c7079dc25dfa492bd482c1c7661ea2e822d68)

* Replace other colors, tweak usages

(cherry picked from commit df97f249b2f140bbc010449fddb011a31795919a)

* Last couple things

(cherry picked from commit 3b5cee131f68ea8f4125f2c32b9a4b20f5b91086)

* fix "Users" being the wrong color on user list about

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-03-01 16:06:59 -08:00
Hailey 411061ea32 Fix backdrop issues by using custom logic (#3072)
* use custom backdrop

* use custom backdrop

* org imports

* rm log
2024-03-01 16:04:46 -08:00
Hailey f016cdbca9 Enable tags inside of quotes (#3041)
* enable tags for quote posts

* mentions too

* just disable pointer events instead

* apply fix for both web and native

* minimize diff
2024-03-01 16:04:20 -08:00
Hailey e950463f71 Fix new post button on web after following intent URL (#3044)
* Fix new post button on web after following intent URL

* Ensure that `routes` exists before attempting to use it
2024-03-01 16:04:06 -08:00
Hailey 8bf40b46a0 Simplify intent path logic, ensure all variations work for bluesky://, bluesky:///, and https://bsky.app/ (#3045)
* Simplify intent path logic, ensure all variations work

* use startsWith
2024-03-01 16:03:53 -08:00
Eric Bailey a7195ccbd6 Fix muting of embedded data (#3071) 2024-03-01 16:03:34 -08:00
Hailey 82655f2ee3 Few list tweaks on web (#3062)
* share button only on native

* update gttablet to be 1300px

* improve web layout

* change re-layout to mobile breakpoint

* adjustable not found reason

* don't show the borders on mobile web

* slight padding for the spinner
2024-03-01 15:47:59 -08:00
Eric Bailey e11bd4385d Integrate new tag detection and regexes (#3063)
* Integrate new tag detection and regexes

* Bump SDK

* Can use const

* Clarify intent

* Enhance clarity
2024-03-01 15:50:14 -06:00
Eric Bailey f8aa5fd005 Fix icons on blurred posts (#3068) 2024-03-01 15:50:04 -06:00
Gabriella fb8a7e37f4 Update messages.po
Changed a longer sentence for a shorter version in order to fit on the app screen.
2024-03-01 10:52:50 +01:00
Hailey cf8b03801f Dedicated screen for hashtags, POC ALF list (#3047)
* create dedicated hashtag "search" screen

clarify loading component name

more adjustments

rework `ViewHeader` to keep chevron centered w/ first line

adjustments

adjustments

use `author` instead of `handle` in route

add web route for url

add web route for url

Add desktop list header

support web

keep header lowercase

add optional subtitle to view header

correct isFetching logic

oops

use `isFetching` for clarity in footer

combine logic

update bskyweb

finish screen

style, add footer, add spinner, etc

add list

add header, params

create a screen

* add variable to server path

* localize `By`

* add empty state

* more adjustments

* sanitize author

* fix web

* add custom message for hashtag not found error

* ellipsis in middle

* fix

* fix trans

* account for multiple #

* encode #

* replaceall

* Use sanitized tag

* don't call function in lingui

* add share button

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-02-29 17:56:29 -08:00
Hailey 8900c67df2 Bump version to 1.71 (#3057) 2024-02-29 17:56:08 -08:00
Eric Bailey cecb6e4e69 Bump API SDK, add validation to MutedWords (#3055)
* Bump API SDK, add validation to MutedWords

* Tweaks to error state

* Comment

* Early return
2024-02-29 19:30:30 -06:00
Mary 21bdddcfbe Reset button/input font set by UA (#3038)
* fix: reset button/input fonts set by UA

* fix: inherit line-height as well
2024-02-29 17:30:17 -06:00
Hailey 04d4c9779f Dismiss keyboard when closing dialog (#3053) 2024-02-29 15:27:00 -08:00
Hailey 39d324ab8b Fix link warnings (#3058)
* fix problems where www.bsky.app shows as a potential danger

* never default to disabling warning

* remove more defaults

* update storybook cases

* oops

* reverse
2024-02-29 15:23:28 -08:00
Eric Bailey 1a5afccdb8 Add TagMenu controls stub on web (#3028) 2024-02-29 10:31:45 -06:00
Gabriella ca20643ff8 Update messages.po
sentence updated
2024-02-29 14:14:46 +01:00
Jan-Olof Eriksson 963a44ab87 Merge branch 'bluesky-social:main' into main 2024-02-29 11:55:03 +02:00
Minseo Lee 537ae578d6 Update Search.tsx 2024-02-29 14:25:52 +09:00
Minseo Lee 200c4c1d37 Merge branch 'bluesky-social:main' into patch-3 2024-02-29 13:05:45 +09:00
Hailey a35976cdc9 Don't mute your own posts (#3037)
* Don't mute your own posts.

* fix and add tests
2024-02-28 18:41:23 -08:00
Eric Bailey 2440975bd2 Integrate new dialogs into old back handling (#3023) 2024-02-28 20:06:26 -06:00
Minseo Lee a1127bfcfc Merge branch 'main' into patch-3 2024-02-29 09:51:56 +09:00
Hailey 7fd13cacfe Remove Platform.select() (#3027) 2024-02-28 15:38:54 -08:00
Paul Frazee 442eb135ee Add /intent/compose to bskyweb (#3026) 2024-02-28 15:30:08 -08:00
Hailey c7de733dff always use utf8 offsets (#3024) 2024-02-28 13:28:27 -08:00
Hailey a697b39c48 add alf dialogs to useCloseAllActiveElements (#3021) 2024-02-28 11:46:19 -08:00
Hailey 60eb6e23d1 close open dialogs when deep linking to composer (#3020) 2024-02-28 11:35:59 -08:00
Eric Bailey d2c6edacb6 Protect against non functions being passed to close callback (#3019) 2024-02-28 11:27:54 -08:00
Eric Bailey 0c3d55db6f Improve muted word matching (#3018)
* Use name params

* Add language exception matching
2024-02-28 08:38:31 -08:00
Hailey 5cb45f9c16 fix collissions in uitextview (#3017) 2024-02-28 08:31:04 -08:00
dan d679ae7dbb Use selected feed for window title on Home (#3016) 2024-02-28 08:08:11 -08:00
dan 0dd3f9432b Fix wrong feed being shown (#3015) 2024-02-28 08:04:51 -08:00
Hailey 88c66c4bc5 fix app group in native code (#3014) 2024-02-28 07:58:13 -08:00
Minseo Lee b723c4ca7c Merge branch 'bluesky-social:main' into patch-3 2024-02-28 16:26:19 +09:00
Paul Frazee e2ae534fde Fix app config 2024-02-27 21:11:48 -08:00
Hailey ba667af80e add entitlements (#3013) 2024-02-27 21:09:59 -08:00
Hailey ffeef8fd49 update config (#3012) 2024-02-27 20:54:12 -08:00
Hailey 2a60faf4fe add dev team (#3011) 2024-02-27 20:34:11 -08:00
Minseo Lee 3767e76390 Merge branch 'bluesky-social:main' into patch-3 2024-02-28 13:03:55 +09:00
Hailey c4d30a0b7f please 🙏 (#3010) 2024-02-27 19:48:04 -08:00
Paul Frazee 00ac76d0fe Fix group id 2024-02-27 19:40:22 -08:00
Paul Frazee 622d0daad6 More entitlement fixes 2024-02-27 18:41:53 -08:00
Hailey ed2e6d654e Fix entitlements (#3008) 2024-02-27 18:34:09 -08:00
Paul Frazee 259468b7d5 Change application group to group.app.bsky 2024-02-27 18:29:59 -08:00
Paul Frazee 23347a832d Update po files 2024-02-27 17:35:52 -08:00
dan 2d14d0e2db Remove dangerous derived state from RichText (#3007)
* Remove facet resolution from RichText

* Remove derived state
2024-02-27 17:35:25 -08:00
dan 603f3c0be9 Safeguard posts from clobbered state (#3006) 2024-02-28 00:48:54 +00:00
dan 6bd68e5321 Fix keys within a slice (#3005)
Co-authored-by: Hailey <me@haileyok.com>
2024-02-28 00:19:13 +00:00
Hailey d451f82f54 Share Extension/Intents (#2587)
* add native ios code outside of ios project

* helper script

* going to be a lot of these commits to squash...backing up

* save

* start of an expo plugin

* create info.plist

* copy the view controller

* maybe working

* working

* wait working now

* working plugin

* use current scheme

* update intent path

* use better params

* support text in uri

* build

* use better encoding

* handle images

* cleanup ios plugin

* android

* move bash script to /scripts

* handle cases where loaded data is uiimage rather than uri

* remove unnecessary logic, allow more than 4 images and just take first 4

* android build plugin

* limit images to four on android

* use js for plugins, no need to build

* revert changes to app config

* use correct scheme on android

* android readme

* move ios extension to /modules

* remove unnecessary event

* revert typo

* plugin readme

* scripts readme

* add configurable scheme to .env, default to `bluesky`

* remove debug

* revert .gitignore change

* add comment about updating .env to app.config.js for those modifying scheme

* modify .env

* update android module to use the proper url

* update ios extension

* remove comment

* parse and validate incoming image uris

* fix types

* rm oops

* fix a few typos
2024-02-27 15:22:03 -08:00
dan ac726497a4 Show tab bar on desktop web (#2998)
* Show tabbar on desktop

* Make bottom border always 1px

* Don't hide/show navbar when switching tabs

* two rows WIP

* Top bar tweaks

* Make scroll adjustement native-only

* Add new web scroll behavior
2024-02-27 14:55:25 -08:00
Eric Bailey 978bcc1ba9 Tags menu/muted words improvements (#3002)
* Fix translations

* Handle loooong words

* Truncate on desktop web, revert mobile changes

* Break the words

* Small enough for mobile web

* Fix alignment on mobile web

* Clarify
2024-02-27 14:04:49 -08:00
Hailey 6717f8f11e Compile locale before build on CI, fix the google-services.json variable for android builds (#3001)
* compile intl before building, fix android json var

* update intl:build
2024-02-27 13:31:44 -08:00
Hailey 2a04546c73 Intent handler (#2992)
* Handle URL params

* Add resources

* Add other params

* refactor for scope

* modify the pr to support intents rather than utm

remove linebreak

remove linebreak

handle web

adjust path check to work on web

add a short delay for opening the composer

setup compose intent, move to `intents` directory

fix intent logic

ignore incoming intents in the navigation router

* refactor

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-02-27 10:35:38 -08:00
Hailey c8d02a791a Log to Sentry whenever users encounter Bluesky feed errors (#2999) 2024-02-27 10:01:29 -08:00
Minseo Lee 41e69651f9 Update ChangePassword.tsx 2024-02-27 19:17:58 +09:00
Minseo Lee b2605d3908 Update ChangePassword.tsx 2024-02-27 19:17:47 +09:00
Gabriella eca1333b7c Update messages.po
Corrected small typo
2024-02-27 09:55:51 +01:00
Gabriella 505787e437 Update messages.po
Translation updated with minor corrections
2024-02-27 09:44:12 +01:00
Minseo Lee 8d394a3541 Merge branch 'main' into patch-3 2024-02-27 14:39:41 +09:00
Eric Bailey 58aaad704a Add tags and mute words (#2968)
* Add bare minimum hashtags support (#2804)

* Add bare minimum hashtags support

As atproto/api already parses hashtags, this is as simple as hooking it
up like link segments.

This is "bare minimum" because:

- Opening hashtag "#foo" is actually just a search for "foo" right now
  to work around #2491.
- There is no integration in the composer. This hasn't stopped people
  from using hashtags already, and can be added later.
- This change itself only had to hook things up - thank you for having
  already put the hashtag parsing in place.

* Remove workaround for hash search not working now that it's fixed

* Add RichTextTag and TagMenu

* Sketch

* Remove hackfix

* Some cleanup

* Sketch web

* Mobile design

* Mobile handling of tags search

* Web only

* Fix navigation woes

* Use new callback

* Hook it up

* Integrate muted tags

* Fix dropdown styles

* Type error

* Use close callback

* Fix styles

* Cleanup, install latest sdk

* Quick muted words screen

* Targets

* Dir structure

* Icons, list view

* Move to dialog

* Add removal confirmation

* Swap copy

* Improve checkboxees

* Update matching, add tests

* Moderate embeds

* Create global dialogs concept again to prevent flashing

* Add access from moderation screen

* Highlight tags on native

* Add web highlighting

* Add close to web modal

* Adjust close color

* Rename toggles and adjust logic

* Icon update

* Load states

* Improve regex

* Improve regex

* Improve regex

* Revert link test

* Hyphenated words

* Improve matching

* Enhance

* Some tweaks

* Muted words modal changes

* Handle invalid handles, handle long tags

* Remove main regex

* Better test

* Space/punct check drop to includes

* Lowercase post text before comparison

* Add better real world test case

---------

Co-authored-by: Kisaragi Hiu <mail@kisaragi-hiu.com>
2024-02-26 20:33:48 -08:00
Hailey c8582924e2 Scale back sentry logs for trivial events (#2997)
* scale back sentry logs

* update migrate log tests
2024-02-26 20:19:06 -08:00
dan 1a34921661 Tweak tabbar sizing on web (#2996) 2024-02-27 03:56:25 +00:00
dan 3ec4e034b7 Fix imprecise header height calculation (#2995)
* Remove dead code

* Fix header height calculation
2024-02-27 02:33:23 +00:00
Vinayak Kulkarni 771999761e feat(nvm): add support for nvm & minor actions housekeeping (#2979)
* feat: add `.nvmrc` for specifying node version

Co-Authored-By: Evandro Leopoldino Gonçalves <evandrolgoncalves@gmail.com>

* chore(deps): bump setup-node to v4

* build: use node-version-file instead of hardcoded 18.x

* chore(deps): bump nvm version

* fix: checkout before install 🎉

---------

Co-authored-by: Evandro Leopoldino Gonçalves <evandrolgoncalves@gmail.com>
2024-02-26 17:35:06 -08:00
Hailey e9ad3f552d Bump version to 1.70 (wait for release) (#2987) 2024-02-26 17:26:41 -08:00
dan a8925bac86 Remove side borders on mobile web list (#2994) 2024-02-27 01:25:25 +00:00
Eric Bailey 0311288dd7 Fix dark butterfly on android splash (#2993) 2024-02-26 19:24:36 -06:00
Steve Klabnik 9b11fc720f Remove invite codes from README (#2988)
Invite codes aren't needed anymore!

Thanks to https://bsky.app/profile/shreyanjain.net/post/3kmdulzeibc2o for pointing this out to me.
2024-02-27 01:24:14 +00:00
Hailey 832582df23 Adjust windowSize on PostThread FlatList (#2989)
* adjust window size, cells batching period

* rm batching period change
2024-02-26 16:54:05 -08:00
Hailey 88846ca36d fix reversed icons in validator 🤦 (#2991) 2024-02-26 16:48:32 -08:00
Jan-Olof Eriksson 1f95628475 Merge branch 'bluesky-social:main' into main 2024-02-24 16:37:08 +02:00
Minseo Lee 860b5307ad Update NotFound.tsx 2024-02-24 18:29:12 +09:00
Minseo Lee 5809dd0624 accessibilityLabel 2024-02-24 18:29:01 +09:00
Minseo Lee 7a920d2eb4 Update NotFound.tsx 2024-02-24 18:25:29 +09:00
Minseo Lee 25d7e2449f Update NotFound.tsx 2024-02-24 18:23:14 +09:00
Minseo Lee 89c65c856e Merge branch 'bluesky-social:main' into patch-3 2024-02-24 18:23:03 +09:00
Paul Frazee d38f168de5 Update .po files 2024-02-23 17:01:47 -08:00
Hailey 9c5cd391dd use showControls to show/hide live text icon on ios (#2982) 2024-02-23 16:05:54 -08:00
Paul Frazee bdb63fff6d Fix dim mode unread notif color 2024-02-23 15:17:59 -08:00
dan 6ae9c5d45c Make dim theme dim (#2966)
* Make dim color scheme dim

* Tweaks

* Overall tweaks

* We have to go darker

* Tweak saturation of blues in dim

* Increase contrast on dark-dark mode

* adjust dim

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-02-23 15:09:50 -08:00
Hailey de9df50af3 Add handle validation to create account UI (#2959)
* show uiState errors in the box as well

simplify copy

update ui for only letters and numbers

add ui validation to handle selection

* simplify names

* Fix accidental text-node render

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-02-23 13:38:47 -08:00
Mary 4771caf204 Normalize relative day (#2874)
* fix: normalize relative date

* chore: add comments

* refactor: skip flooring normalized diff

* refactor: let -> const

* fix: get own copy of date to prevent mutating

* refactor: rounding does the same trick
2024-02-23 12:38:14 -08:00
Hailey 1c5a2232fc increase timeout to 15s (#2958) 2024-02-23 12:37:49 -08:00
Hailey 35be8ec90e use useOpenLink hook for links in ALF (#2975)
* use `useOpenLink` hook for links in ALF

* web only for `outline`
2024-02-23 09:20:55 -08:00
dan 894f00d687 Rename Home Feed Prefs to Following Feed Prefs (#2965) 2024-02-22 16:51:11 +00:00
dan 1ccb3be961 Refactor feed header components (#2964)
* Move home-related files to view/com/home

* Add HomeHeader in front of FeedTabBar

* Move isDekstop check outside FeedsTabBar

* Remove PWI logic from tabbar

* Separate platform-specific layout from shared logic
2024-02-22 16:03:20 +00:00
Hailey 93b5eff4d7 patch react-navigation to fix history bug (#2955)
* patch react-navigation

- https://github.com/react-navigation/react-navigation/pull/11833

* add readme
2024-02-21 17:54:25 -08:00
Minseo Lee c2d87b8075 Merge branch 'bluesky-social:main' into patch-3 2024-02-22 09:37:09 +09:00
Hailey 874489b402 Use EAS managed build number, run build/submit on GH Actions (#2841)
* use eas version code

* test

* try sync

* try sync

* use eas to manage the version code

* apply build numbers to dist

* test script

* set this to production or now

* revert to schedule

* testing on 1.69

* autosubmit

* autosubmit, remove cheat

* finished!!!!!

try again

try again

try again

try again

add same for android

maybe now

omg wow i messed that up?

once again

once again

again

error?

add caching

add caching

try again again again again

try again again again

try again again

try again

try this a different way

another test

testing this again

* hack

* write environment variables

* ready to go

* final test

* Revert "final test"

This reverts commit 6580c5c097.
2024-02-21 13:54:31 -08:00
Hailey ba71e4b459 Fix numberOfLines not updating on iOS 15 (#2956) 2024-02-21 11:49:46 -08:00
Hailey d2e5f83cd2 Fix UITextView line height adjustment for DynamicType, always use the max width for the view (#2916)
* fix text being cut off

* adjust line height for dynamictype
2024-02-21 10:11:42 -08:00
dan 43206d9f57 Navigate back from a deleted post's route (#2948) 2024-02-21 17:51:42 +00:00
Jan-Olof Eriksson 38fd4282f8 Merge branch 'bluesky-social:main' into main 2024-02-21 13:22:13 +02:00
Eric Bailey f88b165254 Add optional close callback to Dialog (#2947)
* Add optional close callback

* No emitter
2024-02-20 18:20:59 -06:00
dan 6413b8ba8c Fix flash when pressing into just-created post (#2945) 2024-02-20 21:39:42 +00:00
Eric Bailey 9edb82609d Last usage (#2944) 2024-02-20 15:25:54 -06:00
surfdude29 0c470d1f61 Update blogpost URL in ExportCarDialog.tsx (#2939) 2024-02-20 21:00:45 +00:00
dan 3a75855677 Prefer full posts for post thread placeholder (#2943)
* Revert "Prefer post over quote when finding cached post (#2935)"

This reverts commit da62a77f05.

* Prefer full posts for post thread placeholder

* Clarify with a comment
2024-02-20 19:41:29 +00:00
Hailey fab6c286f4 Remove async resizing from external embed player (#2936)
* remove debug

adjust youtube shorts height

fix webview style

simplify styles

fix resizing

make it more clear

remove async resizes from external player

* remove comment

* ts

* reverse aspect
2024-02-20 11:38:56 -08:00
Eiichi Yoshikawa 09eee05f8b Remove redundant <meta name="theme-color"> tag (#2938) 2024-02-20 10:09:02 -08:00
Eric Bailey df5a8f1542 Swap RichText (#2934)
* Switch to new RT

* Allow early exit from links

* Build in tracking to text atoms

* Clean up FeedSourceCard

* Clean up leading after new default

* Add deprecated notice
2024-02-20 11:03:04 -06:00
Eric Bailey 8a169dc6a1 Improve dialogs issue (#2941)
* Fix collapse, update backdrop color

* Remove test prop

* Remove debug code
2024-02-20 08:04:07 -08:00
Eric Bailey b52a742925 Improve dialogs (#2933)
* Improve dialogs

* Remove comment, revert storybook

* Hacky fix

* Comments
2024-02-19 18:18:13 -06:00
Hailey da62a77f05 Prefer post over quote when finding cached post (#2935) 2024-02-19 16:15:42 -08:00
Hailey 2e132a7a01 Add embed to post view when converting from embed view (#2929) 2024-02-19 14:44:09 -08:00
Hailey 5573c38c4d Update IS_PROD check (#2930)
* update is_prod check

* remove unused constants

* rename `IS_PROD` function to `IS_PROD_SERVICE`
2024-02-19 13:30:25 -08:00
Jan-Olof Eriksson 1269e76071 Update Finnish to lingui.config.js
Added Finnish localization
2024-02-19 08:33:20 +02:00
Jan-Olof Eriksson a612aa276c Update i18n.ts
Fixed typo in line 9
2024-02-19 08:09:49 +02:00
Jan-Olof Eriksson f78b55a235 Update languages.ts
Typo
2024-02-19 08:07:18 +02:00
Jan-Olof Eriksson f78e4c2433 Update i18n.web.ts
Added Finnish
2024-02-19 07:43:24 +02:00
Jan-Olof Eriksson 1cfa4aabbd Update i18n.ts
Added Finnish
2024-02-19 07:42:07 +02:00
Jan-Olof Eriksson 76a5e3af71 Update helpers.ts
Added Finnish
2024-02-19 07:39:46 +02:00
Jan-Olof Eriksson 003e18b94d Update languages.ts
Suomi - Finnish
2024-02-19 07:33:17 +02:00
Jan-Olof Eriksson 93318bef05 Update languages.ts
Added Finnish - Suomi
2024-02-19 07:20:57 +02:00
Minseo Lee 6d422bb583 Merge branch 'main' into patch-3 2024-02-19 14:17:59 +09:00
Hailey dcf9fa5e11 Merge branch 'main' into fork/main
# Conflicts:
#	src/locale/locales/it/messages.po
2024-02-18 14:44:48 -08:00
Jan-Olof Eriksson c97d971f09 Update messages.po 2024-02-19 00:12:13 +02:00
Jan-Olof Eriksson 79921b65f8 Update messages.po 2024-02-18 23:47:34 +02:00
Jan-Olof Eriksson 91a4e06878 Update messages.po
Minor changes. (Handle=käyttäjätunnus)
2024-02-18 23:41:58 +02:00
Jan-Olof Eriksson 123c73029d Update messages.po
Some fixes.
2024-02-18 23:21:22 +02:00
jaoler 00103e8e58 Create messages.po
Finnish tranlation for Bluesky
2024-02-18 20:24:26 +02:00
Gabriella 31b7f76015 Update messages.po
Additional grammatical correction related to subject gender
2024-02-18 09:56:14 +01:00
Gabriella 95bc461932 Update messages.po
Updated Nozioni di Base to Preferenze, which has a more logical contest
2024-02-18 09:48:34 +01:00
Gabriella 89f3135ebc Update messages.po
Additional grammatical changes
2024-02-18 09:34:21 +01:00
Gabriella 74895e18c3 Update messages.po
grammatical changes related to the subject
2024-02-18 09:26:02 +01:00
Gabriella 65606b3929 Update messages.po
Changed the tense of a grammatical sentence to present
2024-02-18 09:07:26 +01:00
Gabriella 86df874dd3 Update messages.po
changes some wordings, corrected a typo
2024-02-17 10:18:44 +01:00
Gabriella N 646a685f26 Update messages.po
Changed translation for the word "Following" in the header section
2024-02-17 09:40:59 +01:00
Gabriella N 87825f19ec Update messages.po
Corrected a small grammatical error
2024-02-16 20:06:57 +01:00
Gabriella N 4ab7909f8b Update messages.po 2024-02-16 15:30:12 +01:00
Gabriella N 2b02976923 Add files via upload 2024-02-16 15:27:30 +01:00
Minseo Lee b3e6f0f29d Update ExportCarDialog.tsx 2024-02-16 10:16:56 +09:00
Minseo Lee b8b5d24fb9 Update Moderation.tsx 2024-02-16 10:08:28 +09:00
Minseo Lee 36d2b02a9e Update index.tsx 2024-02-16 10:05:43 +09:00
Minseo Lee 312f54cfc0 Update Moderation.tsx 2024-02-16 10:05:40 +09:00
Minseo Lee 46ee6a0748 Update LanguageSettings.tsx 2024-02-16 09:00:59 +09:00
Minseo Lee c15b785016 Merge branch 'bluesky-social:main' into patch-3 2024-02-16 08:58:46 +09:00
Minseo Lee 880149c05e Update ProfileFeed.tsx 2024-02-15 09:46:30 +09:00
Minseo Lee cb4092c959 Update index.tsx 2024-02-15 09:41:51 +09:00
Minseo Lee c94e5f81a0 Update index.tsx 2024-02-15 09:39:29 +09:00
Minseo Lee 2823e8aa47 Update src/view/screens/Moderation.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-02-15 09:19:54 +09:00
Minseo Lee b0cdaf71dd Update src/view/com/modals/LinkWarning.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-02-15 09:19:46 +09:00
Minseo Lee 83cb04b691 Update src/view/com/modals/LinkWarning.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-02-15 09:19:40 +09:00
Minseo Lee 3f1a85198a Update src/view/screens/Settings/index.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-02-15 09:19:28 +09:00
Minseo Lee a7661b1f6f Update src/view/screens/Settings/index.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-02-15 09:19:22 +09:00
Minseo Lee 44259948cc Update Drawer.tsx 2024-02-14 16:14:29 +09:00
Minseo Lee 3f5bdd8be3 Mark more texts for localization 2024-02-14 11:06:37 +09:00
Atiksoftware Corporation 310e5ea35b Create messages.po 2024-02-13 15:02:20 +03:00
1924 changed files with 469395 additions and 93841 deletions
-86
View File
@@ -1,86 +0,0 @@
/** @type {Detox.DetoxConfig} */
module.exports = {
testRunner: {
args: {
$0: 'jest',
config: '__e2e__/jest.config.js',
},
jest: {
setupTimeout: 120000,
},
},
apps: {
'ios.debug': {
type: 'ios.app',
binaryPath: 'ios/build/Build/Products/Debug-iphonesimulator/bluesky.app',
build:
'xcodebuild -workspace ios/Bluesky.xcworkspace -scheme Bluesky -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build',
},
'ios.release': {
type: 'ios.app',
binaryPath:
'ios/build/Build/Products/Release-iphonesimulator/bluesky.app',
build:
'xcodebuild -workspace ios/Bluesky.xcworkspace -scheme Bluesky -configuration Release -sdk iphonesimulator -derivedDataPath ios/build',
},
'android.debug': {
type: 'android.apk',
binaryPath: 'android/app/build/outputs/apk/debug/app-debug.apk',
build:
'cd android ; ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug ; cd -',
reversePorts: [8081],
},
'android.release': {
type: 'android.apk',
binaryPath: 'android/app/build/outputs/apk/release/app-release.apk',
build:
'cd android ; ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd -',
},
},
devices: {
simulator: {
type: 'ios.simulator',
device: {
type: 'iPhone 15 Pro',
},
},
attached: {
type: 'android.attached',
device: {
adbName: '.*',
},
},
emulator: {
type: 'android.emulator',
device: {
avdName: 'Pixel_3a_API_30_x86',
},
},
},
configurations: {
'ios.sim.debug': {
device: 'simulator',
app: 'ios.debug',
},
'ios.sim.release': {
device: 'simulator',
app: 'ios.release',
},
'android.att.debug': {
device: 'attached',
app: 'android.debug',
},
'android.att.release': {
device: 'attached',
app: 'android.release',
},
'android.emu.debug': {
device: 'emulator',
app: 'android.debug',
},
'android.emu.release': {
device: 'emulator',
app: 'android.release',
},
},
}
+1 -2
View File
@@ -95,8 +95,7 @@ web-build/
/ios/
# environment variables
.env
.env.*
# Firebase (Android) Google services
# INCLUDED: google-services.json
# INCLUDED: google-services.json
+2
View File
@@ -0,0 +1,2 @@
[*.{kt,kts}]
indent_size=2
+3 -1
View File
@@ -1,6 +1,8 @@
# Copy this to `.env` and `.env.test` files
BITDRIFT_API_KEY=
SENTRY_AUTH_TOKEN=
EXPO_PUBLIC_ENV=development
EXPO_PUBLIC_LOG_LEVEL=debug
EXPO_PUBLIC_LOG_DEBUG=
EXPO_PUBLIC_BUNDLE_IDENTIFIER=
EXPO_PUBLIC_BUNDLE_DATE=0
+88 -3
View File
@@ -1,16 +1,97 @@
module.exports = {
root: true,
extends: [
'@react-native-community',
'@react-native',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-native-a11y/ios',
'prettier',
],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint', 'detox', 'react', 'lingui'],
plugins: [
'@typescript-eslint',
'react',
'lingui',
'simple-import-sort',
'bsky-internal',
'eslint-plugin-react-compiler',
'import',
],
rules: {
'react/no-unescaped-entities': 0,
'react/prop-types': 0,
'react-native/no-inline-styles': 0,
'bsky-internal/avoid-unwrapped-text': [
'error',
{
impliedTextComponents: [
'H1',
'H2',
'H3',
'H4',
'H5',
'H6',
'P',
'Admonition',
'Admonition.Admonition',
],
impliedTextProps: [],
suggestedTextWrappers: {
Button: 'ButtonText',
'ToggleButton.Button': 'ToggleButton.ButtonText',
},
},
],
'bsky-internal/use-exact-imports': 'error',
'bsky-internal/use-typed-gates': 'error',
'bsky-internal/use-prefixed-imports': 'error',
'simple-import-sort/imports': [
'error',
{
groups: [
// Side effect imports.
['^\\u0000'],
// Node.js builtins prefixed with `node:`.
['^node:'],
// Packages.
// Things that start with a letter (or digit or underscore), or `@` followed by a letter.
// React/React Native priortized, followed by expo
// Followed by all packages excluding unprefixed relative ones
[
'^(react\\/(.*)$)|^(react$)|^(react-native(.*)$)',
'^(expo(.*)$)|^(expo$)',
'^(?!(?:alf|components|lib|locale|logger|platform|screens|state|view)(?:$|\\/))@?\\w',
],
// Relative imports.
// Ideally, anything that starts with a dot or #
// due to unprefixed relative imports being used, we whitelist the relative paths we use
// (?:$|\\/) matches end of string or /
[
'^(?:#\\/)?(?:lib|state|logger|platform|locale)(?:$|\\/)',
'^(?:#\\/)?view(?:$|\\/)',
'^(?:#\\/)?screens(?:$|\\/)',
'^(?:#\\/)?alf(?:$|\\/)',
'^(?:#\\/)?components(?:$|\\/)',
'^#\\/',
'^\\.',
],
// anything else - hopefully we don't have any of these
['^'],
],
},
],
'simple-import-sort/exports': 'error',
'react-compiler/react-compiler': 'warn',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{argsIgnorePattern: '^_', varsIgnorePattern: '^_'},
],
'@typescript-eslint/consistent-type-imports': [
'warn',
{prefer: 'type-imports', fixStyle: 'inline-type-imports'},
],
'import/consistent-type-specifier-style': ['warn', 'prefer-inline'],
},
ignorePatterns: [
'**/__mocks__/*.ts',
@@ -22,13 +103,17 @@ module.exports = {
'*.lock',
'.husky',
'patches',
'bskyweb',
'*.html',
'bskyweb',
'bskyembed',
'src/locale/locales/_build/',
'src/locale/locales/**/*.js',
],
settings: {
componentWrapperFunctions: ['observer'],
},
parserOptions: {
sourceType: 'module',
ecmaVersion: 'latest',
},
}
-35
View File
@@ -1,35 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
Steps to reproduce the behavior:
1.
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Details**
- Platform: <!-- desktop chrome windows, mobile safari, iOS, Android -->
- Platform version:
- App version:
**Additional context**
<!-- Add any other context about the problem here. -->
+64
View File
@@ -0,0 +1,64 @@
name: "Bug Report"
description: "Create a report for an issue you have experience in the app."
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report an issue you've found in the app! Before you submit this issue, please make sure you've searched for similar issues that are already open and being tracked. If you find an open issue that seems relevant to yours, it is best to leave a response there with your information instead of opening a new issue, since it helps to consolidate the info in one place.
- type: textarea
attributes:
label: Steps to Reproduce
description: |
Please provide the steps that may reproduce the issue that you are experiencing. The more concise of a
reproduction that you provide, the easier it will be for us to identify the issue and fix it in a timely manner.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
attributes:
label: Attachments
description: |
If possible, please provide any images or videos that may help us understand the issue you are experiencing.
validations:
required: false
- type: dropdown
attributes:
label: What platform(s) does this occur on?
multiple: true
options:
- iOS
- Android
- Web (Desktop)
- Web (Mobile)
validations:
required: true
- type: input
attributes:
label: Device Info
description: |
Please provide the device information that you are using when experiencing this issue. This can include the
device model, operating system version, and any other relevant information.
validations:
required: false
- type: input
attributes:
label: What version of the app are you using?
description: |
You can easily find this information by visting the Settings screen in the app, and tapping on the version info
at the bottom of the screen. All the relevant information will be copied to your clipboard, and you will be
able to share it here.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: |
Please provide any additional information that you think may be helpful in identifying the issue you are
experiencing. This can include any error messages, logs, or other information that you think may be relevant.
validations:
required: false
@@ -0,0 +1,69 @@
name: "Bug Report - Fabric/New Architecture"
description: "Create a bug report for builds using the New Architecture. If you are not sure what that means, don't use this template, and instead use the default bug report template."
labels: ["bug", "fabric"]
body:
- type: checkboxes
attributes:
label: You're running a build that uses the React Native New Architecture, right?
description: This template is specifically for issues related to builds that use the React Native New Architecture. If you are not sure what that means, this template is probably not relevant to you, and you should use the default Bug Report template.
options:
- label: I am running a build that uses the New Architecture
required: true
- type: markdown
attributes:
value: |
Thanks for taking the time to report an issue you've found in the app! Before you submit this issue, please make sure you've searched for similar issues that are already open and being tracked. If you find an open issue that seems relevant to yours, it is best to leave a response there with your information instead of opening a new issue, since it helps to consolidate the info in one place.
- type: textarea
attributes:
label: Steps to Reproduce
description: |
Please provide the steps that may reproduce the issue that you are experiencing. The more concise of a
reproduction that you provide, the easier it will be for us to identify the issue and fix it in a timely manner.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
attributes:
label: Attachments
description: |
If possible, please provide any images or videos that may help us understand the issue you are experiencing.
validations:
required: false
- type: dropdown
attributes:
label: What platform(s) does this occur on?
multiple: true
options:
- iOS
- Android
validations:
required: true
- type: input
attributes:
label: Device Info
description: |
Please provide the device information that you are using when experiencing this issue. This can include the
device model, operating system version, and any other relevant information.
validations:
required: false
- type: input
attributes:
label: What version of the app are you using?
description: |
You can easily find this information by visting the Settings screen in the app, and tapping on the version info
at the bottom of the screen. All the relevant information will be copied to your clipboard, and you will be
able to share it here.
validations:
required: true
- type: textarea
attributes:
label: Additional Information
description: |
Please provide any additional information that you think may be helpful in identifying the issue you are
experiencing. This can include any error messages, logs, or other information that you think may be relevant.
validations:
required: false
-24
View File
@@ -1,24 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature-request
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->
@@ -0,0 +1,42 @@
name: "Feature Request"
description: "Suggest an idea for the Bluesky app."
labels: ["feature-request"]
body:
- type: markdown
attributes:
value: |
Thanks for submitting a feature request! Before you submit this request, please make sure you've searched for similar requests that are already open and being tracked. If you find an open request that seems relevant to yours, it is best to leave a response there with your information instead of opening a new request, since it helps to consolidate the info in one place.
- type: textarea
attributes:
label: Describe the Feature
description: |
Please provide a detailed description of the feature you would like to see implemented in the app. The more
information you provide, the easier it will be for us to understand the feature you are requesting and to
implement it in a timely manner.
validations:
required: true
- type: textarea
attributes:
label: Attachments
description: |
If helpful, provide some images or videos of similar features in other apps that you think would be helpful
for us to understand the feature you are requesting, or places within the app that you think the feature belongs
in or is missing from.
validations:
required: false
- type: textarea
attributes:
label: Describe Alternatives
description: |
If there are any alternative solutions or features that you think would be helpful to implement in place of the
feature you are requesting, please provide a description of those as well.
validations:
required: false
- type: textarea
attributes:
label: Additional Context
description: |
If there is any additional context or information that you think would be helpful for us to know about the
feature you are requesting, please provide that information here.
validations:
required: false
@@ -1,10 +1,10 @@
name: build-and-push-bskyweb-aws
on:
workflow_dispatch:
push:
branches:
- main
- traffic-reduction
- respect-optout-for-embeds
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
@@ -43,6 +43,13 @@ jobs:
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Set outputs
id: vars
run: |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "SENTRY_DIST=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "SENTRY_RELEASE=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
@@ -54,3 +61,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
EXPO_PUBLIC_BUNDLE_IDENTIFIER=${{ steps.vars.outputs.sha_short }}
SENTRY_DIST=${{ steps.vars.outputs.SENTRY_DIST }}
SENTRY_RELEASE=${{ steps.vars.outputs.SENTRY_RELEASE }}
SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
@@ -0,0 +1,55 @@
name: build-and-push-embedr-aws
on:
push:
branches:
- main
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
IMAGE_NAME: embed
jobs:
embedr-container-aws:
if: github.repository == 'bluesky-social/social-app'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v1
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME}}
password: ${{ env.PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: ./Dockerfile.embedr
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
@@ -0,0 +1,53 @@
name: build-and-push-link-aws
on:
workflow_dispatch:
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
IMAGE_NAME: bskylink
jobs:
link-container-aws:
if: github.repository == 'bluesky-social/social-app'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v1
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME}}
password: ${{ env.PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: ./Dockerfile.bskylink
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
@@ -0,0 +1,53 @@
name: build-and-push-ogcard-aws
on:
workflow_dispatch:
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
IMAGE_NAME: bskyogcard
jobs:
ogcard-container-aws:
if: github.repository == 'bluesky-social/social-app'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v1
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME}}
password: ${{ env.PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: ./Dockerfile.bskyogcard
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+176
View File
@@ -0,0 +1,176 @@
---
name: Build and Submit Android
on:
workflow_dispatch:
inputs:
profile:
type: choice
description: Build profile to use
options:
- testflight-android
- production
jobs:
build:
name: Build and Submit Android
runs-on: ubuntu-latest
steps:
- name: Check for EXPO_TOKEN
run: >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 5
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 🪛 Setup jq
uses: dcarbone/install-jq-action@v2
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: ⛏️ Setup EAS local builds
run: yarn global add eas-cli-local-build-plugin
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: ⚙️ Install dependencies
run: yarn install
- name: 🔤 Compile translations
run: yarn intl:build 2>&1 | tee i18n.log
- name: Check for i18n compilation errors
run: if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compilation errors!\n\n"; fi
- name: ✏️ Write environment variables
run: |
export json='${{ secrets.GOOGLE_SERVICES_TOKEN }}'
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: Setup Sentry vars for build-time injection
id: sentry
run: |
echo "SENTRY_DIST=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "SENTRY_RELEASE=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
- name: 🏗️ EAS Build
run: SENTRY_DIST=${{ steps.sentry.outputs.SENTRY_DIST }} SENTRY_RELEASE=${{ steps.sentry.outputs.SENTRY_RELEASE }} SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} yarn use-build-number-with-bump eas build -p android --profile ${{ inputs.profile || 'testflight-android' }} --local --output build.aab --non-interactive
- name: ✍️ Rename Testflight bundle
if: ${{ inputs.profile != 'production' }}
run: mv build.aab build.apk
- name: ⏰ Get a timestamp
id: timestamp
uses: nanzm/get-time-action@master
with:
format: 'MM-DD-HH-mm-ss'
- name: 🚀 Upload Production Artifact
id: upload-artifact-production
if: ${{ inputs.profile == 'production' }}
uses: actions/upload-artifact@v4
with:
retention-days: 30
compression-level: 6
name: build-${{ steps.timestamp.outputs.time }}.aab
path: build.aab
- name: 🚀 Upload Testflight Artifact
id: upload-artifact-testflight
if: ${{ inputs.profile != 'production' }}
uses: actions/upload-artifact@v4
with:
retention-days: 30
compression-level: 6
name: build-${{ steps.timestamp.outputs.time }}.apk
path: build.apk
- name: 📚 Get version from package.json
id: get-build-info
run: bash scripts/setGitHubOutput.sh
- name: 🔔 Notify Slack of Production Build
if: ${{ inputs.profile == 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "Android production build for Google Play Store submission is ready!\n```Artifact: ${{ steps.upload-artifact-production.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: 🔔 Notify Slack of Testflight Build
if: ${{ inputs.profile != 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "Android build is ready for testing. Download the artifact here: ${{ steps.upload-artifact-testflight.outputs.artifact-url }}"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: 🏗️ Build Production APK
if: ${{ inputs.profile == 'production' }}
run: yarn use-build-number-with-bump eas build -p android --profile production-apk --local --output build.apk --non-interactive
- name: 🚀 Upload Production APK Artifact
id: upload-artifact-production-apk
if: ${{ inputs.profile == 'production' }}
uses: actions/upload-artifact@v4
with:
retention-days: 30
compression-level: 6
name: build-${{ steps.timestamp.outputs.time }}.apk
path: build.apk
- name: 🔔 Notify Slack of Production APK Build
if: ${{ inputs.profile == 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "Android production build for GitHub/Obtanium is ready!\n```Artifact: ${{ steps.upload-artifact-production-apk.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
if: ${{ inputs.profile == 'testflight' }}
with:
path: most-recent-testflight-commit.txt
key: most-recent-testflight-commit
- name: ✏️ Write commit hash to cache
if: ${{ inputs.profile == 'testflight' }}
run: echo ${{ github.sha }} > most-recent-testflight-commit.txt
+123
View File
@@ -0,0 +1,123 @@
---
name: Build and Submit iOS
on:
workflow_dispatch:
inputs:
profile:
type: choice
description: Build profile to use
options:
- testflight
- production
jobs:
build:
name: Build and Submit iOS
runs-on: macos-15
steps:
- name: Check for EXPO_TOKEN
run: >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 5
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 🪛 Setup jq
uses: dcarbone/install-jq-action@v2
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: ⛏️ Setup EAS local builds
run: yarn global add eas-cli-local-build-plugin
- name: ⚙️ Install dependencies
run: yarn install
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.2'
- name: ☕️ Setup Cocoapods
uses: maxim-lobanov/setup-cocoapods@v1
with:
version: 1.14.3
- name: 💾 Cache Pods
uses: actions/cache@v3
id: pods-cache
with:
path: ./ios/Pods
# We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
# change unless the yarn version changes as well.
key: ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}
- name: 🔤 Compile translations
run: yarn intl:build 2>&1 | tee i18n.log
- name: Check for i18n compilation errors
run: if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compilation errors!\n\n"; fi
- name: ✏️ Write environment variables
run: |
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
- name: Setup Sentry vars for build-time injection
id: sentry
run: |
echo "SENTRY_DIST=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "SENTRY_RELEASE=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
- name: 🏗️ EAS Build
run: SENTRY_DIST=${{ steps.sentry.outputs.SENTRY_DIST }} SENTRY_RELEASE=${{ steps.sentry.outputs.SENTRY_RELEASE }} SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} yarn use-build-number-with-bump eas build -p ios --profile ${{ inputs.profile || 'testflight' }} --local --output build.ipa --non-interactive
- name: 🚀 Deploy
run: eas submit -p ios --non-interactive --path build.ipa
- name: 📚 Get version from package.json
id: get-build-info
run: bash scripts/setGitHubOutput.sh
- name: 🔔 Notify Slack of Production Build
if: ${{ inputs.profile == 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "iOS production build for App Store submission is ready!\n```Artifact: Check TestFlight to know when it is available\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_IOS_BUILD_NUMBER }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
if: ${{ inputs.profile == 'testflight' }}
with:
path: most-recent-testflight-commit.txt
key: most-recent-testflight-commit
- name: ✏️ Write commit hash to cache
if: ${{ inputs.profile == 'testflight' }}
run: echo ${{ github.sha }} > most-recent-testflight-commit.txt
@@ -0,0 +1,332 @@
---
name: Bundle and Deploy EAS Update
on:
push:
branches:
- main
workflow_dispatch:
inputs:
channel:
type: choice
description: Deployment channel to use
options:
- testflight
- production
runtimeVersion:
type: string
description: Runtime version (in x.x.x format) that this update is for
required: true
jobs:
bundleDeploy:
name: Bundle and Deploy EAS Update
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}-deploy
cancel-in-progress: true
outputs:
changes-detected: ${{ steps.fingerprint.outputs.includes-changes }}
steps:
- name: Check for EXPO_TOKEN
run: >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
# Validate the version if one is supplied. This should generally happen if the update is for a production client
- name: 🧐 Validate version
if: ${{ inputs.runtimeVersion }}
run: |
if [ -z "${{ inputs.runtimeVersion }}" ]; then
[[ "${{ inputs.runtimeVersion }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] && echo "Version is valid" || exit 1
fi
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: ⬇️ Fetch commits from base branch
if: ${{ github.ref != 'refs/heads/main' }}
run: git fetch origin main:main --depth 100
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 📷 Check fingerprint and install dependencies
id: fingerprint
uses: bluesky-social/github-actions/fingerprint-native@main
with:
profile: ${{ inputs.channel || 'testflight' }}
previous-commit-tag: ${{ inputs.runtimeVersion }}
- name: Lint check
run: yarn lint
- name: Lint lockfile
run: yarn lockfile-lint
- name: Prettier check
run: yarn prettier --check .
- name: 🔤 Compile translations
run: yarn intl:build 2>&1 | tee i18n.log
- name: Check for i18n compilation errors
run: if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compilation errors!\n\n"; fi
- name: Type check
run: yarn typecheck
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
if: ${{ !steps.fingerprint.outputs.includes-changes }}
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: ⛏️ Setup Expo
if: ${{ !steps.fingerprint.outputs.includes-changes }}
run: yarn global add eas-cli-local-build-plugin
- name: 🪛 Setup jq
if: ${{ !steps.fingerprint.outputs.includes-changes }}
uses: dcarbone/install-jq-action@v2
- name: ✏️ Write environment variables
if: ${{ !steps.fingerprint.outputs.includes-changes }}
run: |
export json='${{ secrets.GOOGLE_SERVICES_TOKEN }}'
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: Setup Sentry vars for build-time injection
id: sentry
run: |
echo "SENTRY_DIST=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
echo "SENTRY_RELEASE=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
- name: 🏗️ Create Bundle
if: ${{ !steps.fingerprint.outputs.includes-changes }}
run: SENTRY_DIST=${{ steps.sentry.outputs.SENTRY_DIST }} SENTRY_RELEASE=${{ steps.sentry.outputs.SENTRY_RELEASE }} SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} EXPO_PUBLIC_ENV="${{ inputs.channel || 'testflight' }}" yarn export
- name: 📦 Package Bundle and 🚀 Deploy
if: ${{ !steps.fingerprint.outputs.includes-changes }}
run: yarn use-build-number bash scripts/bundleUpdate.sh
env:
DENIS_API_KEY: ${{ secrets.DENIS_API_KEY }}
RUNTIME_VERSION: ${{ inputs.runtimeVersion }}
CHANNEL_NAME: ${{ inputs.channel || 'testflight' }}
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
if: ${{ !steps.fingerprint.outputs.includes-changes }}
with:
path: most-recent-testflight-commit.txt
key: most-recent-testflight-commit
- name: ✏️ Write commit hash to cache
if: ${{ !steps.fingerprint.outputs.includes-changes }}
run: echo ${{ github.sha }} > most-recent-testflight-commit.txt
# GitHub actions are horrible so let's just copy paste this in
buildIfNecessaryIOS:
name: Build and Submit iOS
runs-on: macos-15
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}-build-ios
cancel-in-progress: true
needs: [bundleDeploy]
# Gotta check if its NOT '[]' because any md5 hash in the outputs is detected as a possible secret and won't be
# available here
if: ${{ inputs.channel != 'production' && needs.bundleDeploy.outputs.changes-detected }}
steps:
- name: Check for EXPO_TOKEN
run: >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 5
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: ⛏️ Setup EAS local builds
run: yarn global add eas-cli-local-build-plugin
- name: ⚙️ Install dependencies
run: yarn install
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '16.2'
- name: ☕️ Setup Cocoapods
uses: maxim-lobanov/setup-cocoapods@v1
with:
version: 1.14.3
- name: 💾 Cache Pods
uses: actions/cache@v3
id: pods-cache
with:
path: ./ios/Pods
# We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
# change unless the yarn version changes as well.
key: ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}
- name: 🔤 Compile translations
run: yarn intl:build
- name: ✏️ Write environment variables
run: |
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
- name: 🏗️ EAS Build
run: yarn use-build-number-with-bump eas build -p ios --profile testflight --local --output build.ipa --non-interactive
- name: 🚀 Deploy
run: eas submit -p ios --non-interactive --path build.ipa
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
if: ${{ inputs.channel == 'testflight' }}
with:
path: most-recent-testflight-commit.txt
key: most-recent-testflight-commit
- name: ✏️ Write commit hash to cache
if: ${{ inputs.channel == 'testflight' }}
run: echo ${{ github.sha }} > most-recent-testflight-commit.txt
buildIfNecessaryAndroid:
name: Build and Submit Android
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}-build-android
cancel-in-progress: false
needs: [bundleDeploy]
# Gotta check if its NOT '[]' because any md5 hash in the outputs is detected as a possible secret and won't be
# available here
if: ${{ inputs.channel != 'production' && needs.bundleDeploy.outputs.changes-detected }}
steps:
- name: Check for EXPO_TOKEN
run: >
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 5
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
expo-version: latest
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: ⛏️ Setup EAS local builds
run: yarn global add eas-cli-local-build-plugin
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: ⚙️ Install dependencies
run: yarn install
- name: 🔤 Compile translations
run: yarn intl:build
- name: ✏️ Write environment variables
run: |
export json='${{ secrets.GOOGLE_SERVICES_TOKEN }}'
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: 🏗️ EAS Build
run: yarn use-build-number-with-bump eas build -p android --profile testflight-android --local --output build.apk --non-interactive
- name: ⏰ Get a timestamp
id: timestamp
uses: nanzm/get-time-action@master
with:
format: 'MM-DD-HH-mm-ss'
- name: 🚀 Upload Artifact
id: upload-artifact
uses: actions/upload-artifact@v4
with:
retention-days: 30
compression-level: 0
name: build-${{ steps.timestamp.outputs.time }}.apk
path: build.apk
- name: 🔔 Notify Slack
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "Android build is ready for testing. Download the artifact here: ${{ steps.upload-artifact.outputs.artifact-url }}"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
if: ${{ inputs.channel != 'testflight' && inputs.channel != 'production' }}
with:
path: most-recent-testflight-commit.txt
key: most-recent-testflight-commit
- name: ✏️ Write commit hash to cache
if: ${{ inputs.channel != 'testflight' && inputs.channel != 'production' }}
run: echo ${{ github.sha }} > most-recent-testflight-commit.txt
@@ -1,52 +0,0 @@
name: Deploy Nightly Testflight Release
on:
schedule:
- cron: '0 5 * * *'
jobs:
build:
name: Deploy Nightly Testflight Release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Check for EXPO_TOKEN
run: |
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: yarn
- name: Setup EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: Install dependencies
run: yarn install
- name: Bump build number
run: yarn bump:ios
- name: EAS build and submit
run: eas build -p ios --profile production --auto-submit --non-interactive
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Nightly iOS Build Bump
branch: main
commit_user_name: github-actions[bot]
commit_user_email: github-actions[bot]@users.noreply.github.com
+6 -6
View File
@@ -19,9 +19,9 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.21'
- name: Dummy JS File
run: touch bskyweb/static/js/blah.js
go-version: '1.23'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Check
run: cd bskyweb/ && make check
- name: Build (binary)
@@ -36,8 +36,8 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.21'
- name: Dummy JS File
run: touch bskyweb/static/js/blah.js
go-version: '1.23'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Lint
run: cd bskyweb/ && make lint
+13 -5
View File
@@ -16,6 +16,10 @@ jobs:
steps:
- name: Check out Git repository
uses: actions/checkout@v3
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
@@ -24,6 +28,10 @@ jobs:
attempt_delay: 2000
- name: Lint check
run: yarn lint
- name: Lint lockfile
run: yarn lockfile-lint
- name: Prettier check
run: yarn prettier --check .
- name: Check & compile i18n
run: yarn intl:build
- name: Type check
@@ -32,12 +40,12 @@ jobs:
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Install node 18
uses: actions/setup-node@v4
with:
node-version: 18
- name: Check out Git repository
uses: actions/checkout@v3
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
@@ -48,4 +56,4 @@ jobs:
run: yarn intl:build
- name: Run tests
run: |
NODE_ENV=test EXPO_PUBLIC_ENV=test yarn test --forceExit
NODE_ENV=test yarn test --forceExit
@@ -0,0 +1,49 @@
name: Nightly Update Source Languages
on:
schedule:
- cron: '0 2 * * *' # run at 2 AM UTC
workflow_dispatch:
jobs:
extract-languages:
name: Nightly Update Source Languages
runs-on: ubuntu-latest
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
steps:
- name: Check out Git repository
uses: actions/checkout@v3
with:
ssh-key: ${{secrets.GH_ACTION_DEPLOY_KEY}}
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
command: yarn --frozen-lockfile
attempt_limit: 3
attempt_delay: 2000
- name: Extract language strings
run: yarn intl:extract
- name: Create commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Nightly source-language update
file_pattern: ./src/locale/locales/en/messages.po
- name: Push source lang to Crowdin
uses: crowdin/github-action@v2
with:
upload_sources: true
upload_sources_args: "-b main"
upload_translations: false
push_translations: false
push_sources: false
create_pull_request: false
env:
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
+146
View File
@@ -0,0 +1,146 @@
# Credit for fingerprint action https://github.com/expo/expo
# https://github.com/expo/expo/blob/main/.github/workflows/pr-labeler.yml
---
name: PR Tests
on:
push:
branches: [main]
pull_request:
types: [opened, synchronize]
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
permissions:
pull-requests: write
actions: write
contents: read
jobs:
webpack-analyzer:
runs-on: ubuntu-22.04
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: Ensure tracking relevant branches and checkout base
run: |
git checkout ${{ github.head_ref }}
git checkout ${{ github.base_ref }}
- name: Get the base commit
id: base-commit
run: echo base-commit=$(git log -n 1 ${{ github.base_ref }} --pretty=format:'%H') >> "$GITHUB_OUTPUT"
- name: Merge PR commit
run: |
# Have to set a git config for the merge to work
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git merge --no-edit ${{ github.head_ref }}
yarn install
- name: 🔦 Generate stats file for PR
run: |
yarn generate-webpack-stats-file
mv stats.json ../stats-new.json
- name: ⬇️ Get base stats from cache
id: get-base-stats
uses: actions/cache@v4
with:
path: stats-base.json
key: stats-base-${{ steps.base-commit.outputs.base-commit }}
- name: Restore to base commit
if: ${{ !steps.get-base-stats.outputs.cache-hit }}
run: |
git reset HEAD~
git restore .
- name: 🔦 Generate stats file from base commit
if: ${{ !steps.get-base-stats.outputs.cache-hit }}
run: |
yarn install
yarn generate-webpack-stats-file
mv stats.json stats-base.json
- name: Get diff
id: get-diff
uses: NejcZdovc/bundle-size-diff@v1
with:
base_path: 'stats-base.json'
pr_path: '../stats-new.json'
excluded_assets: '(.+).chunk.js|(.+).js.map|(.+).json|(.+).png'
- name: 💬 Drop a comment
uses: marocchino/sticky-pull-request-comment@v2
with:
header: bundle-diff
message: |
| Old size | New size | Diff |
|----------|----------|-----------------------|
| ${{ steps.get-diff.outputs.base_file_string }} | ${{ steps.get-diff.outputs.pr_file_string }} | ${{ steps.get-diff.outputs.diff_file_string }} (${{ steps.get-diff.outputs.percent }}%) |
---
fingerprint-native:
runs-on: ubuntu-22.04
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 100
- name: ⬇️ Fetch commits from base branch
run: git fetch origin main:main --depth 100
if: github.event_name == 'pull_request'
- name: 🔧 Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: yarn
- name: 📷 Check fingerprint and install dependencies
id: fingerprint
uses: bluesky-social/github-actions/fingerprint-native@main
with:
profile: pull-request
- name: 💬 Drop a comment
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ steps.fingerprint.outputs.includes-changes }}
with:
header: fingerprint-diff
message: |
The Pull Request introduced fingerprint changes against the base commit:
<details><summary>Fingerprint diff</summary>
```json
${{ steps.fingerprint.outputs.diff }}
```
</details>
---
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
- name: 💬 Delete comment
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ !steps.fingerprint.outputs.includes-changes }}
with:
header: fingerprint-diff
delete: true
+46
View File
@@ -0,0 +1,46 @@
name: Lockfile
on:
pull_request:
concurrency:
group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
verify-yarn-lock:
name: No manual yarn.lock edits
runs-on: ubuntu-latest
steps:
- name: Check out PR HEAD
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch base branch
run: git fetch origin ${{ github.base_ref }} --depth=1
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Reset yarn.lock to base
run: git show "origin/${{ github.base_ref }}:yarn.lock" > yarn.lock
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
# Fine to skip scripts since we don't run any code
command: yarn install --ignore-scripts
attempt_limit: 3
attempt_delay: 2000
- name: Verify yarn.lock
run: |
git diff --quiet --exit-code || {
echo '::error::`yarn.lock` does not match what Yarn would generate given the base `yarn.lock` and the head `package.json`.'
echo '::error:: - If this is intentional, you can ignore this check.'
echo '::error:: - If this is unintentional, apply the following diff:'
git --no-pager diff
exit 1
}
+12 -1
View File
@@ -18,7 +18,6 @@ xcuserdata
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# Android/IntelliJ
@@ -78,6 +77,7 @@ dist/
*.mobileprovision
*.orig.*
web-build/
stats.json
# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*
@@ -104,6 +104,17 @@ google-services.json
# Performance results (Flashlight)
.perf/
# ESLint
.eslintcache
# i18n
src/locale/locales/_build/
src/locale/locales/**/*.js
# local builds
*.apk
*.aab
*.ipa
# ogcard assets
bskyogcard/src/assets/fonts/noto-*
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn lint-staged
npx lint-staged
+1
View File
@@ -0,0 +1 @@
20
+19 -11
View File
@@ -1,12 +1,20 @@
ios
android
src/third-party
src/app.json
public
/bskyweb/templates
/dist/
/.watchmanconfig
/app.json
# Ignore everything except JS-ey or CSS code.
# Based on https://stackoverflow.com/a/70715829/458193
*
!**/*.js
!**/*.jsx
!**/*.ts
!**/*.tsx
!*/
web/index.html
web-build/*
!**/*.css
# More specific ignores go below.
.expo
android
ios
src/locale/locales
lib/react-compiler-runtime
bskyweb/static
coverage
web-build
+39 -5
View File
@@ -1,20 +1,48 @@
FROM golang:1.21-bullseye AS build-env
FROM golang:1.23-bullseye AS build-env
WORKDIR /usr/src/social-app
ENV DEBIAN_FRONTEND=noninteractive
#
# Node
ENV NODE_VERSION=18
#
ENV NODE_VERSION=20
ENV NVM_DIR=/usr/share/nvm
#
# Go
#
ENV GODEBUG="netdns=go"
ENV GOOS="linux"
ENV GOARCH="amd64"
ENV CGO_ENABLED=1
ENV GOEXPERIMENT="loopvar"
#
# Expo
#
ARG EXPO_PUBLIC_BUNDLE_IDENTIFIER
ENV EXPO_PUBLIC_BUNDLE_IDENTIFIER=${EXPO_PUBLIC_BUNDLE_IDENTIFIER:-dev}
# The latest git hash of the preview branch on render.com
ARG RENDER_GIT_COMMIT
#
# Sentry
#
ARG SENTRY_AUTH_TOKEN
ENV SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN:-unknown}
# Will fall back to package.json#version, but this is handled elsewhere
ARG SENTRY_RELEASE
ENV SENTRY_RELEASE=$SENTRY_RELEASE
ARG SENTRY_DIST
# Default to RENDER_GIT_COMMIT if not set by GitHub workflows
ENV SENTRY_DIST=${SENTRY_DIST:-$RENDER_GIT_COMMIT}
#
# Copy everything into the container
#
COPY . .
#
@@ -23,16 +51,20 @@ COPY . .
RUN mkdir --parents $NVM_DIR && \
wget \
--output-document=/tmp/nvm-install.sh \
https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh && \
https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
bash /tmp/nvm-install.sh
RUN \. "$NVM_DIR/nvm.sh" && \
nvm install $NODE_VERSION && \
nvm use $NODE_VERSION && \
echo "Using bundle identifier: $EXPO_PUBLIC_BUNDLE_IDENTIFIER" && \
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER" >> .env && \
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env && \
npm install --global yarn && \
yarn && \
yarn intl:compile && \
yarn build-web
yarn intl:build 2>&1 | tee i18n.log && \
if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compile errors!\n\n"; fi && \
EXPO_PUBLIC_BUNDLE_IDENTIFIER=$EXPO_PUBLIC_BUNDLE_IDENTIFIER EXPO_PUBLIC_BUNDLE_DATE=$() SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN SENTRY_RELEASE=$SENTRY_RELEASE SENTRY_DIST=$SENTRY_DIST yarn build-web
# DEBUG
RUN find ./bskyweb/static && find ./web-build/static
@@ -72,3 +104,5 @@ CMD ["/usr/bin/bskyweb"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="bsky.app Web App"
LABEL org.opencontainers.image.licenses=MIT
# NOOP
+41
View File
@@ -0,0 +1,41 @@
FROM node:20.11-alpine3.18 as build
# Move files into the image and install
WORKDIR /app
COPY ./bskylink/package.json ./
COPY ./bskylink/yarn.lock ./
RUN yarn install --frozen-lockfile
COPY ./bskylink ./
# build then prune dev deps
RUN yarn build
RUN yarn install --production --ignore-scripts --prefer-offline
# Uses assets from build stage to reduce build size
FROM node:20.11-alpine3.18
RUN apk add --update dumb-init
# Avoid zombie processes, handle signal forwarding
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /app
COPY --from=build /app /app
RUN mkdir /app/data && chown node /app/data
VOLUME /app/data
EXPOSE 3000
ENV LINK_PORT=3000
ENV NODE_ENV=production
# potential perf issues w/ io_uring on this version of node
ENV UV_USE_IO_URING=0
# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
USER node
CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Bsky Link Service"
LABEL org.opencontainers.image.licenses=UNLICENSED
+41
View File
@@ -0,0 +1,41 @@
FROM node:20.11-alpine3.18 as build
# Move files into the image and install
WORKDIR /app
COPY ./bskyogcard/package.json ./
COPY ./bskyogcard/yarn.lock ./
RUN yarn install --frozen-lockfile
COPY ./bskyogcard ./
# build then prune dev deps
RUN yarn install-fonts && yarn build
RUN yarn install --production --ignore-scripts --prefer-offline
# Uses assets from build stage to reduce build size
FROM node:20.11-alpine3.18
RUN apk add --update dumb-init
# Avoid zombie processes, handle signal forwarding
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /app
COPY --from=build /app /app
RUN mkdir /app/data && chown node /app/data
VOLUME /app/data
EXPOSE 3000
ENV CARD_PORT=3000
ENV NODE_ENV=production
# potential perf issues w/ io_uring on this version of node
ENV UV_USE_IO_URING=0
# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
USER node
CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Bsky Card Service"
LABEL org.opencontainers.image.licenses=UNLICENSED
+80
View File
@@ -0,0 +1,80 @@
FROM golang:1.23-bullseye AS build-env
WORKDIR /usr/src/social-app
ENV DEBIAN_FRONTEND=noninteractive
# Node
ENV NODE_VERSION=20
ENV NVM_DIR=/usr/share/nvm
# Go
ENV GODEBUG="netdns=go"
ENV GOOS="linux"
ENV GOARCH="amd64"
ENV CGO_ENABLED=1
ENV GOEXPERIMENT="loopvar"
COPY . .
#
# Generate the JavaScript webpack. NOTE: this will change
#
RUN mkdir --parents $NVM_DIR && \
wget \
--output-document=/tmp/nvm-install.sh \
https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
bash /tmp/nvm-install.sh
RUN \. "$NVM_DIR/nvm.sh" && \
nvm install $NODE_VERSION && \
nvm use $NODE_VERSION && \
npm install --global yarn && \
yarn && \
cd bskyembed && yarn install --frozen-lockfile && cd .. && \
yarn intl:build && \
yarn build-embed
# DEBUG
RUN find ./bskyweb/embedr-static && find ./bskyweb/embedr-templates && find ./bskyembed/dist
# hack around issue with empty directory and go:embed
RUN touch bskyweb/static/js/empty.txt
RUN touch bskyweb/static/css/empty.txt
RUN touch bskyweb/static/media/empty.txt
#
# Generate the embedr Go binary.
#
RUN cd bskyweb/ && \
go mod download && \
go mod verify
RUN cd bskyweb/ && \
go build \
-v \
-trimpath \
-tags timetzdata \
-o /embedr \
./cmd/embedr
FROM debian:bullseye-slim
ENV GODEBUG=netdns=go
ENV TZ=Etc/UTC
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --yes \
dumb-init \
ca-certificates
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /embedr
COPY --from=build-env /embedr /usr/bin/embedr
CMD ["/usr/bin/embedr"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="embed.bsky.app Web App"
LABEL org.opencontainers.image.licenses=MIT
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright 20232024 Bluesky PBC
Copyright 20232025 Bluesky PBC
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+9 -3
View File
@@ -13,9 +13,14 @@ build-web: ## Compile web bundle, copy to bskyweb directory
yarn intl:build
yarn build-web
.PHONY: build-web-embed
build-web-embed: ## Compile web embed bundle, copy to bskyweb/embedr* directories
yarn intl:build
yarn build-embed
.PHONY: test
test: ## Run all tests
NODE_ENV=test EXPO_PUBLIC_ENV=test yarn test
NODE_ENV=test yarn test
.PHONY: lint
lint: ## Run style checks and verify syntax
@@ -28,9 +33,10 @@ lint: ## Run style checks and verify syntax
.PHONY: deps
deps: ## Installs dependent libs using 'yarn install'
yarn install --frozen-lockfile
cd bskyembed && yarn install --frozen-lockfile
.PHONY: nvm-setup
nvm-setup: ## Use NVM to install and activate node+yarn
nvm install 18
nvm use 18
nvm install 20
nvm use 20
npm install --global yarn
+4 -6
View File
@@ -10,7 +10,7 @@ Get the app itself:
## Development Resources
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also on open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
There is a small amount of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application.
@@ -42,10 +42,10 @@ The Bluesky Social application encompasses a set of schemas and APIs built in th
- Open an issue and give some time for discussion before submitting a PR.
- Stay away from PRs like...
- Changing "Post" to "Skeet."
- Refactoring the codebase, eg to replace mobx with redux or something.
- Refactoring the codebase, e.g., to replace MobX with Redux or something.
- Adding entirely new features without prior discussion.
Remember, we serve a wide community of users. Our day to day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!
Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!
## Forking guidelines
@@ -63,9 +63,7 @@ If you discover any security issues, please send an email to security@bsky.app.
## Are you a developer interested in building on atproto?
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party can be as seamless as first-party through custom feeds, federated services, clients, and more.
If you're a developer interested in building on atproto, we'd love to email you a Bluesky invite code. Simply share your GitHub (or similar) profile with us via [this form](https://forms.gle/BF21oxVNZiDjDhXF9).
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party integration can be as seamless as first-party through custom feeds, federated services, clients, and more.
## License (MIT)
+2
View File
@@ -0,0 +1,2 @@
flows:
- "flows/**"
+30
View File
@@ -0,0 +1,30 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: ?users
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Post an image with the porn label
- assertVisible:
id: "composeFAB"
- tapOn:
id: "composeFAB"
- inputText: "Post with an image"
- tapOn:
id: "openGalleryBtn"
- tapOn: "Allow Full Access"
- tapOn: "Content warnings"
- tapOn: "Porn"
- tapOn:
label: "Tap on confirm"
id: "confirmBtn"
- tapOn:
id: "composerPublishBtn"
- tapOn:
id: "e2eRefreshHome"
- assertVisible: "Adult Content"
+89
View File
@@ -0,0 +1,89 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: ?users
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "composeFAB"
- inputText: "Post text only"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "composeFAB"
- inputText: "Post with an image"
- tapOn:
id: "openGalleryBtn"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "composeFAB"
- inputText: "Post with a https://example.com link card"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "e2eRefreshHome"
- tapOn:
id: "replyBtn"
- inputText: "Reply text only"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "replyBtn"
- inputText: "Reply with an image"
- tapOn:
id: "openGalleryBtn"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "replyBtn"
- inputText: "Reply with a https://example.com link card"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "repostBtn"
- tapOn:
id: "quoteBtn"
- inputText: "QP text only"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "repostBtn"
- tapOn:
id: "quoteBtn"
- inputText: "QP with an image"
- tapOn:
id: "openGalleryBtn"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "repostBtn"
- tapOn:
id: "quoteBtn"
- inputText: "QP with a https://example.com link card"
- tapOn:
id: "composerPublishBtn"
- assertVisible:
id: "composeFAB"
+34
View File
@@ -0,0 +1,34 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: ""
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eOpenLoggedOutView"
- tapOn:
id: "createAccountButton"
- tapOn: "Bluesky Social"
- tapOn:
id: "customSelectBtn"
- tapOn:
id: "customServerTextInput"
- inputText: "http://localhost:3000"
- pressKey: Enter
- tapOn:
id: "doneBtn"
- tapOn:
id: "emailInput"
- inputText: "example@test.com"
- tapOn:
id: "passwordInput"
- inputText: "hunter22"
- hideKeyboard
- tapOn:
id: "nextBtn"
- inputText: "e2e-test"
- tapOn:
id: "nextBtn"
+190
View File
@@ -0,0 +1,190 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&follows&posts"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
label: "Create a curate list"
id: "e2eGotoLists"
- tapOn:
id: "newUserListBtn"
- assertVisible:
id: "createOrEditListModal"
- tapOn:
id: "editNameInput"
- inputText: "Good Ppl"
- tapOn:
id: "editDescriptionInput"
- inputText: "They good"
- tapOn: "Save"
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- tapOn: "People"
- assertVisible: "Good Ppl"
- assertVisible: "They good"
- tapOn:
label: "Edit display name and description via the edit curatelist modal"
point: "90%,9%"
- tapOn: "Edit list details"
- assertVisible:
id: "createOrEditListModal"
- tapOn:
id: "editNameInput"
- eraseText
- inputText: "Bad Ppl"
- hideKeyboard
- tapOn:
id: "editDescriptionInput"
- eraseText
- inputText: "They bad"
- tapOn: "Save"
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- assertVisible: Bad Ppl
- assertVisible: They bad
- tapOn:
label: "Remove description via the edit curatelist modal"
point: "90%,9%"
- tapOn: "Edit list details"
- assertVisible:
id: "createOrEditListModal"
- tapOn:
id: "editDescriptionInput"
- eraseText
- tapOn: "Save"
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- assertNotVisible:
id: "listDescription"
- tapOn:
label: "Delete the curatelist"
point: "90%,9%"
- tapOn: "Delete List"
- tapOn:
id: "confirmBtn"
- tapOn:
label: "Create a new curatelist"
id: "e2eGotoLists"
- tapOn:
id: "newUserListBtn"
- assertVisible:
id: "createOrEditListModal"
- tapOn:
id: "editNameInput"
- inputText: "Good Ppl"
- tapOn:
id: "editDescriptionInput"
- inputText: "They good"
- tapOn: "Save"
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- tapOn: "People"
- assertVisible: "Good Ppl"
- assertVisible: "They good"
- tapOn: "People"
- tapOn: "Start adding people"
- assertVisible:
id: "listAddUserModal"
- tapOn:
id: "searchInput"
- inputText: "b"
- pressKey: Enter
- tapOn:
id: "user-bob.test-addBtn"
- tapOn:
id: "doneBtn"
- assertNotVisible:
id: "listAddUserModal"
- assertVisible:
id: "user-bob.test"
- tapOn: "Posts"
- assertVisible:
label: "Shows posts by the users in the list"
id: "feedItem-by-bob.test"
- tapOn:
label: "Pins the list"
id: "pinBtn"
- tapOn:
id: "e2eGotoHome"
- tapOn: "Good Ppl"
- assertVisible:
id: "feedItem-by-bob.test"
- tapOn:
id: "e2eGotoFeeds"
- tapOn:
id: "saved-feed-Good Ppl"
- assertVisible:
id: "feedItem-by-bob.test"
- tapOn:
id: "unpinBtn"
- tapOn:
id: "bottomBarHomeBtn"
- assertNotVisible:
id: "homeScreenFeedTabs-Good Ppl"
- tapOn:
id: "e2eGotoLists"
- tapOn: "Good Ppl"
- tapOn: "People"
- assertVisible:
label: "Removes users on curatelists from the list"
id: "user-bob.test"
- tapOn:
point: "90%,43%"
- assertVisible:
id: "userAddRemoveListsModal"
- tapOn:
id: "user-bob.test-addBtn"
- tapOn:
id: "doneBtn"
- assertNotVisible:
id: "userAddRemoveListsModal"
- tapOn:
label: "Adds and removes users on curatelists from the profile"
id: "bottomBarSearchBtn"
- tapOn: "Search for posts, users, or feeds"
- inputText: "bob"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
- assertVisible:
id: "profileView"
- tapOn:
id: "profileHeaderDropdownBtn"
- tapOn: "Add to Lists"
- assertVisible:
id: "userAddRemoveListsModal"
- tapOn:
id: "user-bob.test-addBtn"
- tapOn:
id: "doneBtn"
- assertNotVisible:
id: "userAddRemoveListsModal"
- tapOn:
id: "profileHeaderDropdownBtn"
- tapOn: "Add to Lists"
- assertVisible:
id: "userAddRemoveListsModal"
- tapOn:
id: "user-bob.test-addBtn"
- tapOn:
id: "doneBtn"
- assertNotVisible:
id: "userAddRemoveListsModal"
+88
View File
@@ -0,0 +1,88 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Pin alice's feed
- extendedWaitUntil:
visible: "Open drawer menu"
- tapOn: "Open drawer menu"
- tapOn:
id: "profileCardButton"
- tapOn:
id: "profilePager-selector-5"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
id: "bottomBarHomeBtn"
- assertNotVisible: "Feeds ✨"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "Following"
- assertVisible:
id: "homeScreenFeedTabs-selector-1"
text: "alice-favs"
# Set alice-favs first
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on down arrow"
id: "feed-timeline-moveDown"
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
- assertVisible:
id: "homeScreenFeedTabs-selector-1"
text: "Following"
# Set following first
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on down arrow"
id: "feed-feed-moveDown"
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "Following"
- assertVisible:
id: "homeScreenFeedTabs-selector-1"
text: "alice-favs"
# Remove following
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on unpin"
id: "feed-timeline-togglePin"
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
- assertNotVisible: "Following"
+55
View File
@@ -0,0 +1,55 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- extendedWaitUntil:
visible:
text: "Feeds ✨"
- tapOn:
label: "Can go to feeds page using feeds button in tab bar"
text: "Feeds ✨"
- assertVisible: "Discover New Feeds"
- tapOn:
label: "Feeds button disappears after pinning a feed"
id: "bottomBarProfileBtn"
- tapOn:
id: "profilePager-selector-5"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
id: "bottomBarHomeBtn"
- tapOn:
id: "bottomBarHomeBtn"
- tapOn:
id: "bottomBarHomeBtn"
- assertNotVisible: "Feeds ✨"
- tapOn:
label: "Can like posts"
id: "likeBtn"
- tapOn:
id: "likeBtn"
- tapOn:
label: "Can repost posts"
id: "repostBtn"
- tapOn: "Repost"
- tapOn:
id: "repostBtn"
- tapOn: "Remove repost"
- tapOn:
label: "Can delete posts"
id: "postDropdownBtn"
childOf:
id: "feedItem-by-alice.test"
- tapOn: "Delete post"
- tapOn: "Delete"
+26
View File
@@ -0,0 +1,26 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eOpenLoggedOutView"
- tapOn: "Sign in"
- tapOn:
id: "selectServiceButton"
- tapOn: "Custom"
- tapOn:
id: "customServerTextInput"
- inputText: "http://localhost:3000"
- tapOn: "Done"
- tapOn:
id: "loginUsernameInput"
- inputText: "Alice"
- tapOn:
id: "loginPasswordInput"
- inputText: "hunter2"
- pressKey: Enter
- assertVisible: "Following"
+47
View File
@@ -0,0 +1,47 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&follows&labels"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# create a modlist
- tapOn:
id: "e2eGotoModeration"
- tapOn:
id: "moderationlistsBtn"
- tapOn: "New list"
- tapOn:
id: "editNameInput"
- inputText: "Muted Users"
- tapOn:
id: "editDescriptionInput"
- inputText: "Shhh"
- tapOn: "Save"
- tapOn: "Save"
# view modlist
- assertVisible: "Muted Users"
- assertVisible: "Shhh"
- tapOn:
label: "Dropdown"
point: "71%,9%"
- tapOn: "Mute accounts"
- tapOn: "Mute list"
- tapOn: "Unmute"
- tapOn:
label: "Dropdown"
point: "71%,9%"
- tapOn: "Block accounts"
- tapOn: "Block list"
- tapOn: "Unblock"
# the rest of the behaviors are tested in curate-lists.yml
@@ -0,0 +1,32 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "e2eStartOnboarding"
- tapOn: "Open avatar creator"
- tapOn: "Select the zap emoji as your avatar"
- tapOn:
label: "Tap on yellow"
point: "23%,79%"
- tapOn: "Done"
- waitForAnimationToEnd
- tapOn: "Select an avatar"
- tapOn: "Select the atom emoji as your avatar"
- tapOn: "Done"
- waitForAnimationToEnd
- tapOn: "Continue to next step"
- assertVisible: "What are your interests?"
- tapOn:
label: "Tap on continue"
point: "50%,92%"
- assertVisible: "You're ready to go!"
- tapOn:
label: "Tap on Lets go"
point: "50%,92%"
+28
View File
@@ -0,0 +1,28 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "e2eStartOnboarding"
- tapOn: "Select an avatar"
- waitForAnimationToEnd
- tapOn:
point: "50%,22%"
- waitForAnimationToEnd
- tapOn: "Choose"
- waitForAnimationToEnd
- tapOn: "Continue to next step"
- assertVisible: "What are your interests?"
- tapOn:
label: "Tap on continue"
point: "50%,92%"
- assertVisible: "You're ready to go!"
- tapOn:
label: "Tap on Lets go"
point: "50%,92%"
+20
View File
@@ -0,0 +1,20 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&follows&posts"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "postDropdownBtn"
index: 0
- tapOn:
id: "postDropdownReportBtn"
- tapOn: "Create report for Misleading Post"
- tapOn: "Send report to Dev-env Moderation"
- tapOn:
point: "50%,90%"
+112
View File
@@ -0,0 +1,112 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&posts&feeds"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Navigate to my profile
- extendedWaitUntil:
visible:
id: "bottomBarSearchBtn"
- tapOn:
id: "bottomBarProfileBtn"
# Open and close edit profile modal
- tapOn:
id: "profileHeaderEditProfileButton"
- assertVisible:
id: "editProfileModal"
- tapOn:
id: "editProfileCancelBtn"
- assertNotVisible:
id: "editProfileModal"
# Edit display name and description via the edit profile modal
- tapOn:
id: "profileHeaderEditProfileButton"
- assertVisible:
id: "editProfileModal"
- tapOn:
id: "editProfileDisplayNameInput"
- eraseText
- inputText: "Alicia"
- tapOn:
id: "editProfileDescriptionInput"
- eraseText
- inputText: "One cool hacker"
- tapOn: "Description"
- tapOn:
id: "editProfileSaveBtn"
- assertNotVisible:
id: "editProfileModal"
- assertVisible: "Alicia"
- assertVisible: "One cool hacker"
# Remove display name and description via the edit profile modal
- tapOn:
id: "profileHeaderEditProfileButton"
- assertVisible:
id: "editProfileModal"
- tapOn:
id: "editProfileDisplayNameInput"
- eraseText
- tapOn:
id: "editProfileDescriptionInput"
- eraseText
- tapOn: "Description"
- tapOn:
id: "editProfileSaveBtn"
- assertNotVisible:
id: "editProfileModal"
- assertVisible: "alice.test"
- assertNotVisible: "One cool hacker"
# Set avi and banner via the edit profile modal
- assertVisible:
id: "userBannerFallback"
- tapOn:
id: "profileHeaderEditProfileButton"
- assertVisible:
id: "editProfileModal"
- tapOn:
id: "changeBannerBtn"
- tapOn: "Upload from Library"
- waitForAnimationToEnd
- tapOn: "Choose"
- waitForAnimationToEnd
- tapOn:
id: "changeAvatarBtn"
- tapOn: "Upload from Library"
- waitForAnimationToEnd
- tapOn: "Choose"
- waitForAnimationToEnd
- tapOn:
id: "editProfileSaveBtn"
- assertNotVisible:
id: "editProfileModal"
- assertVisible:
id: "userBannerImage"
# # Remove avi and banner via the edit profile modal
- tapOn:
id: "profileHeaderEditProfileButton"
- assertVisible:
id: "editProfileModal"
- tapOn:
id: "changeBannerBtn"
- tapOn: "Remove Banner"
- tapOn:
id: "changeAvatarBtn"
- tapOn: "Remove Avatar"
- tapOn:
id: "editProfileSaveBtn"
- assertNotVisible:
id: "editProfileModal"
- assertVisible:
id: "userBannerFallback"
+39
View File
@@ -0,0 +1,39 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&posts&feeds"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Navigate to another user profile
- extendedWaitUntil:
visible:
id: "bottomBarSearchBtn"
- tapOn:
id: "bottomBarSearchBtn"
- tapOn: "Search for posts, users, or feeds"
- inputText: "b"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
- assertVisible:
id: "profileView"
# Can follow/unfollow another user
- tapOn:
id: "followBtn"
- tapOn:
id: "unfollowBtn"
# Can mute/unmute another user
- tapOn:
id: "profileHeaderDropdownBtn"
- tapOn: "Mute Account"
- assertVisible: "Account Muted"
- tapOn:
id: "profileHeaderDropdownBtn"
- tapOn: "Unmute Account"
- assertNotVisible: "Account Muted"
@@ -0,0 +1,24 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn: "Carla's avatar"
- tapOn:
id: "profileHeaderDropdownBtn"
- tapOn:
id: "profileHeaderDropdownReportBtn"
- tapOn:
id: "report:option:com.atproto.moderation.defs#reasonSpam"
- assertVisible:
id: "report:labeler:mod-authority.test"
- tapOn:
id: "report:submit"
- assertNotVisible:
id: "report:dialog"
@@ -0,0 +1,24 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "postDropdownBtn"
index: 0
- tapOn:
id: "postDropdownReportBtn"
- tapOn:
id: "report:option:com.atproto.moderation.defs#reasonSpam"
- assertVisible:
id: "report:labeler:mod-authority.test"
- tapOn:
id: "report:submit"
- assertNotVisible:
id: "report:dialog"
@@ -0,0 +1,35 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "postDropdownBtn"
index: 0
- tapOn:
id: "postDropdownReportBtn"
- tapOn:
id: "report:option:com.atproto.moderation.defs#reasonOther"
- assertVisible:
id: "report:labeler:mod-authority.test"
# reason "other" defaults with details open
- assertVisible:
id: "report:details"
- tapOn:
id: "report:clearOption"
- assertNotVisible:
id: "report:details"
- tapOn:
id: "report:option:com.atproto.moderation.defs#reasonSpam"
- assertVisible:
id: "report:labeler:mod-authority.test"
- tapOn:
id: "report:submit"
- assertNotVisible:
id: "report:dialog"
@@ -0,0 +1,30 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../../setupServer.js
env:
SERVER_PATH: ?users&follows&posts&feeds
- runFlow:
file: ../../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "postDropdownBtn"
index: 0
- tapOn:
id: "postDropdownReportBtn"
- tapOn:
id: "report:option:com.atproto.moderation.defs#reasonOther"
- assertVisible:
id: "report:labeler:mod-authority.test"
# reason "other" defaults with details open
- assertVisible:
id: "report:details"
- tapOn:
id: "report:details"
- inputText: "This is a test report"
- tapOn:
id: "report:submit"
- assertNotVisible:
id: "report:dialog"
+22
View File
@@ -0,0 +1,22 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Navigate to another user profile via autocomplete
- tapOn:
id: "bottomBarSearchBtn"
- assertVisible: "Search for posts, users, or feeds"
- tapOn: "Search for posts, users, or feeds"
- inputText: "b"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
- assertVisible:
id: "profileView"
+34
View File
@@ -0,0 +1,34 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&posts&feeds"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- assertVisible:
id: "storybookBtn"
- tapOn:
id: "storybookBtn"
- tapOn:
id: "sharedPrefsTestOpenBtn"
- tapOn:
id: "setStringBtn"
- assertVisible: "Hello"
- tapOn:
id: "removeStringBtn"
- assertVisible: "undefined"
- tapOn:
id: "setBoolBtn"
- assertVisible: "true"
- tapOn:
id: "setNumberBtn"
- assertVisible: "123"
- tapOn:
id: "addToSetBtn"
- assertVisible: "true"
- tapOn:
id: "removeFromSetBtn"
- assertVisible: "false"
+83
View File
@@ -0,0 +1,83 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&follows"
- runFlow:
file: ../setupApp.yml
# Login, create a thread, and log out
- tapOn:
id: "e2eSignInAlice"
- assertVisible:
id: "composeFAB"
- tapOn:
id: "composeFAB"
- inputText: "Test thread"
- tapOn:
id: "composerPublishBtn"
# Login, reply to the thread, and log out
- tapOn:
id: "e2eSignInBob"
- tapOn:
id: "replyBtn"
- inputText: "Reply 1"
- tapOn:
id: "composerPublishBtn"
# Login, confirm notification exists, mute thread, and log out
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "bottomBarNotificationsBtn"
- assertVisible:
id: "feedItem-by-bob.test"
- tapOn:
id: "feedItem-by-bob.test"
- tapOn:
id: "postDropdownBtn"
childOf:
id: "postThreadItem-by-bob.test"
- tapOn: "Mute thread"
# Login, reply to the thread twice, and log out
- tapOn:
id: "e2eSignInBob"
- tapOn:
id: "bottomBarProfileBtn"
- tapOn:
id: "profilePager-selector-1"
- tapOn:
id: "replyBtn"
- inputText: "Reply 2"
- tapOn:
id: "composerPublishBtn"
- tapOn:
id: "replyBtn"
- inputText: "Reply 3"
- tapOn:
id: "composerPublishBtn"
# Login, confirm notifications dont exist, unmute the thread, confirm notifications exist
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "bottomBarNotificationsBtn"
- assertNotVisible:
id: "feedItem-by-bob.test"
- tapOn:
id: "bottomBarHomeBtn"
- tapOn:
id: "postDropdownBtn"
- tapOn: "Unmute thread"
- tapOn:
id: "bottomBarNotificationsBtn"
- swipe:
from:
id: "notifsFeed"
direction: DOWN
- assertVisible:
id: "feedItem-by-bob.test"
+76
View File
@@ -0,0 +1,76 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&follows&thread"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
# Navigate to thread
- extendedWaitUntil:
visible: "Thread root"
- tapOn: "Thread root"
- assertVisible: "Thread reply"
# Can like the root post
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-bob.test"
- assertVisible: "1 like"
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-bob.test"
- assertNotVisible: "1 like"
# Can like a reply post
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-carla.test"
# Can repost the root post
- tapOn:
id: "repostBtn"
childOf:
id: "postThreadItem-by-bob.test"
- tapOn: "Repost"
- assertVisible:
id: "repostCount-expanded"
- tapOn:
id: "repostBtn"
childOf:
id: "postThreadItem-by-bob.test"
- tapOn: "Remove repost"
- assertNotVisible:
id: "repostCount-expanded"
# Can repost a reply post
- tapOn:
id: "repostBtn"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn: "Repost"
- assertVisible:
id: "repostCount"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn:
id: "repostBtn"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn: "Remove repost"
- assertNotVisible:
id: "repostCount"
childOf:
id: "postThreadItem-by-carla.test"
-12
View File
@@ -1,12 +0,0 @@
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
rootDir: '..',
testMatch: ['<rootDir>/__e2e__/**/*.test.ts'],
testTimeout: 120000,
maxWorkers: 1,
globalSetup: 'detox/runners/jest/globalSetup',
globalTeardown: 'detox/runners/jest/globalTeardown',
reporters: ['detox/runners/jest/reporter'],
testEnvironment: 'detox/runners/jest/testEnvironment',
verbose: true,
}
+2 -2
View File
@@ -1,5 +1,6 @@
import {createServer as createHTTPServer} from 'node:http'
import {parse} from 'node:url'
import {createServer, TestPDS} from '../jest/test-pds'
async function main() {
@@ -14,8 +15,7 @@ async function main() {
await server?.close()
console.log('Starting new server')
const inviteRequired = url?.query && 'invite' in url.query
const phoneRequired = url?.query && 'phone' in url.query
server = await createServer({inviteRequired, phoneRequired})
server = await createServer({inviteRequired})
console.log('Listening at', server.pdsUrl)
if (url?.query) {
if ('users' in url.query) {
@@ -1,3 +1,4 @@
# flow.yaml
appId: xyz.blueskyweb.app
@@ -74,4 +75,3 @@ appId: xyz.blueskyweb.app
- "scroll"
- "scroll"
- "scroll"
+13
View File
@@ -0,0 +1,13 @@
appId: xyz.blueskyweb.app
---
- launchApp:
appId: "xyz.blueskyweb.app"
clearState: true
- waitForAnimationToEnd
- tapOn: "http://localhost:8081"
- waitForAnimationToEnd
- extendedWaitUntil:
visible: "Continue"
- swipe:
from: "Bluesky"
direction: DOWN
+5
View File
@@ -0,0 +1,5 @@
// eslint-disable-next-line
http.post('http://localhost:1986/' + SERVER_PATH, {
headers: {'Content-Type': 'text/plain'},
body: '',
})
-111
View File
@@ -1,111 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer, sleep} from '../util'
describe('Composer', () => {
beforeAll(async () => {
await createServer('?users')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
})
it('Post text only', async () => {
await element(by.id('composeFAB')).tap()
await device.takeScreenshot('1- opened composer')
await element(by.id('composerTextInput')).typeText('Post text only')
await device.takeScreenshot('2- entered text')
await element(by.id('composerPublishBtn')).tap()
await device.takeScreenshot('3- opened general section')
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Post with an image', async () => {
await element(by.id('composeFAB')).tap()
await element(by.id('composerTextInput')).typeText('Post with an image')
await element(by.id('openGalleryBtn')).tap()
await sleep(1e3)
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Post with a link card', async () => {
await element(by.id('composeFAB')).tap()
await element(by.id('composerTextInput')).typeText(
'Post with a https://example.com link card',
)
await element(by.id('addLinkCardBtn')).tap()
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Reply text only', async () => {
await element(by.id('e2eRefreshHome')).tap()
const post = by.id('feedItem-by-alice.test')
await element(by.id('replyBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText('Reply text only')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Reply with an image', async () => {
const post = by.id('feedItem-by-alice.test')
await element(by.id('replyBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText('Reply with an image')
await element(by.id('openGalleryBtn')).tap()
await sleep(1e3)
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Reply with a link card', async () => {
const post = by.id('feedItem-by-alice.test')
await element(by.id('replyBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText(
'Reply with a https://example.com link card',
)
await element(by.id('addLinkCardBtn')).tap()
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('QP text only', async () => {
const post = by.id('feedItem-by-alice.test')
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('quoteBtn').withAncestor(by.id('repostModal'))).tap()
await element(by.id('composerTextInput')).typeText('QP text only')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('QP with an image', async () => {
const post = by.id('feedItem-by-alice.test')
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('quoteBtn').withAncestor(by.id('repostModal'))).tap()
await element(by.id('composerTextInput')).typeText('QP with an image')
await element(by.id('openGalleryBtn')).tap()
await sleep(1e3)
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('QP with a link card', async () => {
const post = by.id('feedItem-by-alice.test')
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await element(by.id('quoteBtn').withAncestor(by.id('repostModal'))).tap()
await element(by.id('composerTextInput')).typeText(
'QP with a https://example.com link card',
)
await element(by.id('addLinkCardBtn')).tap()
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
})
-39
View File
@@ -1,39 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, createServer} from '../util'
describe('Create account', () => {
let service: string
beforeAll(async () => {
service = await createServer('')
await openApp({permissions: {notifications: 'YES'}})
})
it('I can create a new account', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await element(by.id('createAccountButton')).tap()
await device.takeScreenshot('1- opened create account screen')
await element(by.id('selectServiceButton')).tap()
await device.takeScreenshot('2- selected other server')
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
await device.takeScreenshot('3- input test server URL')
await element(by.id('emailInput')).typeText('example@test.com')
await element(by.id('passwordInput')).typeText('hunter2')
await device.takeScreenshot('4- entered account details')
await element(by.id('nextBtn')).tap()
await element(by.id('handleInput')).typeText('e2e-test')
await device.takeScreenshot('5- entered handle')
await element(by.id('nextBtn')).tap()
await expect(element(by.id('onboardingInterests'))).toBeVisible()
})
})
-211
View File
@@ -1,211 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, loginAsBob, createServer, sleep} from '../util'
describe('Curate lists', () => {
beforeAll(async () => {
await createServer('?users&follows&posts')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login and create a curatelists', async () => {
await loginAsAlice()
await element(by.id('e2eGotoLists')).tap()
await element(by.id('newUserListBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editNameInput')).typeText('Good Ppl')
await element(by.id('editDescriptionInput')).typeText('They good')
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await element(by.text('About')).tap()
await expect(element(by.id('headerTitle'))).toHaveText('Good Ppl')
await expect(element(by.id('listDescription'))).toHaveText('They good')
})
it('Edit display name and description via the edit curatelist modal', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editNameInput')).clearText()
await element(by.id('editNameInput')).typeText('Bad Ppl')
await element(by.id('editDescriptionInput')).clearText()
await element(by.id('editDescriptionInput')).typeText('They bad')
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('headerTitle'))).toHaveText('Bad Ppl')
await expect(element(by.id('listDescription'))).toHaveText('They bad')
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Remove description via the edit curatelist modal', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editDescriptionInput')).clearText()
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('listDescription'))).not.toBeVisible()
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Set avi via the edit curatelist modal', async () => {
await expect(element(by.id('userAvatarFallback'))).toExist()
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('changeAvatarBtn')).tap()
await element(by.text('Library')).tap()
await sleep(3e3)
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('userAvatarImage'))).toExist()
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Remove avi via the edit curatelist modal', async () => {
await expect(element(by.id('userAvatarImage'))).toExist()
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('changeAvatarBtn')).tap()
await element(by.text('Remove')).tap()
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('userAvatarFallback'))).toExist()
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Delete the curatelist', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Delete List')).tap()
await element(by.id('confirmBtn')).tap()
await expect(element(by.id('listsEmpty'))).toBeVisible()
})
it('Create a new curatelist', async () => {
await element(by.id('e2eGotoLists')).tap()
await element(by.id('newUserListBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editNameInput')).typeText('Good Ppl')
await element(by.id('editDescriptionInput')).typeText('They good')
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await element(by.text('About')).tap()
await expect(element(by.id('headerTitle'))).toHaveText('Good Ppl')
await expect(element(by.id('listDescription'))).toHaveText('They good')
})
it('Adds users on curatelists from the list', async () => {
await element(by.text('About')).tap()
await element(by.id('addUserBtn')).tap()
await expect(element(by.id('listAddUserModal'))).toBeVisible()
await waitFor(element(by.id('user-bob.test-addBtn')))
.toBeVisible()
.withTimeout(5000)
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('listAddUserModal'))).not.toBeVisible()
await expect(element(by.id('user-bob.test'))).toBeVisible()
})
it('Shows posts by the users in the list', async () => {
await element(by.text('Posts')).tap()
await expect(element(by.id('feedItem-by-bob.test'))).toBeVisible()
})
it('Pins the list', async () => {
await expect(element(by.id('pinBtn'))).toBeVisible()
await element(by.id('pinBtn')).tap()
await element(by.id('e2eGotoHome')).tap()
await element(by.id('homeScreenFeedTabs-Good Ppl')).tap()
await expect(element(by.id('feedItem-by-bob.test'))).toBeVisible()
await element(by.id('bottomBarFeedsBtn')).tap()
await element(by.id('saved-feed-Good Ppl')).tap()
await expect(element(by.id('feedItem-by-bob.test'))).toBeVisible()
await element(by.id('unpinBtn')).tap()
await element(by.id('bottomBarHomeBtn')).tap()
await expect(
element(by.id('homeScreenFeedTabs-Good Ppl')),
).not.toBeVisible()
await element(by.id('e2eGotoLists')).tap()
await element(by.id('list-Good Ppl')).tap()
})
it('Removes users on curatelists from the list', async () => {
await element(by.text('About')).tap()
await expect(element(by.id('user-bob.test'))).toBeVisible()
await element(by.id('user-bob.test-editBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
})
it('Shows the curatelist on my profile', async () => {
await element(by.id('bottomBarProfileBtn')).tap()
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-5')).tap()
await element(by.id('list-Good Ppl')).tap()
})
it('Adds and removes users on curatelists from the profile', async () => {
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('bob')
await element(by.id('searchAutoCompleteResult-bob.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Add to Lists')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Add to Lists')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
})
it('Can report a user list', async () => {
await element(by.id('e2eGotoSettings')).tap()
await element(by.id('signOutBtn')).tap()
await loginAsBob()
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('alice')
await element(by.id('searchAutoCompleteResult-alice.test')).tap()
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-3')).tap()
await element(by.id('list-Good Ppl')).tap()
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Report List')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await expect(element(by.text('Report List'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonRude'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
})
-112
View File
@@ -1,112 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('Home screen', () => {
beforeAll(async () => {
await createServer('?users&follows&posts&feeds')
await openApp({permissions: {notifications: 'YES'}})
})
it('Login', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
})
it('Can go to feeds page using feeds button in tab bar', async () => {
await element(by.id('homeScreenFeedTabs-Feeds ✨')).tap()
await expect(element(by.text('Discover new feeds'))).toBeVisible()
})
it('Feeds button disappears after pinning a feed', async () => {
await element(by.id('bottomBarProfileBtn')).tap()
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-4')).tap()
await element(by.id('feed-alice-favs')).tap()
await element(by.id('pinBtn')).tap()
await element(by.id('bottomBarHomeBtn')).tap()
await expect(
element(by.id('homeScreenFeedTabs-Feeds ✨')),
).not.toBeVisible()
})
it('Can like posts', async () => {
const carlaPosts = by.id('feedItem-by-carla.test')
await expect(
element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
).not.toExist()
await element(by.id('likeBtn').withAncestor(carlaPosts)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
).toHaveText('1')
await element(by.id('likeBtn').withAncestor(carlaPosts)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
).not.toExist()
})
it('Can repost posts', async () => {
const carlaPosts = by.id('feedItem-by-carla.test')
await expect(
element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
).not.toExist()
await element(by.id('repostBtn').withAncestor(carlaPosts)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
).toHaveText('1')
await element(by.id('repostBtn').withAncestor(carlaPosts)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
).not.toExist()
})
it('Can report posts', async () => {
const carlaPosts = by.id('feedItem-by-carla.test')
await element(by.id('postDropdownBtn').withAncestor(carlaPosts))
.atIndex(0)
.tap()
await element(by.text('Report post')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonSpam'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
it('Can swipe between feeds', async () => {
await element(by.id('homeScreen')).swipe('left', 'fast', 0.75)
await expect(element(by.id('customFeedPage'))).toBeVisible()
await element(by.id('homeScreen')).swipe('right', 'fast', 0.75)
await expect(element(by.id('followingFeedPage'))).toBeVisible()
})
it('Can tap between feeds', async () => {
await element(by.id('homeScreenFeedTabs-alice-favs')).tap()
await expect(element(by.id('customFeedPage'))).toBeVisible()
await element(by.id('homeScreenFeedTabs-Following')).tap()
await expect(element(by.id('followingFeedPage'))).toBeVisible()
})
it('Can delete posts', async () => {
const alicePosts = by.id('feedItem-by-alice.test')
await expect(element(alicePosts.withDescendant(by.text('Post')))).toExist()
await element(by.id('postDropdownBtn').withAncestor(alicePosts))
.atIndex(0)
.tap()
await element(by.text('Delete post')).tap()
await expect(element(by.id('confirmModal'))).toBeVisible()
await element(by.id('confirmBtn')).tap()
await expect(
element(alicePosts.withDescendant(by.text('Post'))),
).not.toExist()
})
})
-46
View File
@@ -1,46 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('invite-codes', () => {
let service: string
let inviteCode = ''
beforeAll(async () => {
service = await createServer('?users&invite')
await openApp({permissions: {notifications: 'YES'}})
})
it('I can fetch invite codes', async () => {
await loginAsAlice()
await element(by.id('e2eOpenInviteCodesModal')).tap()
await expect(element(by.id('inviteCodesModal'))).toBeVisible()
const attrs = await element(by.id('inviteCode-0-code')).getAttributes()
inviteCode = attrs.text
await element(by.id('closeBtn')).tap()
await element(by.id('e2eSignOut')).tap()
})
it('I can create a new account with the invite code', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await element(by.id('createAccountButton')).tap()
await device.takeScreenshot('1- opened create account screen')
await element(by.id('selectServiceButton')).tap()
await device.takeScreenshot('2- selected other server')
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
await device.takeScreenshot('3- input test server URL')
await element(by.id('inviteCodeInput')).typeText(inviteCode)
await element(by.id('emailInput')).typeText('example@test.com')
await element(by.id('passwordInput')).typeText('hunter2')
await device.takeScreenshot('4- entered account details')
await element(by.id('nextBtn')).tap()
await element(by.id('handleInput')).typeText('e2e-test')
await device.takeScreenshot('4- entered handle')
await element(by.id('nextBtn')).tap()
await expect(element(by.id('onboardingInterests'))).toBeVisible()
})
})
@@ -1,52 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('invite-codes', () => {
let service: string
let inviteCode = ''
beforeAll(async () => {
service = await createServer('?users&invite&phone')
await openApp({permissions: {notifications: 'YES'}})
})
it('I can fetch invite codes', async () => {
await loginAsAlice()
await element(by.id('e2eOpenInviteCodesModal')).tap()
await expect(element(by.id('inviteCodesModal'))).toBeVisible()
const attrs = await element(by.id('inviteCode-0-code')).getAttributes()
inviteCode = attrs.text
await element(by.id('closeBtn')).tap()
await element(by.id('e2eSignOut')).tap()
})
it('I can create a new account with the invite code', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await element(by.id('createAccountButton')).tap()
await device.takeScreenshot('1- opened create account screen')
await element(by.id('selectServiceButton')).tap()
await device.takeScreenshot('2- selected other server')
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
await device.takeScreenshot('3- input test server URL')
await element(by.id('inviteCodeInput')).typeText(inviteCode)
await element(by.id('emailInput')).typeText('example@test.com')
await element(by.id('passwordInput')).typeText('hunter2')
await device.takeScreenshot('4- entered account details')
await element(by.id('nextBtn')).tap()
await element(by.id('phoneInput')).typeText('2345551234')
await element(by.id('requestCodeBtn')).tap()
await device.takeScreenshot('5- requested code')
await element(by.id('codeInput')).typeText('000000')
await device.takeScreenshot('6- entered code')
await element(by.id('nextBtn')).tap()
await element(by.id('handleInput')).typeText('e2e-test')
await device.takeScreenshot('7- entered handle')
await element(by.id('nextBtn')).tap()
await expect(element(by.id('onboardingInterests'))).toBeVisible()
})
})
-23
View File
@@ -1,23 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, login, createServer} from '../util'
describe('Login', () => {
let service: string
beforeAll(async () => {
service = await createServer('?users')
await openApp({permissions: {notifications: 'YES'}})
})
it('As Alice, I can login', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await expect(element(by.id('signInButton'))).toBeVisible()
await login(service, 'alice', 'hunter2', {
takeScreenshots: true,
})
await device.takeScreenshot('5- opened home screen')
})
})
-163
View File
@@ -1,163 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('Mergefeed', () => {
beforeAll(async () => {
await createServer('?mergefeed')
await openApp({permissions: {notifications: 'YES'}})
})
it('Login', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await loginAsAlice()
await element(by.id('e2eToggleMergefeed')).tap()
await element(by.id('bottomBarFeedsBtn')).tap()
await element(by.id('feed-alice-favs-toggleSave')).tap()
await element(by.id('e2eGotoHome')).tap()
})
it('Sees the expected mix of posts with default filters', async () => {
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
// followed users
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-carla.test')),
).atIndex(0),
).toHaveText('Post 9')
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-bob.test')),
).atIndex(0),
).toHaveText('Post 9')
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'up',
'fast',
1,
0.5,
0.5,
)
// feed users
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-dan.test')),
).atIndex(0),
).toHaveText('Post 0')
})
it('Sees the expected mix of posts with replies disabled', async () => {
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'fast',
1,
0.5,
0.5,
)
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'fast',
1,
0.5,
0.5,
)
await element(by.id('viewHeaderHomeFeedPrefsBtn')).tap()
await element(by.id('toggleRepliesBtn')).tap()
await element(by.id('confirmBtn')).tap()
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
// followed users
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-carla.test')),
).atIndex(0),
).toHaveText('Post 9')
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-bob.test')),
).atIndex(0),
).toHaveText('Post 9')
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'up',
'fast',
1,
0.5,
0.5,
)
// feed users
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-dan.test')),
).atIndex(0),
).toHaveText('Post 0')
})
it('Sees the expected mix of posts with no follows', async () => {
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'fast',
1,
0.5,
0.5,
)
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('bob')
await element(by.id('searchAutoCompleteResult-bob.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
await element(by.id('unfollowBtn')).tap()
await element(by.id('profileHeaderBackBtn')).tap()
// have to wait for the toast to clear
await waitFor(element(by.id('searchTextInputClearBtn')))
.toBeVisible()
.withTimeout(5000)
await element(by.id('searchTextInputClearBtn')).tap()
await element(by.id('searchTextInput')).typeText('carla')
await element(by.id('searchAutoCompleteResult-carla.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
await element(by.id('unfollowBtn')).tap()
await element(by.id('profileHeaderBackBtn')).tap()
await element(by.id('bottomBarHomeBtn')).tap()
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
await element(by.id('followingFeedPage-feed-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
// followed users NOT present
await expect(element(by.id('feedItem-by-carla.test'))).not.toExist()
await expect(element(by.id('feedItem-by-bob.test'))).not.toExist()
// feed users
await expect(
element(
by.id('postText').withAncestor(by.id('feedItem-by-dan.test')),
).atIndex(0),
).toHaveText('Post 0')
})
})
-189
View File
@@ -1,189 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, loginAsBob, createServer} from '../util'
describe('Mod lists', () => {
beforeAll(async () => {
await createServer('?users&follows&labels')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login and view my modlists', async () => {
await loginAsAlice()
await element(by.id('e2eGotoModeration')).tap()
await element(by.id('moderationlistsBtn')).tap()
await expect(element(by.id('list-Muted Users'))).toBeVisible()
await element(by.id('list-Muted Users')).tap()
await expect(
element(by.id('user-muted-by-list-account.test')),
).toBeVisible()
})
it('Toggle mute subscription', async () => {
await element(by.id('unmuteBtn')).tap()
await element(by.id('subscribeBtn')).tap()
await element(by.text('Mute accounts')).tap()
await element(by.id('confirmBtn')).tap()
})
it('Edit display name and description via the edit modlist modal', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editNameInput')).clearText()
await element(by.id('editNameInput')).typeText('Bad Ppl')
await element(by.id('editDescriptionInput')).clearText()
await element(by.id('editDescriptionInput')).typeText('They bad')
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('headerTitle'))).toHaveText('Bad Ppl')
await expect(element(by.id('listDescription'))).toHaveText('They bad')
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Remove description via the edit modlist modal', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Edit list details')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editDescriptionInput')).clearText()
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('listDescription'))).not.toBeVisible()
// have to wait for the toast to clear
await waitFor(element(by.id('headerDropdownBtn')))
.toBeVisible()
.withTimeout(5000)
})
// DISABLED e2e environment is real finicky about avatar uploads -prf
// it('Set avi via the edit modlist modal', async () => {
// await expect(element(by.id('userAvatarFallback'))).toExist()
// await element(by.id('headerDropdownBtn')).tap()
// await element(by.text('Edit list details')).tap()
// await expect(element(by.id('createOrEditListModal'))).toBeVisible()
// await element(by.id('changeAvatarBtn')).tap()
// await element(by.text('Library')).tap()
// await sleep(3e3)
// await element(by.id('saveBtn')).tap()
// await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
// await expect(element(by.id('userAvatarImage'))).toExist()
// // have to wait for the toast to clear
// await waitFor(element(by.id('headerDropdownBtn')))
// .toBeVisible()
// .withTimeout(5000)
// })
// it('Remove avi via the edit modlist modal', async () => {
// await expect(element(by.id('userAvatarImage'))).toExist()
// await element(by.id('headerDropdownBtn')).tap()
// await element(by.text('Edit list details')).tap()
// await expect(element(by.id('createOrEditListModal'))).toBeVisible()
// await element(by.id('changeAvatarBtn')).tap()
// await element(by.text('Remove')).tap()
// await element(by.id('saveBtn')).tap()
// await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
// await expect(element(by.id('userAvatarFallback'))).toExist()
// // have to wait for the toast to clear
// await waitFor(element(by.id('headerDropdownBtn')))
// .toBeVisible()
// .withTimeout(5000)
// })
it('Delete the modlist', async () => {
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Delete List')).tap()
await element(by.id('confirmBtn')).tap()
await expect(element(by.id('listsEmpty'))).toBeVisible()
})
it('Create a new modlist', async () => {
await element(by.id('newModListBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).toBeVisible()
await element(by.id('editNameInput')).typeText('Bad Ppl')
await element(by.id('editDescriptionInput')).typeText('They bad')
await element(by.id('saveBtn')).tap()
await expect(element(by.id('createOrEditListModal'))).not.toBeVisible()
await expect(element(by.id('headerTitle'))).toHaveText('Bad Ppl')
await expect(element(by.id('listDescription'))).toHaveText('They bad')
})
it('Adds and removes users on modlists from the list', async () => {
await element(by.id('addUserBtn')).tap()
await expect(element(by.id('listAddUserModal'))).toBeVisible()
await waitFor(element(by.id('user-warn-posts.test-addBtn')))
.toBeVisible()
.withTimeout(5000)
await element(by.id('user-warn-posts.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('listAddUserModal'))).not.toBeVisible()
await element(by.id('listItems-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
await expect(element(by.id('user-warn-posts.test'))).toBeVisible()
await element(by.id('user-warn-posts.test-editBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-warn-posts.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
})
it('Shows the modlist on my profile', async () => {
await element(by.id('bottomBarProfileBtn')).tap()
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-5')).tap()
await element(by.id('list-Bad Ppl')).tap()
})
it('Adds and removes users on modlists from the profile', async () => {
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('bob')
await element(by.id('searchAutoCompleteResult-bob.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Add to Lists')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Add to Lists')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).toBeVisible()
await element(by.id('user-bob.test-addBtn')).tap()
await element(by.id('doneBtn')).tap()
await expect(element(by.id('userAddRemoveListsModal'))).not.toBeVisible()
})
it('Can report a mute list', async () => {
await element(by.id('e2eGotoSettings')).tap()
await element(by.id('signOutBtn')).tap()
await loginAsBob()
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('alice')
await element(by.id('searchAutoCompleteResult-alice.test')).tap()
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-3')).tap()
await element(by.id('list-Bad Ppl')).tap()
await element(by.id('headerDropdownBtn')).tap()
await element(by.text('Report List')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await expect(element(by.text('Report List'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonRude'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
})
-193
View File
@@ -1,193 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer, sleep} from '../util'
describe('Profile screen', () => {
beforeAll(async () => {
await createServer('?users&posts&feeds')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login and navigate to my profile', async () => {
await loginAsAlice()
await element(by.id('bottomBarProfileBtn')).tap()
})
it('Can see feeds', async () => {
await element(by.id('profilePager-selector')).swipe('left')
await element(by.id('profilePager-selector-4')).tap()
await expect(element(by.id('feed-alice-favs'))).toBeVisible()
await element(by.id('profilePager-selector')).swipe('right')
await element(by.id('profilePager-selector-0')).tap()
})
it('Open and close edit profile modal', async () => {
await element(by.id('profileHeaderEditProfileButton')).tap()
await expect(element(by.id('editProfileModal'))).toBeVisible()
await element(by.id('editProfileCancelBtn')).tap()
await expect(element(by.id('editProfileModal'))).not.toBeVisible()
})
it('Edit display name and description via the edit profile modal', async () => {
await element(by.id('profileHeaderEditProfileButton')).tap()
await expect(element(by.id('editProfileModal'))).toBeVisible()
await element(by.id('editProfileDisplayNameInput')).clearText()
await element(by.id('editProfileDisplayNameInput')).typeText('Alicia')
await element(by.id('editProfileDescriptionInput')).clearText()
await element(by.id('editProfileDescriptionInput')).typeText(
'One cool hacker',
)
await element(by.id('editProfileSaveBtn')).tap()
await expect(element(by.id('editProfileModal'))).not.toBeVisible()
await expect(element(by.id('profileHeaderDisplayName'))).toHaveText(
'Alicia',
)
await expect(element(by.id('profileHeaderDescription'))).toHaveText(
'One cool hacker',
)
})
it('Remove display name and description via the edit profile modal', async () => {
await element(by.id('profileHeaderEditProfileButton')).tap()
await expect(element(by.id('editProfileModal'))).toBeVisible()
await element(by.id('editProfileDisplayNameInput')).clearText()
await element(by.id('editProfileDescriptionInput')).clearText()
await element(by.id('editProfileSaveBtn')).tap()
await expect(element(by.id('editProfileModal'))).not.toBeVisible()
await expect(element(by.id('profileHeaderDisplayName'))).toHaveText(
'alice.test',
)
await expect(element(by.id('profileHeaderDescription'))).not.toExist()
})
it('Set avi and banner via the edit profile modal', async () => {
await expect(element(by.id('userBannerFallback'))).toExist()
await expect(element(by.id('userAvatarFallback'))).toExist()
await element(by.id('profileHeaderEditProfileButton')).tap()
await expect(element(by.id('editProfileModal'))).toBeVisible()
await element(by.id('changeBannerBtn')).tap()
await element(by.text('Library')).tap()
await sleep(3e3)
await element(by.id('changeAvatarBtn')).tap()
await element(by.text('Library')).tap()
await sleep(3e3)
await element(by.id('editProfileSaveBtn')).tap()
await expect(element(by.id('editProfileModal'))).not.toBeVisible()
await expect(element(by.id('userBannerImage'))).toExist()
await expect(element(by.id('userAvatarImage'))).toExist()
})
it('Remove avi and banner via the edit profile modal', async () => {
await expect(element(by.id('userBannerImage'))).toExist()
await expect(element(by.id('userAvatarImage'))).toExist()
await element(by.id('profileHeaderEditProfileButton')).tap()
await expect(element(by.id('editProfileModal'))).toBeVisible()
await element(by.id('changeBannerBtn')).tap()
await element(by.text('Remove')).tap()
await element(by.id('changeAvatarBtn')).tap()
await element(by.text('Remove')).tap()
await element(by.id('editProfileSaveBtn')).tap()
await expect(element(by.id('editProfileModal'))).not.toBeVisible()
await expect(element(by.id('userBannerFallback'))).toExist()
await expect(element(by.id('userAvatarFallback'))).toExist()
})
it('Navigate to another user profile', async () => {
await element(by.id('bottomBarSearchBtn')).tap()
// have to wait for the toast to clear
await waitFor(element(by.id('searchTextInput')))
.toBeVisible()
.withTimeout(5000)
await element(by.id('searchTextInput')).typeText('bob')
await element(by.id('searchAutoCompleteResult-bob.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
})
it('Can follow/unfollow another user', async () => {
await element(by.id('followBtn')).tap()
await expect(element(by.id('unfollowBtn'))).toBeVisible()
await element(by.id('unfollowBtn')).tap()
await expect(element(by.id('followBtn'))).toBeVisible()
})
it('Can mute/unmute another user', async () => {
await expect(element(by.id('profileHeaderAlert'))).not.toExist()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Mute Account')).tap()
await expect(element(by.id('profileHeaderAlert'))).toBeVisible()
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Unmute Account')).tap()
await expect(element(by.id('profileHeaderAlert'))).not.toExist()
})
it('Can report another user', async () => {
await element(by.id('profileHeaderDropdownBtn')).tap()
await element(by.text('Report Account')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonSpam'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
it('Can like posts', async () => {
await element(by.id('postsFeed-flatlist')).swipe(
'down',
'slow',
1,
0.5,
0.5,
)
const posts = by.id('feedItem-by-bob.test')
await expect(
element(by.id('likeCount').withAncestor(posts)).atIndex(0),
).not.toExist()
await element(by.id('likeBtn').withAncestor(posts)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(posts)).atIndex(0),
).toHaveText('1')
await element(by.id('likeBtn').withAncestor(posts)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(posts)).atIndex(0),
).not.toExist()
})
it('Can repost posts', async () => {
const posts = by.id('feedItem-by-bob.test')
await expect(
element(by.id('repostCount').withAncestor(posts)).atIndex(0),
).not.toExist()
await element(by.id('repostBtn').withAncestor(posts)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(posts)).atIndex(0),
).toHaveText('1')
await element(by.id('repostBtn').withAncestor(posts)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(posts)).atIndex(0),
).not.toExist()
})
it('Can report posts', async () => {
const posts = by.id('feedItem-by-bob.test')
await element(by.id('postDropdownBtn').withAncestor(posts)).atIndex(0).tap()
await element(by.text('Report post')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonSpam'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
})
-25
View File
@@ -1,25 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('Search screen', () => {
beforeAll(async () => {
await createServer('?users')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login', async () => {
await loginAsAlice()
})
it('Navigate to another user profile via autocomplete', async () => {
await element(by.id('bottomBarSearchBtn')).tap()
await element(by.id('searchTextInput')).typeText('bob')
await element(by.id('searchAutoCompleteResult-bob.test')).tap()
await expect(element(by.id('profileView'))).toBeVisible()
})
})
-36
View File
@@ -1,36 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer, sleep} from '../util'
describe('Self-labeling', () => {
beforeAll(async () => {
await createServer('?users')
await openApp({
permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
})
})
it('Login', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
})
it('Post an image with the porn label', async () => {
await element(by.id('composeFAB')).tap()
await element(by.id('composerTextInput')).typeText('Post with an image')
await element(by.id('openGalleryBtn')).tap()
await sleep(3e3)
await element(by.id('labelsBtn')).tap()
await element(by.id('pornLabelBtn')).tap()
await element(by.id('confirmBtn')).tap()
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
const posts = by.id('feedItem-by-alice.test')
await element(by.id('e2eRefreshHome')).tap()
await expect(
element(by.id('contentHider-embed').withAncestor(posts)).atIndex(0),
).toExist()
})
})
-33
View File
@@ -1,33 +0,0 @@
/* eslint-env detox/detox */
import {openApp, loginAsAlice, createServer} from '../util'
describe('Shell', () => {
beforeAll(async () => {
await createServer('?users')
await openApp({permissions: {notifications: 'YES'}})
})
it('Login', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
})
it('Can swipe the shelf open', async () => {
await element(by.id('homeScreen')).swipe('right', 'fast', 0.75)
await expect(element(by.id('drawer'))).toBeVisible()
await element(by.id('drawer')).swipe('left', 'fast', 0.75)
await expect(element(by.id('drawer'))).not.toBeVisible()
})
it('Can open the shelf by pressing the header avi', async () => {
await element(by.id('viewHeaderDrawerBtn')).tap()
await expect(element(by.id('drawer'))).toBeVisible()
})
it('Can navigate using the shelf', async () => {
await element(by.id('menuItemButton-Notifications')).tap()
await expect(element(by.id('drawer'))).not.toBeVisible()
await expect(element(by.id('notificationsScreen'))).toBeVisible()
})
})
-81
View File
@@ -1,81 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, createServer} from '../util'
describe('Create account', () => {
let service: string
beforeAll(async () => {
service = await createServer('?phone')
await openApp({permissions: {notifications: 'YES'}})
})
it('I can create a new account with text verification', async () => {
await element(by.id('e2eOpenLoggedOutView')).tap()
await element(by.id('createAccountButton')).tap()
await device.takeScreenshot('1- opened create account screen')
await element(by.id('selectServiceButton')).tap()
await device.takeScreenshot('2- selected other server')
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
await device.takeScreenshot('3- input test server URL')
await element(by.id('emailInput')).typeText('text-verification@test.com')
await element(by.id('passwordInput')).typeText('hunter2')
await device.takeScreenshot('4- entered account details')
await element(by.id('nextBtn')).tap()
await element(by.id('phoneInput')).typeText('8042221111')
await element(by.id('requestCodeBtn')).tap()
await device.takeScreenshot('5- requested code')
await element(by.id('codeInput')).typeText('000000')
await device.takeScreenshot('6- entered code')
await element(by.id('nextBtn')).tap()
await element(by.id('handleInput')).typeText('text-verification-test')
await device.takeScreenshot('7- entered handle')
await element(by.id('nextBtn')).tap()
await expect(element(by.id('onboardingInterests'))).toBeVisible()
})
it('failed text verification correctly goes back to the code input screen', async () => {
await element(by.id('e2eSignOut')).tap()
await element(by.id('e2eOpenLoggedOutView')).tap()
await element(by.id('createAccountButton')).tap()
await device.takeScreenshot('1- opened create account screen')
await element(by.id('selectServiceButton')).tap()
await device.takeScreenshot('2- selected other server')
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
await device.takeScreenshot('3- input test server URL')
await element(by.id('emailInput')).typeText('text-verification2@test.com')
await element(by.id('passwordInput')).typeText('hunter2')
await device.takeScreenshot('4- entered account details')
await element(by.id('nextBtn')).tap()
await element(by.id('phoneInput')).typeText('8042221111')
await element(by.id('requestCodeBtn')).tap()
await device.takeScreenshot('5- requested code')
await element(by.id('codeInput')).typeText('111111')
await device.takeScreenshot('6- entered code')
await element(by.id('nextBtn')).tap()
await element(by.id('handleInput')).typeText('text-verification-test2')
await device.takeScreenshot('7- entered handle')
await element(by.id('nextBtn')).tap()
await expect(element(by.id('codeInput'))).toBeVisible()
await device.takeScreenshot('8- got error')
})
})
-103
View File
@@ -1,103 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, loginAsBob, createServer} from '../util'
describe('Thread muting', () => {
beforeAll(async () => {
await createServer('?users&follows')
await openApp({permissions: {notifications: 'YES'}})
})
it('Login, create a thread, and log out', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
await element(by.id('composeFAB')).tap()
await element(by.id('composerTextInput')).typeText('Test thread')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Login, reply to the thread, and log out', async () => {
await loginAsBob()
await element(by.id('homeScreenFeedTabs-Following')).tap()
const alicePosts = by.id('feedItem-by-alice.test')
await element(by.id('replyBtn').withAncestor(alicePosts)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText('Reply 1')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
})
it('Login, confirm notification exists, mute thread, and log out', async () => {
await loginAsAlice()
await element(by.id('bottomBarNotificationsBtn')).tap()
const bobNotifs = by.id('feedItem-by-bob.test')
await expect(
element(by.id('postText').withAncestor(bobNotifs)).atIndex(0),
).toHaveText('Reply 1')
await element(by.id('postDropdownBtn').withAncestor(bobNotifs))
.atIndex(0)
.tap()
await element(by.text('Mute thread')).tap()
// have to wait for the toast to clear
await waitFor(element(by.id('viewHeaderDrawerBtn')))
.toBeVisible()
.withTimeout(5000)
})
it('Login, reply to the thread twice, and log out', async () => {
await loginAsBob()
await element(by.id('bottomBarProfileBtn')).tap()
await element(by.id('profilePager-selector-1')).tap()
const bobPosts = by.id('feedItem-by-bob.test')
await element(by.id('replyBtn').withAncestor(bobPosts)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText('Reply 2')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
const alicePosts = by.id('feedItem-by-alice.test')
await element(by.id('replyBtn').withAncestor(alicePosts)).atIndex(0).tap()
await element(by.id('composerTextInput')).typeText('Reply 3')
await element(by.id('composerPublishBtn')).tap()
await expect(element(by.id('composeFAB'))).toBeVisible()
await element(by.id('bottomBarHomeBtn')).tap()
})
it('Login, confirm notifications dont exist, unmute the thread, confirm notifications exist', async () => {
await loginAsAlice()
await element(by.id('bottomBarNotificationsBtn')).tap()
const bobNotifs = by.id('feedItem-by-bob.test')
await expect(
element(by.id('postText').withAncestor(bobNotifs)).atIndex(0),
).not.toExist()
await element(by.id('bottomBarHomeBtn')).tap()
const alicePosts = by.id('feedItem-by-alice.test')
await element(by.id('postDropdownBtn').withAncestor(alicePosts))
.atIndex(0)
.tap()
await element(by.text('Unmute thread')).tap()
// TODO
// the swipe down to trigger PTR isnt working and I dont want to block on this
// -prf
// await element(by.id('bottomBarNotificationsBtn')).tap()
// await element(by.id('notifsFeed')).swipe('down', 'fast')
// await waitFor(element(by.id('postText').withAncestor(bobNotifs)))
// .toBeVisible()
// .withTimeout(5000)
// await expect(
// element(by.id('postText').withAncestor(bobNotifs)).atIndex(0),
// ).toHaveText('Reply 2')
// await expect(
// element(by.id('postText').withAncestor(bobNotifs)).atIndex(1),
// ).toHaveText('Reply 3')
// await expect(
// element(by.id('postText').withAncestor(bobNotifs)).atIndex(2),
// ).toHaveText('Reply 1')
})
})
-128
View File
@@ -1,128 +0,0 @@
/* eslint-env detox/detox */
import {describe, beforeAll, it} from '@jest/globals'
import {expect} from 'detox'
import {openApp, loginAsAlice, createServer} from '../util'
describe('Thread screen', () => {
beforeAll(async () => {
await createServer('?users&follows&thread')
await openApp({permissions: {notifications: 'YES'}})
})
it('Login & navigate to thread', async () => {
await loginAsAlice()
await element(by.id('homeScreenFeedTabs-Following')).tap()
await element(by.id('feedItem-by-bob.test')).atIndex(0).tap()
await expect(
element(
by
.id('postThreadItem-by-bob.test')
.withDescendant(by.text('Thread root')),
),
).toBeVisible()
await expect(
element(
by
.id('postThreadItem-by-carla.test')
.withDescendant(by.text('Thread reply')),
),
).toBeVisible()
})
it('Can like the root post', async () => {
const post = by.id('postThreadItem-by-bob.test')
await expect(
element(by.id('likeCount-expanded').withAncestor(post)).atIndex(0),
).not.toExist()
await element(by.id('likeBtn').withAncestor(post)).atIndex(0).tap()
await expect(
element(by.id('likeCount-expanded').withAncestor(post)).atIndex(0),
).toHaveText('1 like')
await element(by.id('likeBtn').withAncestor(post)).atIndex(0).tap()
await expect(
element(by.id('likeCount-expanded').withAncestor(post)).atIndex(0),
).not.toExist()
})
it('Can like a reply post', async () => {
const post = by.id('postThreadItem-by-carla.test')
await expect(
element(by.id('likeCount').withAncestor(post)).atIndex(0),
).not.toExist()
await element(by.id('likeBtn').withAncestor(post)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(post)).atIndex(0),
).toHaveText('1')
await element(by.id('likeBtn').withAncestor(post)).atIndex(0).tap()
await expect(
element(by.id('likeCount').withAncestor(post)).atIndex(0),
).not.toExist()
})
it('Can repost the root post', async () => {
const post = by.id('postThreadItem-by-bob.test')
await expect(
element(by.id('repostCount-expanded').withAncestor(post)).atIndex(0),
).not.toExist()
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount-expanded').withAncestor(post)).atIndex(0),
).toHaveText('1 repost')
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount-expanded').withAncestor(post)).atIndex(0),
).not.toExist()
})
it('Can repost a reply post', async () => {
const post = by.id('postThreadItem-by-carla.test')
await expect(
element(by.id('repostCount').withAncestor(post)).atIndex(0),
).not.toExist()
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(post)).atIndex(0),
).toHaveText('1')
await element(by.id('repostBtn').withAncestor(post)).atIndex(0).tap()
await expect(element(by.id('repostModal'))).toBeVisible()
await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
await expect(element(by.id('repostModal'))).not.toBeVisible()
await expect(
element(by.id('repostCount').withAncestor(post)).atIndex(0),
).not.toExist()
})
it('Can report the root post', async () => {
const post = by.id('postThreadItem-by-bob.test')
await element(by.id('postDropdownBtn').withAncestor(post)).atIndex(0).tap()
await element(by.text('Report post')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonSpam'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
it('Can report a reply post', async () => {
const post = by.id('postThreadItem-by-carla.test')
await element(by.id('postDropdownBtn').withAncestor(post)).atIndex(0).tap()
await element(by.text('Report post')).tap()
await expect(element(by.id('reportModal'))).toBeVisible()
await element(
by.id('reportReasonRadios-com.atproto.moderation.defs#reasonSpam'),
).tap()
await element(by.id('sendReportBtn')).tap()
await expect(element(by.id('reportModal'))).not.toBeVisible()
})
})
-141
View File
@@ -1,141 +0,0 @@
import {resolveConfig} from 'detox/internals'
import {execSync} from 'child_process'
import http from 'http'
const platform = device.getPlatform()
export async function openApp(opts: any) {
opts = opts || {}
const config = await resolveConfig()
if (device.getPlatform() === 'ios') {
// disable password autofill
execSync(
`plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/${device.id}/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/UserSettings.plist`,
)
execSync(
`plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/${device.id}/data/Library/UserConfigurationProfiles/EffectiveUserSettings.plist`,
)
execSync(
`plutil -replace restrictedBool.allowPasswordAutoFill.value -bool NO ~/Library/Developer/CoreSimulator/Devices/${device.id}/data/Library/UserConfigurationProfiles/PublicInfo/PublicEffectiveUserSettings.plist`,
)
}
if (config.configurationName.split('.').includes('debug')) {
return await openAppForDebugBuild(platform, opts)
} else {
return await device.launchApp({
...opts,
newInstance: true,
})
}
}
export async function isVisible(id: string) {
try {
await expect(element(by.id(id))).toBeVisible()
return true
} catch (e) {
return false
}
}
export async function login(
service: string,
username: string,
password: string,
{takeScreenshots} = {takeScreenshots: false},
) {
await element(by.id('signInButton')).tap()
if (takeScreenshots) {
await device.takeScreenshot('1- opened sign-in screen')
}
if (await isVisible('chooseAccountForm')) {
await element(by.id('chooseNewAccountBtn')).tap()
}
await element(by.id('loginSelectServiceButton')).tap()
if (takeScreenshots) {
await device.takeScreenshot('2- opened service selector')
}
await element(by.id('customSelectBtn')).tap()
await element(by.id('customServerTextInput')).typeText(service)
await element(by.id('customServerTextInput')).tapReturnKey()
await element(by.id('doneBtn')).tap()
if (takeScreenshots) {
await device.takeScreenshot('3- input custom service')
}
await element(by.id('loginUsernameInput')).typeText(username)
await element(by.id('loginPasswordInput')).typeText(password)
if (takeScreenshots) {
await device.takeScreenshot('4- entered username and password')
}
await element(by.id('loginNextButton')).tap()
}
export async function loginAsAlice() {
await element(by.id('e2eSignInAlice')).tap()
}
export async function loginAsBob() {
await element(by.id('e2eSignInBob')).tap()
}
async function openAppForDebugBuild(platform: string, opts: any) {
const deepLinkUrl = // Local testing with packager
/*process.env.EXPO_USE_UPDATES
? // Testing latest published EAS update for the test_debug channel
getDeepLinkUrl(getLatestUpdateUrl())
: */ getDeepLinkUrl(getDevLauncherPackagerUrl(platform))
if (platform === 'ios') {
await device.launchApp({
...opts,
newInstance: true,
})
sleep(3000)
await device.openURL({
url: deepLinkUrl,
})
} else {
await device.launchApp({
...opts,
newInstance: true,
url: deepLinkUrl,
})
}
await sleep(3000)
}
export async function createServer(path = ''): Promise<string> {
return new Promise(function (resolve, reject) {
var req = http.request(
{
method: 'POST',
host: 'localhost',
port: 1986,
path: `/${path}`,
},
function (res) {
const body: Buffer[] = []
res.on('data', chunk => body.push(chunk))
res.on('end', function () {
try {
resolve(Buffer.concat(body).toString())
} catch (e) {
reject(e)
}
})
},
)
req.on('error', reject)
req.end()
})
}
const getDeepLinkUrl = (url: string) =>
`expo+bluesky://expo-development-client/?url=${encodeURIComponent(url)}`
const getDevLauncherPackagerUrl = (platform: string) =>
`http://localhost:8081/index.bundle?platform=${platform}&dev=true&minify=false&disableOnboarding=1`
export const sleep = (t: number) => new Promise(res => setTimeout(res, t))
-47
View File
@@ -1,47 +0,0 @@
export const exampleComHtml = `<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta name="description" content="An example website">
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>`
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+82
View File
@@ -0,0 +1,82 @@
import {describe, expect, it} from '@jest/globals'
import tldts from 'tldts'
import {isEmailMaybeInvalid} from '#/lib/strings/email'
describe('emailTypoChecker', () => {
const invalidCases = [
'gnail.com',
'gnail.co',
'gmaill.com',
'gmaill.co',
'gmai.com',
'gmai.co',
'gmal.com',
'gmal.co',
'gmail.co',
'iclod.com',
'iclod.co',
'outllok.com',
'outllok.co',
'outlook.co',
'yaoo.com',
'yaoo.co',
'yaho.com',
'yaho.co',
'yahooo.com',
'yahooo.co',
'yahoo.co',
'hithere.jul',
'agpowj.notshop',
'thisisnot.avalid.tld.nope',
// old tld for czechoslovakia
'czechoslovakia.cs',
// tlds that cbs was registering in 2024 but cancelled
'liveon.cbs',
'its.showtime',
]
const validCases = [
'gmail.com',
// subdomains (tests end of string)
'gnail.com.test.com',
'outlook.com',
'yahoo.com',
'icloud.com',
'firefox.com',
'firefox.co',
'hello.world.com',
'buy.me.a.coffee.shop',
'mayotte.yt',
'aland.ax',
'bouvet.bv',
'uk.gb',
'chad.td',
'somalia.so',
'plane.aero',
'cute.cat',
'together.coop',
'findme.jobs',
'nightatthe.museum',
'industrial.mil',
'czechrepublic.cz',
'lovakia.sk',
// new gtlds in 2024
'whatsinyour.locker',
'letsmakea.deal',
'skeet.now',
'everyone.みんな',
'bourgeois.lifestyle',
'california.living',
'skeet.ing',
'listeningto.music',
'createa.meme',
]
it.each(invalidCases)(`should be invalid: abcde@%s`, domain => {
expect(isEmailMaybeInvalid(`abcde@${domain}`, tldts)).toEqual(true)
})
it.each(validCases)(`should be valid: abcde@%s`, domain => {
expect(isEmailMaybeInvalid(`abcde@${domain}`, tldts)).toEqual(false)
})
})
+7 -7
View File
@@ -9,11 +9,11 @@ describe('isNetworkError', () => {
]
const outputs = [true, false, false, true]
it('correctly distinguishes network errors', () => {
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const result = isNetworkError(input)
expect(result).toEqual(outputs[i])
}
})
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const output = outputs[i]
it(`correctly distinguishes network errors for ${input}`, () => {
expect(isNetworkError(input)).toEqual(output)
})
}
})
-134
View File
@@ -1,134 +0,0 @@
import {extractHtmlMeta} from '../../src/lib/link-meta/html'
import {exampleComHtml} from './__mocks__/exampleComHtml'
import {youtubeHTML} from './__mocks__/youtubeHtml'
import {tiktokHtml} from './__mocks__/tiktokHtml'
import {youtubeChannelHtml} from './__mocks__/youtubeChannelHtml'
describe('extractHtmlMeta', () => {
const cases = [
['', {}],
['nothing', {}],
['<title>title</title>', {title: 'title'}],
['<title> aSd!@#AC </title>', {title: 'aSd!@#AC'}],
['<title>\n title\n </title>', {title: 'title'}],
['<meta name="title" content="meta title">', {title: 'meta title'}],
[
'<meta name="description" content="meta description">',
{description: 'meta description'},
],
['<meta property="og:title" content="og title">', {title: 'og title'}],
[
'<meta property="og:description" content="og description">',
{description: 'og description'},
],
[
'<meta property="og:image" content="https://ogimage.com/foo.png">',
{image: 'https://ogimage.com/foo.png'},
],
[
'<meta property="twitter:title" content="twitter title">',
{title: 'twitter title'},
],
[
'<meta property="twitter:description" content="twitter description">',
{description: 'twitter description'},
],
[
'<meta property="twitter:image" content="https://twitterimage.com/foo.png">',
{image: 'https://twitterimage.com/foo.png'},
],
['<meta\n name="title"\n content="meta title"\n>', {title: 'meta title'}],
]
it.each(cases)(
'given the html tag %p, returns %p',
// @ts-ignore not worth fixing -prf
(input, expectedResult) => {
const output = extractHtmlMeta({html: input as string, hostname: ''})
expect(output).toEqual(expectedResult)
},
)
it('extracts title and description from a generic HTML page', () => {
const input = exampleComHtml
const expectedOutput = {
title: 'Example Domain',
description: 'An example website',
}
const output = extractHtmlMeta({html: input, hostname: 'example.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts title and description from a Tiktok HTML page', () => {
const input = tiktokHtml
const expectedOutput = {
title:
'Coca-Cola and Mentos! Super Reaction! #cocacola #mentos #reaction #bal... | TikTok',
description:
'5.5M Likes, 20.8K Comments. TikTok video from Power Vision Tests (@_powervision_): &quot;Coca-Cola and Mentos! Super Reaction! #cocacola #mentos #reaction #balloon #sciencemoment #scienceexperiment #experiment #test #amazing #pvexp&quot;. оригинальный звук - Power Vision Tests.',
}
const output = extractHtmlMeta({html: input, hostname: 'tiktok.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts title and description from a generic youtube page', () => {
const input = youtubeHTML
const expectedOutput = {
title: 'HD Video (1080p) with Relaxing Music of Native American Shamans',
description:
'Stunning HD Video ( 1080p ) of Patagonian Nature with Relaxing Native American Shamanic Music. HD footage used from ',
image: 'https://i.ytimg.com/vi/x6UITRjhijI/sddefault.jpg',
}
const output = extractHtmlMeta({html: input, hostname: 'youtube.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts avatar from a youtube channel', () => {
const input = youtubeChannelHtml
const expectedOutput = {
title: 'penguinz0',
description:
'Clips channel: https://www.youtube.com/channel/UC4EQHfzIbkL_Skit_iKt1aA\n\nTwitter: https://twitter.com/MoistCr1TiKaL\n\nInstagram: https://www.instagram.com/bigmoistcr1tikal/?hl=en\n\nTwitch: https://www.twitch.tv/moistcr1tikal\n\nSnapchat: Hugecharles\n\nTik Tok: Hugecharles\n\nI don&#39;t have any other public accounts.',
image:
'https://yt3.googleusercontent.com/ytc/AL5GRJWOhJOuUC6C2b7gP-5D2q6ypXbcOOckyAE1En4RUQ=s176-c-k-c0x00ffffff-no-rj',
}
const output = extractHtmlMeta({html: input, hostname: 'youtube.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts username from the url a twitter profile page', () => {
const expectedOutput = {
title: '@bluesky on Twitter',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/bluesky',
})
expect(output).toEqual(expectedOutput)
})
it('extracts username from the url a tweet', () => {
const expectedOutput = {
title: 'Tweet by @bluesky',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/bluesky/status/1582437529969917953',
})
expect(output).toEqual(expectedOutput)
})
it("does not extract username from the url when it's not a tweet or profile page", () => {
const expectedOutput = {
title: 'Twitter',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/i/articles/follows/-1675653703?time_window=24',
})
expect(output).toEqual(expectedOutput)
})
})
+72 -43
View File
@@ -1,25 +1,30 @@
import {deleteAsync} from 'expo-file-system'
import {manipulateAsync, SaveFormat} from 'expo-image-manipulator'
import RNFetchBlob from 'rn-fetch-blob'
import {
downloadAndResize,
DownloadAndResizeOpts,
getResizedDimensions,
} from '../../src/lib/media/manip'
import ImageResizer from '@bam.tech/react-native-image-resizer'
import RNFetchBlob from 'rn-fetch-blob'
const mockResizedImage = {
path: 'file://resized-image.jpg',
size: 100,
width: 100,
height: 100,
mime: 'image/jpeg',
}
describe('downloadAndResize', () => {
const errorSpy = jest.spyOn(global.console, 'error')
const mockResizedImage = {
path: jest.fn().mockReturnValue('file://resized-image.jpg'),
size: 100,
width: 50,
height: 50,
mime: 'image/jpeg',
}
beforeEach(() => {
const mockedCreateResizedImage =
ImageResizer.createResizedImage as jest.Mock
mockedCreateResizedImage.mockResolvedValue(mockResizedImage)
const mockedCreateResizedImage = manipulateAsync as jest.Mock
mockedCreateResizedImage.mockResolvedValue({
uri: 'file://resized-image.jpg',
...mockResizedImage,
})
})
afterEach(() => {
@@ -30,6 +35,7 @@ describe('downloadAndResize', () => {
const mockedFetch = RNFetchBlob.fetch as jest.Mock
mockedFetch.mockResolvedValueOnce({
path: jest.fn().mockReturnValue('file://downloaded-image.jpg'),
info: jest.fn().mockReturnValue({status: 200}),
flush: jest.fn(),
})
@@ -52,17 +58,17 @@ describe('downloadAndResize', () => {
'GET',
'https://example.com/image.jpg',
)
expect(ImageResizer.createResizedImage).toHaveBeenCalledWith(
'file://downloaded-image.jpg',
100,
100,
'JPEG',
100,
undefined,
undefined,
undefined,
{mode: 'cover'},
// First time it gets called is to get dimensions
expect(manipulateAsync).toHaveBeenCalledWith(expect.any(String), [], {})
expect(manipulateAsync).toHaveBeenCalledWith(
expect.any(String),
[{resize: {height: opts.height, width: opts.width}}],
{format: SaveFormat.JPEG, compress: 1.0},
)
expect(deleteAsync).toHaveBeenCalledWith(expect.any(String), {
idempotent: true,
})
})
it('should return undefined for invalid URI', async () => {
@@ -80,10 +86,11 @@ describe('downloadAndResize', () => {
expect(result).toBeUndefined()
})
it('should return undefined for unsupported file type', async () => {
it('should return undefined for non-200 response', async () => {
const mockedFetch = RNFetchBlob.fetch as jest.Mock
mockedFetch.mockResolvedValueOnce({
path: jest.fn().mockReturnValue('file://downloaded-image'),
info: jest.fn().mockReturnValue({status: 400}),
flush: jest.fn(),
})
@@ -97,25 +104,47 @@ describe('downloadAndResize', () => {
}
const result = await downloadAndResize(opts)
expect(result).toEqual(mockResizedImage)
expect(RNFetchBlob.config).toHaveBeenCalledWith({
fileCache: true,
appendExt: 'jpeg',
expect(errorSpy).not.toHaveBeenCalled()
expect(result).toBeUndefined()
})
it('should not downsize whenever dimensions are below the max dimensions', () => {
const initialDimensionsOne = {
width: 1200,
height: 1000,
}
const resizedDimensionsOne = getResizedDimensions(initialDimensionsOne)
const initialDimensionsTwo = {
width: 1000,
height: 1200,
}
const resizedDimensionsTwo = getResizedDimensions(initialDimensionsTwo)
expect(resizedDimensionsOne).toEqual(initialDimensionsOne)
expect(resizedDimensionsTwo).toEqual(initialDimensionsTwo)
})
it('should resize dimensions and maintain aspect ratio if they are above the max dimensons', () => {
const initialDimensionsOne = {
width: 3000,
height: 1500,
}
const resizedDimensionsOne = getResizedDimensions(initialDimensionsOne)
const initialDimensionsTwo = {
width: 2000,
height: 4000,
}
const resizedDimensionsTwo = getResizedDimensions(initialDimensionsTwo)
expect(resizedDimensionsOne).toEqual({
width: 2000,
height: 1000,
})
expect(resizedDimensionsTwo).toEqual({
width: 1000,
height: 2000,
})
expect(RNFetchBlob.fetch).toHaveBeenCalledWith(
'GET',
'https://example.com/image',
)
expect(ImageResizer.createResizedImage).toHaveBeenCalledWith(
'file://downloaded-image',
100,
100,
'JPEG',
100,
undefined,
undefined,
undefined,
{mode: 'cover'},
)
})
})
+333 -92
View File
@@ -1,17 +1,22 @@
import {RichText} from '@atproto/api'
import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player'
import {
createStarterPackGooglePlayUri,
createStarterPackLinkFromAndroidReferrer,
parseStarterPackUri,
} from 'lib/strings/starter-pack'
import {cleanError} from '../../src/lib/strings/errors'
import {createFullHandle, makeValidHandle} from '../../src/lib/strings/handles'
import {enforceLen} from '../../src/lib/strings/helpers'
import {detectLinkables} from '../../src/lib/strings/rich-text-detection'
import {shortenLinks} from '../../src/lib/strings/rich-text-manip'
import {
makeRecordUri,
toNiceDomain,
toShortUrl,
toShareUrl,
toShortUrl,
} from '../../src/lib/strings/url-helpers'
import {pluralize, enforceLen} from '../../src/lib/strings/helpers'
import {ago} from '../../src/lib/strings/time'
import {detectLinkables} from '../../src/lib/strings/rich-text-detection'
import {shortenLinks} from '../../src/lib/strings/rich-text-manip'
import {makeValidHandle, createFullHandle} from '../../src/lib/strings/handles'
import {cleanError} from '../../src/lib/strings/errors'
import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player'
describe('detectLinkables', () => {
const inputs = [
@@ -126,35 +131,6 @@ describe('detectLinkables', () => {
})
})
describe('pluralize', () => {
const inputs: [number, string, string?][] = [
[1, 'follower'],
[1, 'member'],
[100, 'post'],
[1000, 'repost'],
[10000, 'upvote'],
[100000, 'other'],
[2, 'man', 'men'],
]
const outputs = [
'follower',
'member',
'posts',
'reposts',
'upvotes',
'others',
'men',
]
it('correctly pluralizes a set of words', () => {
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const output = pluralize(...input)
expect(output).toEqual(outputs[i])
}
})
})
describe('makeRecordUri', () => {
const inputs: [string, string, string][] = [
['alice.test', 'app.bsky.feed.post', '3jk7x4irgv52r'],
@@ -170,36 +146,6 @@ describe('makeRecordUri', () => {
})
})
describe('ago', () => {
const inputs = [
1671461038,
'04 Dec 1995 00:12:00 GMT',
new Date(),
new Date().setSeconds(new Date().getSeconds() - 10),
new Date().setMinutes(new Date().getMinutes() - 10),
new Date().setHours(new Date().getHours() - 1),
new Date().setDate(new Date().getDate() - 1),
new Date().setMonth(new Date().getMonth() - 1),
]
const outputs = [
new Date(1671461038).toLocaleDateString(),
new Date('04 Dec 1995 00:12:00 GMT').toLocaleDateString(),
'now',
'10s',
'10m',
'1h',
'1d',
'1mo',
]
it('correctly calculates how much time passed, in a string', () => {
for (let i = 0; i < inputs.length; i++) {
const result = ago(inputs[i])
expect(result).toEqual(outputs[i])
}
})
})
describe('makeValidHandle', () => {
const inputs = [
'test-handle-123',
@@ -389,16 +335,21 @@ describe('shortenLinks', () => {
describe('parseEmbedPlayerFromUrl', () => {
const inputs = [
'https://youtu.be/videoId',
'https://youtu.be/videoId?t=1s',
'https://www.youtube.com/watch?v=videoId',
'https://www.youtube.com/watch?v=videoId&feature=share',
'https://www.youtube.com/watch?v=videoId&t=1s',
'https://youtube.com/watch?v=videoId',
'https://youtube.com/watch?v=videoId&feature=share',
'https://youtube.com/shorts/videoId',
'https://youtube.com/live/videoId',
'https://m.youtube.com/watch?v=videoId',
'https://music.youtube.com/watch?v=videoId',
'https://youtube.com/shorts/',
'https://youtube.com/',
'https://youtube.com/random',
'https://youtube.com/live/',
'https://twitch.tv/channelName',
'https://www.twitch.tv/channelName',
@@ -434,6 +385,8 @@ describe('parseEmbedPlayerFromUrl', () => {
'https://giphy.com/gif/some-random-gif-name-gifId',
'https://giphy.com/gifs/',
'https://giphy.com/gifs/39248209509382934029?hh=100&ww=100',
'https://media.giphy.com/media/gifId/giphy.webp',
'https://media0.giphy.com/media/gifId/giphy.webp',
'https://media1.giphy.com/media/gifId/giphy.gif',
@@ -456,6 +409,32 @@ describe('parseEmbedPlayerFromUrl', () => {
'https://tenor.com/view',
'https://tenor.com/view/gifId.gif',
'https://tenor.com/intl/view/gifId.gif',
'https://media.tenor.com/someID_AAAAC/someName.gif?hh=100&ww=100',
'https://media.tenor.com/someID_AAAAC/someName.gif',
'https://media.tenor.com/someID/someName.gif',
'https://media.tenor.com/someID',
'https://media.tenor.com',
'https://www.flickr.com/photos/username/albums/72177720308493661',
'https://flickr.com/photos/username/albums/72177720308493661',
'https://flickr.com/photos/username/albums/72177720308493661/',
'https://flickr.com/photos/username/albums/72177720308493661//',
'https://flic.kr/s/aHBqjAES3i',
'https://flickr.com/foetoes/username/albums/3903',
'https://flickr.com/albums/3903',
'https://flic.kr/s/OolI',
'https://flic.kr/t/aHBqjAES3i',
'https://www.flickr.com/groups/898944@N23/pool',
'https://flickr.com/groups/898944@N23/pool',
'https://flickr.com/groups/898944@N23/pool/',
'https://flickr.com/groups/898944@N23/pool//',
'https://flic.kr/go/8WJtR',
'https://www.flickr.com/groups/898944@N23/',
'https://www.flickr.com/groups',
]
const outputs = [
@@ -464,6 +443,11 @@ describe('parseEmbedPlayerFromUrl', () => {
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
{
type: 'youtube_video',
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=1',
},
{
type: 'youtube_video',
source: 'youtube',
@@ -474,6 +458,11 @@ describe('parseEmbedPlayerFromUrl', () => {
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
{
type: 'youtube_video',
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=1',
},
{
type: 'youtube_video',
source: 'youtube',
@@ -495,10 +484,21 @@ describe('parseEmbedPlayerFromUrl', () => {
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
{
type: 'youtube_video',
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
{
type: 'youtube_video',
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
undefined,
undefined,
undefined,
undefined,
{
type: 'twitch_video',
@@ -621,18 +621,17 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
undefined,
undefined,
{
type: 'giphy_gif',
source: 'giphy',
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
metaUri: 'https://giphy.com/gifs/39248209509382934029',
playerUri: 'https://i.giphy.com/media/39248209509382934029/200.webp',
},
{
type: 'giphy_gif',
@@ -640,7 +639,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -648,7 +647,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -656,7 +655,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -664,7 +663,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -672,7 +671,15 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
source: 'giphy',
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
undefined,
undefined,
@@ -684,7 +691,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
@@ -693,7 +700,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -701,7 +708,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -709,7 +716,7 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
{
type: 'giphy_gif',
@@ -717,32 +724,90 @@ describe('parseEmbedPlayerFromUrl', () => {
isGif: true,
hideDetails: true,
metaUri: 'https://giphy.com/gifs/gifId',
playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
playerUri: 'https://i.giphy.com/media/gifId/200.webp',
},
undefined,
undefined,
undefined,
undefined,
undefined,
{
type: 'tenor_gif',
source: 'tenor',
isGif: true,
hideDetails: true,
playerUri: 'https://tenor.com/view/gifId.gif',
playerUri: 'https://t.gifs.bsky.app/someID_AAAAM/someName.gif',
dimensions: {
width: 100,
height: 100,
},
},
undefined,
undefined,
undefined,
undefined,
{
type: 'tenor_gif',
source: 'tenor',
isGif: true,
hideDetails: true,
playerUri: 'https://tenor.com/view/gifId.gif',
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/photosets/72177720308493661',
},
{
type: 'tenor_gif',
source: 'tenor',
isGif: true,
hideDetails: true,
playerUri: 'https://tenor.com/intl/view/gifId.gif',
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/photosets/72177720308493661',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/photosets/72177720308493661',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/photosets/72177720308493661',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/photosets/72177720308493661',
},
undefined,
undefined,
undefined,
undefined,
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/groups/898944@N23',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/groups/898944@N23',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/groups/898944@N23',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/groups/898944@N23',
},
{
type: 'flickr_album',
source: 'flickr',
playerUri: 'https://embedr.flickr.com/groups/898944@N23',
},
undefined,
undefined,
]
it('correctly grabs the correct id from uri', () => {
@@ -756,3 +821,179 @@ describe('parseEmbedPlayerFromUrl', () => {
}
})
})
describe('createStarterPackLinkFromAndroidReferrer', () => {
const validOutput = 'at://haileyok.com/app.bsky.graph.starterpack/rkey'
it('returns a link when input contains utm_source and utm_content', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(validOutput)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_content=starterpack_test-lover-9000.com_rkey',
),
).toEqual('at://test-lover-9000.com/app.bsky.graph.starterpack/rkey')
})
it('returns a link when input contains utm_source and utm_content in different order', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey&utm_source=bluesky',
),
).toEqual(validOutput)
})
it('returns a link when input contains other parameters as well', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_medium=starterpack&utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(validOutput)
})
it('returns null when utm_source is not present', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(null)
})
it('returns null when utm_content is not present', () => {
expect(
createStarterPackLinkFromAndroidReferrer('utm_source=bluesky'),
).toEqual(null)
})
it('returns null when utm_content is malformed', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com',
),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer('utm_content=starterpack'),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey_more',
),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=notastarterpack_haileyok.com_rkey',
),
).toEqual(null)
})
})
describe('parseStarterPackHttpUri', () => {
const baseUri = 'https://bsky.app/start'
it('returns a valid at uri when http uri is valid', () => {
const validHttpUri = `${baseUri}/haileyok.com/rkey`
expect(parseStarterPackUri(validHttpUri)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const validHttpUri2 = `${baseUri}/haileyok.com/ilovetesting`
expect(parseStarterPackUri(validHttpUri2)).toEqual({
name: 'haileyok.com',
rkey: 'ilovetesting',
})
const validHttpUri3 = `${baseUri}/testlover9000.com/rkey`
expect(parseStarterPackUri(validHttpUri3)).toEqual({
name: 'testlover9000.com',
rkey: 'rkey',
})
})
it('returns null when there is no rkey', () => {
const validHttpUri = `${baseUri}/haileyok.com`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when there is an extra path', () => {
const validHttpUri = `${baseUri}/haileyok.com/rkey/other`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when there is no handle or rkey', () => {
const validHttpUri = `${baseUri}`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when the route is not /start or /starter-pack', () => {
const validHttpUri = 'https://bsky.app/start/haileyok.com/rkey'
expect(parseStarterPackUri(validHttpUri)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const validHttpUri2 = 'https://bsky.app/starter-pack/haileyok.com/rkey'
expect(parseStarterPackUri(validHttpUri2)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const invalidHttpUri = 'https://bsky.app/profile/haileyok.com/rkey'
expect(parseStarterPackUri(invalidHttpUri)).toEqual(null)
})
it('returns the at uri when the input is a valid starterpack at uri', () => {
const validAtUri = 'at://did:123/app.bsky.graph.starterpack/rkey'
expect(parseStarterPackUri(validAtUri)).toEqual({
name: 'did:123',
rkey: 'rkey',
})
})
it('returns null when the at uri has no rkey', () => {
const validAtUri = 'at://did:123/app.bsky.graph.starterpack'
expect(parseStarterPackUri(validAtUri)).toEqual(null)
})
it('returns null when the collection is not app.bsky.graph.starterpack', () => {
const validAtUri = 'at://did:123/app.bsky.graph.list/rkey'
expect(parseStarterPackUri(validAtUri)).toEqual(null)
})
it('returns null when the input is undefined', () => {
expect(parseStarterPackUri(undefined)).toEqual(null)
})
})
describe('createStarterPackGooglePlayUri', () => {
const base =
'https://play.google.com/store/apps/details?id=xyz.blueskyweb.app&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_'
it('returns valid google play uri when input is valid', () => {
expect(createStarterPackGooglePlayUri('name', 'rkey')).toEqual(
`${base}name_rkey`,
)
})
it('returns null when no rkey is supplied', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri('name', undefined)).toEqual(null)
})
it('returns null when no name or rkey are supplied', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri(undefined, undefined)).toEqual(null)
})
it('returns null when rkey is supplied but no name', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri(undefined, 'rkey')).toEqual(null)
})
})
+42
View File
@@ -0,0 +1,42 @@
import {IsValidHandle, validateServiceHandle} from '#/lib/strings/handles'
describe('handle validation', () => {
const valid = [
['ali', 'bsky.social'],
['alice', 'bsky.social'],
['a-lice', 'bsky.social'],
['a-----lice', 'bsky.social'],
['123', 'bsky.social'],
['123456789012345678', 'bsky.social'],
['alice', 'custom-pds.com'],
['alice', 'my-custom-pds-with-long-name.social'],
['123456789012345678', 'my-custom-pds-with-long-name.social'],
]
it.each(valid)(`should be valid: %s.%s`, (handle, service) => {
const result = validateServiceHandle(handle, service)
expect(result.overall).toEqual(true)
})
const invalid = [
['al', 'bsky.social', 'frontLength'],
['-alice', 'bsky.social', 'hyphenStartOrEnd'],
['alice-', 'bsky.social', 'hyphenStartOrEnd'],
['%%%', 'bsky.social', 'handleChars'],
['1234567890123456789', 'bsky.social', 'frontLength'],
[
'1234567890123456789',
'my-custom-pds-with-long-name.social',
'frontLength',
],
['al', 'my-custom-pds-with-long-name.social', 'frontLength'],
['a'.repeat(300), 'toolong.com', 'totalLength'],
] satisfies [string, string, keyof IsValidHandle][]
it.each(invalid)(
`should be invalid: %s.%s due to %s`,
(handle, service, expectedError) => {
const result = validateServiceHandle(handle, service)
expect(result.overall).toEqual(false)
expect(result[expectedError]).toEqual(false)
},
)
})
+41 -2
View File
@@ -1,8 +1,9 @@
import {it, describe, expect} from '@jest/globals'
import {describe, expect, it} from '@jest/globals'
import {
linkRequiresWarning,
isPossiblyAUrl,
isTrustedUrl,
linkRequiresWarning,
splitApexDomain,
} from '../../../src/lib/strings/url-helpers'
@@ -74,6 +75,10 @@ describe('linkRequiresWarning', () => {
// bad uri inputs, default to true
['', '', true],
['example.com', 'example.com', true],
['/profile', 'Username', false],
['#', 'Show More', false],
['https://docs.bsky.app', 'https://docs.bsky.app', false],
['https://bsky.app/compose/intent?text=test', 'Compose a post', false],
]
it.each(cases)(
@@ -139,3 +144,37 @@ describe('splitApexDomain', () => {
},
)
})
describe('isTrustedUrl', () => {
const cases = [
['#', true],
['#profile', true],
['/', true],
['/profile', true],
['/profile/', true],
['/profile/bob.test', true],
['https://bsky.app', true],
['https://bsky.app/', true],
['https://bsky.app/profile/bob.test', true],
['https://www.bsky.app', true],
['https://www.bsky.app/', true],
['https://docs.bsky.app', true],
['https://bsky.social', true],
['https://bsky.social/blog', true],
['https://blueskyweb.xyz', true],
['https://blueskyweb.zendesk.com', true],
['http://bsky.app', true],
['http://bsky.social', true],
['http://blueskyweb.xyz', true],
['http://blueskyweb.zendesk.com', true],
['https://google.com', false],
['https://docs.google.com', false],
['https://google.com/#', false],
['https://blueskywebxzendesk.com', false],
]
it.each(cases)('given input uri %p, returns %p', (str, expected) => {
const output = isTrustedUrl(str)
expect(output).toEqual(expected)
})
})
+307 -78
View File
@@ -1,34 +1,13 @@
const pkg = require('./package.json')
const SPLASH_CONFIG = {
backgroundColor: '#ffffff',
image: './assets/splash.png',
resizeMode: 'cover',
}
const DARK_SPLASH_CONFIG = {
backgroundColor: '#001429',
image: './assets/splash-dark.png',
resizeMode: 'cover',
}
const DARK_SPLASH_ANDROID_BACKGROUND = '#0f141b'
module.exports = function () {
module.exports = function (config) {
/**
* App version number. Should be incremented as part of a release cycle.
*/
const VERSION = pkg.version
/**
* iOS build number. Must be incremented for each TestFlight version.
* WARNING: Always leave this variable on line 24! If it is moved, you need to update ./scripts/bumpIosBuildNumber.sh
*/
const IOS_BUILD_NUMBER = '7'
/**
* Android build number. Must be incremented for each release.
* WARNING: Always leave this variable on line 30! If it is moved, you need to update ./scripts/bumpAndroidBuildNumber.sh
*/
const ANDROID_VERSION_CODE = 62
/**
* Uses built-in Expo env vars
*
@@ -36,11 +15,27 @@ module.exports = function () {
*/
const PLATFORM = process.env.EAS_BUILD_PLATFORM
/**
* Additional granularity for the `dist` field
*/
const DIST_BUILD_NUMBER =
PLATFORM === 'android' ? ANDROID_VERSION_CODE : IOS_BUILD_NUMBER
const IS_TESTFLIGHT = process.env.EXPO_PUBLIC_ENV === 'testflight'
const IS_PRODUCTION = process.env.EXPO_PUBLIC_ENV === 'production'
const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION
const ASSOCIATED_DOMAINS = [
'applinks:bsky.app',
'applinks:staging.bsky.app',
'appclips:bsky.app',
'appclips:go.bsky.app', // Allows App Clip to work when scanning QR codes
// When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port.
...(IS_DEV || IS_TESTFLIGHT ? [] : []),
]
const UPDATES_CHANNEL = IS_TESTFLIGHT
? 'testflight'
: IS_PRODUCTION
? 'production'
: undefined
const UPDATES_ENABLED = !!UPDATES_CHANNEL
const USE_SENTRY = Boolean(process.env.SENTRY_AUTH_TOKEN)
return {
expo: {
@@ -52,12 +47,10 @@ module.exports = function () {
runtimeVersion: {
policy: 'appVersion',
},
orientation: 'portrait',
icon: './assets/icon.png',
icon: './assets/app-icons/ios_icon_default_light.png',
userInterfaceStyle: 'automatic',
splash: SPLASH_CONFIG,
primaryColor: '#1083fe',
ios: {
buildNumber: IOS_BUILD_NUMBER,
supportsTablet: false,
bundleIdentifier: 'xyz.blueskyweb.app',
config: {
@@ -73,20 +66,89 @@ module.exports = function () {
'Used to save images to your library.',
NSPhotoLibraryUsageDescription:
'Used for profile pictures, posts, and other kinds of content',
CFBundleSpokenName: 'Blue Sky',
CFBundleLocalizations: [
'en',
'an',
'ast',
'ca',
'cy',
'da',
'de',
'el',
'eo',
'es',
'eu',
'fi',
'fr',
'ga',
'gd',
'gl',
'hi',
'hu',
'ia',
'id',
'it',
'ja',
'km',
'ko',
'ne',
'nl',
'pl',
'pt-BR',
'ro',
'ru',
'sv',
'th',
'tr',
'uk',
'vi',
'yue',
'zh-Hans',
'zh-Hant',
],
},
associatedDomains: ['applinks:bsky.app', 'applinks:staging.bsky.app'],
splash: {
...SPLASH_CONFIG,
dark: DARK_SPLASH_CONFIG,
associatedDomains: ASSOCIATED_DOMAINS,
entitlements: {
'com.apple.developer.kernel.increased-memory-limit': true,
'com.apple.developer.kernel.extended-virtual-addressing': true,
'com.apple.security.application-groups': 'group.app.bsky',
},
privacyManifests: {
NSPrivacyAccessedAPITypes: [
{
NSPrivacyAccessedAPIType:
'NSPrivacyAccessedAPICategoryFileTimestamp',
NSPrivacyAccessedAPITypeReasons: ['C617.1', '3B52.1', '0A2A.1'],
},
{
NSPrivacyAccessedAPIType: 'NSPrivacyAccessedAPICategoryDiskSpace',
NSPrivacyAccessedAPITypeReasons: ['E174.1', '85F4.1'],
},
{
NSPrivacyAccessedAPIType:
'NSPrivacyAccessedAPICategorySystemBootTime',
NSPrivacyAccessedAPITypeReasons: ['35F9.1'],
},
{
NSPrivacyAccessedAPIType:
'NSPrivacyAccessedAPICategoryUserDefaults',
NSPrivacyAccessedAPITypeReasons: ['CA92.1', '1C8F.1'],
},
],
},
},
androidStatusBar: {
barStyle: 'dark-content',
backgroundColor: '#ffffff',
barStyle: 'light-content',
backgroundColor: '#00000000',
},
// Dark nav bar in light mode is better than light nav bar in dark mode
androidNavigationBar: {
barStyle: 'light-content',
backgroundColor: DARK_SPLASH_ANDROID_BACKGROUND,
},
android: {
versionCode: ANDROID_VERSION_CODE,
icon: './assets/icon.png',
icon: './assets/app-icons/android_icon_default_light.png',
adaptiveIcon: {
foregroundImage: './assets/icon-android-foreground.png',
monochromeImage: './assets/icon-android-foreground.png',
@@ -104,75 +166,242 @@ module.exports = function () {
scheme: 'https',
host: 'bsky.app',
},
IS_DEV && {
scheme: 'http',
host: 'localhost:19006',
},
],
category: ['BROWSABLE', 'DEFAULT'],
},
],
splash: {
...SPLASH_CONFIG,
dark: DARK_SPLASH_CONFIG,
},
},
web: {
favicon: './assets/favicon.png',
},
updates: {
enabled: true,
fallbackToCacheTimeout: 1000,
url: 'https://u.expo.dev/55bd077a-d905-4184-9c7f-94789ba0f302',
url: 'https://updates.bsky.app/manifest',
enabled: UPDATES_ENABLED,
fallbackToCacheTimeout: 30000,
codeSigningCertificate: UPDATES_ENABLED
? './code-signing/certificate.pem'
: undefined,
codeSigningMetadata: UPDATES_ENABLED
? {
keyid: 'main',
alg: 'rsa-v1_5-sha256',
}
: undefined,
checkAutomatically: 'NEVER',
channel: UPDATES_CHANNEL,
},
plugins: [
'expo-video',
'expo-localization',
Boolean(process.env.SENTRY_AUTH_TOKEN) && 'sentry-expo',
USE_SENTRY && [
'@sentry/react-native/expo',
{
organization: 'blueskyweb',
project: 'app',
url: 'https://sentry.io',
},
],
[
'expo-build-properties',
{
ios: {
deploymentTarget: '13.4',
deploymentTarget: '15.1',
newArchEnabled: false,
},
android: {
compileSdkVersion: 34,
targetSdkVersion: 34,
buildToolsVersion: '34.0.0',
kotlinVersion: '1.8.0',
compileSdkVersion: 35,
targetSdkVersion: 35,
buildToolsVersion: '35.0.0',
newArchEnabled: false,
},
},
],
[
'expo-updates',
{
username: 'blueskysocial',
},
],
[
'expo-notifications',
{
icon: './assets/icon-android-notification.png',
color: '#ffffff',
color: '#1185fe',
sounds: PLATFORM === 'ios' ? ['assets/dm.aiff'] : ['assets/dm.mp3'],
},
],
'./plugins/withAndroidManifestPlugin.js',
].filter(Boolean),
extra: {
eas: {
projectId: '55bd077a-d905-4184-9c7f-94789ba0f302',
},
},
hooks: {
postPublish: [
/*
* @see https://docs.expo.dev/guides/using-sentry/#app-configuration
*/
'react-native-compressor',
[
'@bitdrift/react-native',
{
file: 'sentry-expo/upload-sourcemaps',
config: {
organization: 'blueskyweb',
project: 'react-native',
release: VERSION,
dist: `${PLATFORM}.${VERSION}.${DIST_BUILD_NUMBER}`,
networkInstrumentation: true,
},
],
'./plugins/starterPackAppClipExtension/withStarterPackAppClip.js',
'./plugins/withGradleJVMHeapSizeIncrease.js',
'./plugins/withAndroidManifestPlugin.js',
'./plugins/withAndroidManifestFCMIconPlugin.js',
'./plugins/withAndroidStylesAccentColorPlugin.js',
'./plugins/withAndroidSplashScreenStatusBarTranslucentPlugin.js',
'./plugins/withAndroidNoJitpackPlugin.js',
'./plugins/withNoBundleCompression.js',
'./plugins/shareExtension/withShareExtensions.js',
'./plugins/notificationsExtension/withNotificationsExtension.js',
'./plugins/withAppDelegateReferrer.js',
[
'expo-font',
{
fonts: [
'./assets/fonts/inter/InterVariable.woff2',
'./assets/fonts/inter/InterVariable-Italic.woff2',
// Android only
'./assets/fonts/inter/Inter-Regular.otf',
'./assets/fonts/inter/Inter-Italic.otf',
'./assets/fonts/inter/Inter-SemiBold.otf',
'./assets/fonts/inter/Inter-SemiBoldItalic.otf',
'./assets/fonts/inter/Inter-ExtraBold.otf',
'./assets/fonts/inter/Inter-ExtraBoldItalic.otf',
],
},
],
[
'expo-splash-screen',
{
ios: {
enableFullScreenImage_legacy: true,
backgroundColor: '#ffffff',
image: './assets/splash.png',
resizeMode: 'cover',
dark: {
enableFullScreenImage_legacy: true,
backgroundColor: '#001429',
image: './assets/splash-dark.png',
resizeMode: 'cover',
},
},
android: {
backgroundColor: '#0c7cff',
image: './assets/splash-android-icon.png',
imageWidth: 150,
dark: {
backgroundColor: '#0c2a49',
image: './assets/splash-android-icon-dark.png',
imageWidth: 150,
},
},
},
],
[
'@mozzius/expo-dynamic-app-icon',
{
/**
* Default set
*/
default_light: {
ios: './assets/app-icons/ios_icon_default_light.png',
android: './assets/app-icons/android_icon_default_light.png',
prerendered: true,
},
default_dark: {
ios: './assets/app-icons/ios_icon_default_dark.png',
android: './assets/app-icons/android_icon_default_dark.png',
prerendered: true,
},
/**
* Bluesky+ core set
*/
core_aurora: {
ios: './assets/app-icons/ios_icon_core_aurora.png',
android: './assets/app-icons/android_icon_core_aurora.png',
prerendered: true,
},
core_bonfire: {
ios: './assets/app-icons/ios_icon_core_bonfire.png',
android: './assets/app-icons/android_icon_core_bonfire.png',
prerendered: true,
},
core_sunrise: {
ios: './assets/app-icons/ios_icon_core_sunrise.png',
android: './assets/app-icons/android_icon_core_sunrise.png',
prerendered: true,
},
core_sunset: {
ios: './assets/app-icons/ios_icon_core_sunset.png',
android: './assets/app-icons/android_icon_core_sunset.png',
prerendered: true,
},
core_midnight: {
ios: './assets/app-icons/ios_icon_core_midnight.png',
android: './assets/app-icons/android_icon_core_midnight.png',
prerendered: true,
},
core_flat_blue: {
ios: './assets/app-icons/ios_icon_core_flat_blue.png',
android: './assets/app-icons/android_icon_core_flat_blue.png',
prerendered: true,
},
core_flat_white: {
ios: './assets/app-icons/ios_icon_core_flat_white.png',
android: './assets/app-icons/android_icon_core_flat_white.png',
prerendered: true,
},
core_flat_black: {
ios: './assets/app-icons/ios_icon_core_flat_black.png',
android: './assets/app-icons/android_icon_core_flat_black.png',
prerendered: true,
},
core_classic: {
ios: './assets/app-icons/ios_icon_core_classic.png',
android: './assets/app-icons/android_icon_core_classic.png',
prerendered: true,
},
},
],
['expo-screen-orientation', {initialOrientation: 'PORTRAIT_UP'}],
[
'react-native-vision-camera',
{
enableLocation: false,
cameraPermissionText: 'Bluesky needs access to your camera.',
enableMicrophonePermission: true,
microphonePermissionText:
'Bluesky needs access to your microphone.',
},
],
].filter(Boolean),
extra: {
eas: {
build: {
experimental: {
ios: {
appExtensions: [
{
targetName: 'Share-with-Bluesky',
bundleIdentifier: 'xyz.blueskyweb.app.Share-with-Bluesky',
entitlements: {
'com.apple.security.application-groups': [
'group.app.bsky',
],
},
},
{
targetName: 'BlueskyNSE',
bundleIdentifier: 'xyz.blueskyweb.app.BlueskyNSE',
entitlements: {
'com.apple.security.application-groups': [
'group.app.bsky',
],
},
},
{
targetName: 'BlueskyClip',
bundleIdentifier: 'xyz.blueskyweb.app.AppClip',
},
],
},
},
},
projectId: '55bd077a-d905-4184-9c7f-94789ba0f302',
},
},
},
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 783 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Some files were not shown because too many files have changed in this diff Show More