🔀 Fork of Bluesky (https://github.com/bluesky-social/social-app) with minor adjustments for https://zio.blue
 
 
 
 
 
 
Go to file
Ollie H 95f8360d19
Add keyboard shortcuts: new, escape, and hard break (#552)
* Add keyboard shortcuts: new, escape, and hard break

* Add preferences modal

* Remove code accidentally re-added due to rebase

* Fix incorrect copy and lint

* Put stuff back so diffs are clearer

* Re-add invite codes to settings

* Address comments

* Tune the copy

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2023-05-02 23:00:18 -05:00
.bundle Initial commit 2022-06-07 17:50:05 -05:00
.github/workflows Fix unit tests (#377) 2023-04-03 12:11:06 -05:00
__e2e__ Refactor moderation to apply to accounts, profiles, and posts correctly (#548) 2023-04-27 12:38:23 -05:00
__mocks__ Merge main into the Web PR (#230) 2023-02-22 14:23:57 -06:00
__tests__/lib Fix unit tests (#377) 2023-04-03 12:11:06 -05:00
assets Move to expo and react-navigation (#288) 2023-03-13 16:01:43 -05:00
bskyweb React Native accessibility (#539) 2023-05-01 20:38:47 -05:00
jest Refactor moderation to apply to accounts, profiles, and posts correctly (#548) 2023-04-27 12:38:23 -05:00
patches Mobile Web (#427) 2023-04-12 18:27:55 -07:00
scripts Create build step for the web server (#289) 2023-03-14 17:30:15 -05:00
src Add keyboard shortcuts: new, escape, and hard break (#552) 2023-05-02 23:00:18 -05:00
web React Native accessibility (#539) 2023-05-01 20:38:47 -05:00
.buckconfig Initial commit 2022-06-07 17:50:05 -05:00
.detoxrc.js Mobile Web (#427) 2023-04-12 18:27:55 -07:00
.eslintrc.js React Native accessibility (#539) 2023-05-01 20:38:47 -05:00
.gitignore Split image cropping into secondary step (#473) 2023-04-17 15:41:44 -07:00
.prettierignore Basic golang CI setup (#360) 2023-03-27 10:16:17 -05:00
.prettierrc.js Add state management 2022-06-09 13:03:25 -05:00
.ruby-version Improve lightbox... and update to React Native 0.71.0 (#49) 2023-01-17 20:40:02 -06:00
.watchmanconfig Initial commit 2022-06-07 17:50:05 -05:00
Dockerfile bskyweb additions (#296) 2023-03-20 14:41:15 -07:00
Gemfile Improve lightbox... and update to React Native 0.71.0 (#49) 2023-01-17 20:40:02 -06:00
README.md [APP-527] setup sentry (#532) 2023-05-01 14:42:31 -05:00
app.json [APP-527] setup sentry (#532) 2023-05-01 14:42:31 -05:00
babel.config.js Move to expo and react-navigation (#288) 2023-03-13 16:01:43 -05:00
eas.json [APP-527] setup sentry (#532) 2023-05-01 14:42:31 -05:00
index.js Move to expo and react-navigation (#288) 2023-03-13 16:01:43 -05:00
index.web.js Move to expo and react-navigation (#288) 2023-03-13 16:01:43 -05:00
metro.config.js Lex refactor (#362) 2023-03-31 13:17:26 -05:00
package.json Add keyboard shortcuts: new, escape, and hard break (#552) 2023-05-02 23:00:18 -05:00
tsconfig.json Lex refactor (#362) 2023-03-31 13:17:26 -05:00
webpack.config.js Move to expo and react-navigation (#288) 2023-03-13 16:01:43 -05:00
yarn.lock Add keyboard shortcuts: new, escape, and hard break (#552) 2023-05-02 23:00:18 -05:00

README.md

Bluesky

Build instructions

  • Setup your environment using the react native instructions.
  • Setup your environment for e2e testing using detox:
    • yarn global add detox-cli
    • brew tap wix/brew
    • brew install applesimutils
  • After initial setup:
    • npx expo prebuild -> you will also need to run this anytime app.json or package.json changes
  • Start the dev servers
    • git clone git@github.com:bluesky-social/atproto.git
    • cd atproto
    • yarn
    • cd packages/dev-env && yarn start
  • Run the dev app
    • iOS: yarn ios
    • Android: yarn android
    • Web: yarn web
  • Run e2e tests
    • Start in various console tabs:
      • yarn e2e:server
      • yarn e2e:metro
    • Run once: yarn e2e:build
    • Each test run: yarn e2e:run
  • Tips
    • npx react-native info Checks what has been installed.
    • The android simulator won't be able to access localhost services unless you run adb reverse tcp:{PORT} tcp:{PORT}
      • For instance, the localhosted 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 which doesn't use a platform specifier, and that should bee the Web version. (More info.)

Various notes

Debugging

Developer Menu

To open the Developer Menu on an expo-dev-client app you can do the following:

  • Android Device: Shake the device vertically, or if your device is connected via USB, run adb shell input keyevent 82 in your terminal
  • Android Emulator: Either press Cmd ⌘ + m or Ctrl + m or run adb shell input keyevent 82 in your terminal
  • iOS Device: Shake the device, or touch 3 fingers to the screen
  • iOS Simulator: Press Ctrl + Cmd ⌘ + z on a Mac in the emulator to simulate the shake gesture, or press Cmd ⌘ + d

Running E2E Tests

  • Make sure you've setup your environment following above
  • Make sure Metro and the dev server are running
  • Run yarn e2e
  • Find the artifacts in the artifact folder

Polyfills

./platform/polyfills.*.ts adds polyfills to the environment. Currently this includes:

  • TextEncoder / TextDecoder

Sentry sourcemaps

Sourcemaps should automatically be updated when a signed build is created using eas build and published using eas submit due to the postPublish hook setup in app.json. However, if an update is created and published OTA using eas update, we need to the take the following steps to upload sourcemaps to Sentry:

  • Run eas update. This will generate a dist folder in your project root, which contains your JavaScript bundles and source maps. This command will also output the 'Android update ID' and 'iOS update ID' that we'll need in the next step.
  • Copy or rename the bundle names in the dist/bundles folder to match index.android.bundle (Android) or main.jsbundle (iOS).
  • Next, you can use the Sentry CLI to upload your bundles and source maps:
    • release name should be set to ${bundleIdentifier}@${version}+${buildNumber} (iOS) or ${androidPackage}@${version}+${versionCode} (Android), so for example com.domain.myapp@1.0.0+1.
    • dist should be set to the Update ID that eas update generated.
  • Command for Android: node_modules/@sentry/cli/bin/sentry-cli releases \ files <release name> \ upload-sourcemaps \ --dist <Android Update ID> \ --rewrite \ dist/bundles/index.android.bundle dist/bundles/android-<hash>.map
  • Command for iOS: node_modules/@sentry/cli/bin/sentry-cli releases \ files <release name> \ upload-sourcemaps \ --dist <iOS Update ID> \ --rewrite \ dist/bundles/main.jsbundle dist/bundles/ios-<hash>.map