* 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>
* 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>
* 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
* 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.
* 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`
* 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
* 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>
* 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
* 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>
* Make quote post enabled switch label text static
* Update PostInteractionSettingsDialog.tsx
* meh this is better
---------
Co-authored-by: dan <dan.abramov@gmail.com>
* 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
* 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>
* 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>
* Update translates from crowdin
* Completed the translations for video and HTTP referer control
* Improved translation
* Fix several translation issues
* Improved Cantonese translations
* 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>
* 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>
* 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
* 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>
* 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>
* ▫️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
* 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
* stop using ref in render
* fix display name fallback on web
* use unicode ellipsis for useGrapheme
* fix overflow issue
* sanitize handle/displayname on web
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.
* 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>
* 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
* 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
* Add CFBundleSpokenName
Help Siri to correctly pronounce Blue Sky. Instead of pronouncing it like “Lebowski”.
* Format
---------
Co-authored-by: dan <dan.abramov@gmail.com>
* 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
* [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.
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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.
* 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
* 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
* 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>
* 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
* Added translations for new strings
* Fixed some translations: made them more natural and consistent
---------
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* 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
* 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
* 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.
* 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>
* 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
* 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>
* 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
* 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
* 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
- Set up your environment [using the expo instructions](https://docs.expo.dev/guides/local-app-development/).
- make sure that the JAVA_HOME points to the zulu-17 directory in your `.zshrc` or `.bashrc` file: `export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home`. DO NOT use another JDK or you will encounter build errors.
@@ -22,7 +33,68 @@
- After initial setup:
- Copy `google-services.json.example` to `google-services.json` or provide your own `google-services.json`. (A real firebase project is NOT required)
-`npx expo prebuild` -> you will also need to run this anytime `app.json` or native `package.json` deps change
-`yarn intl:build` -> you will also need to run this anytime `./src/locale/{locale}/messages.po` change
### Running the Native App
- iOS: `yarn ios`
- Xcode must be installed for this to run.
- A simulator must be preconfigured in Xcode settings.
- if no iOS versions are available, install the iOS runtime at `Xcode > Settings > Platforms`.
- if the simulator download keeps failing you can download it from the developer website.
-`xcrun simctl runtime add "~/Downloads/iOS_17.4_Simulator_Runtime.dmg"` (adapt the path to the downloaded file)
- In addition, ensure Xcode Command Line Tools are installed using `xcode-select --install`.
- Expo will require you to configure Xcode Signing. Follow the linked instructions. Error messages in Xcode related to the signing process can be safely ignored when installing on the iOS Simulator; Expo merely requires the profile to exist in order to install the app on the Simulator.
- Make sure you do have a certificate: open Xcode > Settings > Accounts > (sign-in) > Manage Certificates > + > Apple Development > Done.
- If you still encounter issues, try `rm -rf ios` before trying to build again (`yarn ios`)
- Android: `yarn android`
- Install "Android Studio"
- Make sure you have the Android SDK installed (Android Studio > Tools > Android SDK).
- In "SDK Platforms": "Android x" (where x is Android's current version).
- In "SDK Tools": "Android SDK Build-Tools" and "Android Emulator" are required.
- Add `export ANDROID_HOME=/Users/<your_username>/Library/Android/sdk` to your `.zshrc` or `.bashrc` (and restart your terminal).
- Setup an emulator (Android Studio > Tools > Device Manager).
- Web: `yarn web` (see the top of this file).
After you do `yarn ios` and `yarn android` once, you can later just run `yarn web` and then press either `i` or `a` to open iOS and Android emulators respectively which is much faster. However, if you make native changes, you'll have to do `yarn prebuild -p ios` and `yarn prebuild -p android` and then `yarn ios` and `yarn android` again before you can continue with the same workflow.
### Tips
- Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.)
- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`.
- If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties.
-`npx react-native info` Checks what has been installed.
- If the Android simulator frequently hangs or is very sluggish, [bump its memory limit](https://stackoverflow.com/a/40068396)
- The Android simulator won't be able to access localhost services unless you run `adb reverse tcp:{PORT} tcp:{PORT}`
- For instance, the locally-hosted dev-wallet will need `adb reverse tcp:3001 tcp:3001`
- For some reason, the typescript compiler chokes on platform-specific files (e.g. `foo.native.ts`) but only when compiling for Web thus far. Therefore we always have one version of the file that doesn't use a platform specifier, and that should be the Web version. ([More info](https://stackoverflow.com/questions/44001050/platform-specific-import-component-in-react-native-with-typescript).)
### Running E2E Tests
- Start in various console tabs:
-`yarn e2e:mock-server`
-`yarn e2e:metro`
- Run once: `yarn e2e:build`
- Each test run: `yarn e2e:run`
### Adding Sentry
Adding Sentry is NOT required. You can keep `SENTRY_AUTH_TOKEN=` in `.env` which will build the app without Sentry.
However, if you're a part of the Bluesky team and want to enable Sentry, fill in `SENTRY_AUTH_TOKEN` in your `.env`. It can be created on the Sentry dashboard using [these instructions](https://docs.expo.dev/guides/using-sentry/#sign-up-for-a-sentry-account-and-create-a-project).
If you change `SENTRY_AUTH_TOKEN`, you need to do `yarn prebuild` before running `yarn ios` or `yarn android` again.
### Adding and Updating Locales
-`yarn intl:build` -> you will also need to run this anytime `./src/locale/{locale}/messages.po` change
## Running the Backend Locally
This is NOT required for app development but if you also want to develop the Bluesky *backend* locally too, you'll need this.
-`xcrun simctl runtime add "~/Downloads/iOS_17.4_Simulator_Runtime.dmg"` (adapt the path to the downloaded file)
- In addition, ensure Xcode Command Line Tools are installed using `xcode-select --install`.
- Expo will require you to configure Xcode Signing. Follow the linked instructions. Error messages in Xcode related to the signing process can be safely ignored when installing on the iOS Simulator; Expo merely requires the profile to exist in order to install the app on the Simulator.
- Make sure you do have a certificate: open Xcode > Settings > Accounts > (sign-in) > Manage Certificates > + > Apple Development > Done.
- If you still encounter issues, try `rm -rf ios` before trying to build again (`yarn ios`)
- Android: `yarn android`
- Install "Android Studio"
- Make sure you have the Android SDK installed (Android Studio > Tools > Android SDK).
- In "SDK Platforms": "Android x" (where x is Android's current version).
- In "SDK Tools": "Android SDK Build-Tools" and "Android Emulator" are required.
- Add `export ANDROID_HOME=/Users/<your_username>/Library/Android/sdk` to your `.zshrc` or `.bashrc` (and restart your terminal).
- Setup an emulator (Android Studio > Tools > Device Manager).
- Web: `yarn web`
- If you are cloning or forking this repo as an open-source developer, please check the tips below as well
- Run e2e tests
- Start in various console tabs:
-`yarn e2e:mock-server`
-`yarn e2e:metro`
- Run once: `yarn e2e:build`
- Each test run: `yarn e2e:run`
- Tips
- Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.)
- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`.
- If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties.
-`npx react-native info` Checks what has been installed.
- If the Android simulator frequently hangs or is very sluggish, [bump its memory limit](https://stackoverflow.com/a/40068396)
- The Android simulator won't be able to access localhost services unless you run `adb reverse tcp:{PORT} tcp:{PORT}`
- For instance, the locally-hosted dev-wallet will need `adb reverse tcp:3001 tcp:3001`
- For some reason, the typescript compiler chokes on platform-specific files (e.g. `foo.native.ts`) but only when compiling for Web thus far. Therefore we always have one version of the file that doesn't use a platform specifier, and that should be the Web version. ([More info](https://stackoverflow.com/questions/44001050/platform-specific-import-component-in-react-native-with-typescript).)
### Adding Sentry
Adding Sentry is NOT required. You can keep `SENTRY_AUTH_TOKEN=` in `.env` which will build the app without Sentry.
However, if you're a part of the Bluesky team and want to enable Sentry, fill in `SENTRY_AUTH_TOKEN` in your `.env`. It can be created on the Sentry dashboard using [these instructions](https://docs.expo.dev/guides/using-sentry/#sign-up-for-a-sentry-account-and-create-a-project).
If you change `SENTRY_AUTH_TOKEN`, you need to do `yarn prebuild` before running `yarn ios` or `yarn android` again.
Then, when logging in or creating an account, point it to the localhost port of the devserver.
## Go-Server Build
The Go server in this repository is only used for serving the web app in production. Usually you won't need to touch it.
private fun runTaskManagerTasks(remoteMessage: RemoteMessage) {
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.