Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/safari support #929

Merged
merged 31 commits into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
bb00b8b
adds lavamoat allow scripts, adds setup command to use instead of ins…
aristidesstaffieri Jul 19, 2023
67ff40b
adds allow scripts and configures allow list for all workspaces
aristidesstaffieri Jul 21, 2023
d75e9fc
Merge branch 'master' into release/5.2.5
piyalbasu Jul 25, 2023
e4fa3a7
adds initial apple upload script
aristidesstaffieri Jul 26, 2023
b1f65bd
adds env vars for apple deployment
aristidesstaffieri Jul 31, 2023
674992a
updates upload command and adds new args
aristidesstaffieri Aug 1, 2023
a15af6e
refactor upload script, uses archive correctly
aristidesstaffieri Aug 2, 2023
2ae825e
uses correct yaml structure
aristidesstaffieri Aug 2, 2023
07313bf
corrects yaml indent
aristidesstaffieri Aug 2, 2023
1812fa8
temporarily moves safari build to its own action
aristidesstaffieri Aug 2, 2023
89ce8f1
adds fastlane initial setup
aristidesstaffieri Aug 4, 2023
198dbc5
updates fast file provisioning profiles
aristidesstaffieri Aug 8, 2023
92245d0
updates fast file to use mac installer distribution
aristidesstaffieri Aug 30, 2023
9233949
adds safari submitProduction steps, removes old script and action
aristidesstaffieri Aug 30, 2023
008495b
resplit prod and safari build to use different images
aristidesstaffieri Aug 30, 2023
6fcc00e
adds GYM_PROJECT var
aristidesstaffieri Aug 31, 2023
3d00b5e
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Aug 31, 2023
8cff13d
fix type error on api timeout routine
aristidesstaffieri Aug 31, 2023
ff3c10a
revert type shim from bad deps, use lock file from master
aristidesstaffieri Aug 31, 2023
78faa29
Update submitSafari.yml
aristidesstaffieri Aug 31, 2023
65b2734
tweak safari action, updates name, node version, and adds missing sec…
aristidesstaffieri Aug 31, 2023
285f7de
remove workflow dispatch from safari action
aristidesstaffieri Aug 31, 2023
fbee916
readd workflow dispatch in safari action
aristidesstaffieri Aug 31, 2023
54046c9
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Dec 11, 2023
bfc35ff
cleans up readme from dev temp notes
aristidesstaffieri Dec 11, 2023
1c17813
adds dev notes for Safari
aristidesstaffieri Dec 11, 2023
7765b1a
Merge remote-tracking branch 'origin' into feature/safari-support
aristidesstaffieri Mar 6, 2024
9e61de5
Merge branch 'release/5.24.0' into feature/safari-support
aristidesstaffieri Aug 26, 2024
2e8058d
restore dependabot file from earlier merge
aristidesstaffieri Aug 26, 2024
40523c9
restore dependabot file from earlier merge
aristidesstaffieri Aug 26, 2024
cb5b894
add run target details to Safari testing docs section
aristidesstaffieri Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/submitSafari.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Production Deployment
on:
workflow_dispatch:
inputs:
version:
description: New Version
default: "1.0.0"
required: true
env:
GYM_PROJECT: "./extension/freighter-xcode"
jobs:
bump-version:
name: Bump Package Version and Submit Extension
runs-on: macos-latest
steps:
- uses: maxim-lobanov/setup-xcode@v1
- name: Checkout code
uses: actions/checkout@v2
- name: Update package.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/package.json
field: version
value: ${{ github.event.inputs.version }}
- name: Update manifest-v2.json version_name
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v2.json
field: version_name
value: ${{ github.event.inputs.version }}
- name: Update manifest-v3.json version_name
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v3.json
field: version_name
value: ${{ github.event.inputs.version }}
- name: Get manifest.json version
id: manifest_version
uses: frabert/replace-string-action@4ec615c8a75164a61d8fb333ad5e2e86ff038af1 #v1.2
with:
string: ${{ github.event.inputs.version }}
pattern: \-(.*)
replace-with: ""
- name: Update manifest-v2.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v2.json
field: version
value: ${{ steps.manifest_version.outputs.replaced }}
- name: Update manifest-v3.json version
uses: jossef/action-set-json-field@6e6d7e639f24b3955ef682815317b5613ac6ca12 #v1
with:
file: ./extension/public/static/manifest/v3.json
field: version
value: ${{ steps.manifest_version.outputs.replaced }}
- name: Build extension
uses: actions/setup-node@v1
with:
node-version: "16.14"
- run: yarn setup && yarn build:freighter-api && yarn build:extension:production --define 'process.env.AMPLITUDE_KEY="${{ secrets.AMPLITUDE_KEY }}"' --define 'process.env.SENTRY_KEY="${{ secrets.SENTRY_KEY }}"'
- name: Convert extension to Xcode project
run: xcrun safari-web-extension-converter ./extension/build --project-location $GYM_PROJECT --macos-only
- name: Set up ruby env
uses: ruby/[email protected]
with:
ruby-version: 2.6.10
bundler-cache: true
- name: Bundle extension for Safari
run: bundle exec fastlane build
env:
GYM_PROJECT: $GYM_PROJECT
APPLE_APP_ID: ${{ secrets.ASC_KEY_ID }}
APPL_TEAM_ID: ${{ secrets.APPL_TEAM_ID }}
APPLE_USER_ID: ${{ secrets.APPLE_USER_ID }}
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
APPLE_B64_KEY: ${{ secrets.APPLE_B64_KEY }}
XCODE_PROJ_PATH: ${{ secrets.XCODE_PROJ_PATH }}
- name: Upload archive to Apple Store
run: bundle exec fastlane upload
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,8 @@ node_modules
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# fastlane output
Freighter.app/
Freighter.pkg
Freighter.app.dSYM.zip
46 changes: 17 additions & 29 deletions @shared/api/internal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,11 @@ export const addAccount = async (
let hasPrivateKey = false;

try {
({
allAccounts,
error,
publicKey,
hasPrivateKey,
} = await sendMessageToBackground({
password,
type: SERVICE_TYPES.ADD_ACCOUNT,
}));
({ allAccounts, error, publicKey, hasPrivateKey } =
await sendMessageToBackground({
password,
type: SERVICE_TYPES.ADD_ACCOUNT,
}));
} catch (e) {
console.error(e);
}
Expand All @@ -104,16 +100,12 @@ export const importAccount = async (
let hasPrivateKey = false;

try {
({
allAccounts,
publicKey,
error,
hasPrivateKey,
} = await sendMessageToBackground({
password,
privateKey,
type: SERVICE_TYPES.IMPORT_ACCOUNT,
}));
({ allAccounts, publicKey, error, hasPrivateKey } =
await sendMessageToBackground({
password,
privateKey,
type: SERVICE_TYPES.IMPORT_ACCOUNT,
}));
} catch (e) {
console.error(e);
}
Expand Down Expand Up @@ -238,16 +230,12 @@ export const recoverAccount = async (
let error = "";

try {
({
allAccounts,
publicKey,
hasPrivateKey,
error,
} = await sendMessageToBackground({
password,
recoverMnemonic,
type: SERVICE_TYPES.RECOVER_ACCOUNT,
}));
({ allAccounts, publicKey, hasPrivateKey, error } =
await sendMessageToBackground({
password,
recoverMnemonic,
type: SERVICE_TYPES.RECOVER_ACCOUNT,
}));
} catch (e) {
console.error(e);
}
Expand Down
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane"
218 changes: 218 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
rexml
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.813.0)
aws-sdk-core (3.181.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.134.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.102.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.214.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.49.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.7.0)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
naturally (2.2.1)
optparse (0.1.1)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.3)
rake (13.0.6)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.6)
rouge (2.0.7)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.17.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.8.1)
word_wrap (1.0.0)
xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)

PLATFORMS
ruby

DEPENDENCIES
fastlane

BUNDLED WITH
1.17.2
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,15 @@ fi
```

This will instruct the git hook to use the .nvmrc found in this repo.

### TEMP NOTES

Setup Safari to allow unsigned extensions
https://developer.apple.com/documentation/safariservices/safari_web_extensions/running_your_safari_web_extension#3744467

xcrun safari-web-extension-converter freighter/extension/build --project-location freighter-safari

https://developer.apple.com/documentation/safariservices/safari_web_extensions/converting_a_web_extension_for_safari#3586258
says we can't use persistent bg scripts but I don't see that when running it locally

Run in xcode and open in Safari
Loading
Loading