Merge branch 'master' into renovate/ruby-on-rails-packages

This commit is contained in:
Marcos Rodriguez Vélez 2024-08-05 07:40:05 -04:00 committed by GitHub
commit 8511893d98
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
123 changed files with 5573 additions and 32323 deletions

View file

@ -11,18 +11,18 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
- run: test -d node_modules || yarn - run: test -d node_modules || npm i
- save_cache: - save_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
paths: paths:
- node_modules - node_modules
# run tests! # run tests!
- run: - run:
command: yarn tslint && yarn lint command: npm run tslint && npm run lint
unit: unit:
docker: docker:
@ -34,18 +34,18 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
- run: test -d node_modules || yarn - run: test -d node_modules || npm i
- save_cache: - save_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
paths: paths:
- node_modules - node_modules
# run tests! # run tests!
- run: - run:
command: yarn unit command: npm run unit
integration: integration:
@ -63,18 +63,18 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
- run: test -d node_modules || yarn - run: test -d node_modules || npm i
- save_cache: - save_cache:
key: node_modules-{{ checksum "yarn.lock" }} key: node_modules-{{ checksum "package-lock.json" }}
paths: paths:
- node_modules - node_modules
# run tests! # run tests!
- run: - run:
command: yarn jest || yarn jest || yarn jest || yarn jest command: npm run jest || npm run jest || npm run jest || npm run jest
# Orchestrate our job run sequence # Orchestrate our job run sequence
workflows: workflows:

View file

@ -40,7 +40,7 @@ jobs:
- name: Install dependencies with Bundler - name: Install dependencies with Bundler
run: bundle install run: bundle install
- name: Install node_modules - name: Install node_modules
run: yarn install run: npm install
- name: Install CocoaPods Dependencies - name: Install CocoaPods Dependencies
run: | run: |
gem install cocoapods gem install cocoapods

View file

@ -22,13 +22,13 @@ jobs:
with: with:
node-version: 20 node-version: 20
- name: Use yarn caches - name: Use npm caches
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: ~/.yarn/berry/cache path: ~/.npm
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: | restore-keys: |
${{ runner.os }}-yarn- ${{ runner.os }}-npm-
- name: Use specific Java version for sdkmanager to work - name: Use specific Java version for sdkmanager to work
uses: actions/setup-java@v3 uses: actions/setup-java@v3
@ -38,7 +38,7 @@ jobs:
cache: 'gradle' cache: 'gradle'
- name: Install node_modules - name: Install node_modules
run: yarn install run: npm install --production
- name: Extract Version Name - name: Extract Version Name
id: version_name id: version_name

View file

@ -22,27 +22,27 @@ jobs:
with: with:
node-version: 20 node-version: 20
- name: Use yarn caches - name: Use npm caches
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: ~/.yarn/berry/cache path: ~/.npm
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: | restore-keys: |
${{ runner.os }}-yarn- ${{ runner.os }}-npm-
- name: Use node_modules caches - name: Use node_modules caches
id: cache-nm id: cache-nm
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: node_modules path: node_modules
key: ${{ runner.os }}-nm-${{ hashFiles('yarn.lock') }} key: ${{ runner.os }}-nm-${{ hashFiles('package-lock.json') }}
- name: Install node_modules - name: Install node_modules
if: steps.cache-nm.outputs.cache-hit != 'true' if: steps.cache-nm.outputs.cache-hit != 'true'
run: yarn run: npm install
- name: Run tests - name: Run tests
run: yarn test || yarn test || yarn test || yarn test run: npm test || npm test || npm test || npm test
env: env:
BIP47_HD_MNEMONIC: ${{ secrets.BIP47_HD_MNEMONIC}} BIP47_HD_MNEMONIC: ${{ secrets.BIP47_HD_MNEMONIC}}
HD_MNEMONIC: ${{ secrets.HD_MNEMONIC }} HD_MNEMONIC: ${{ secrets.HD_MNEMONIC }}
@ -74,15 +74,15 @@ jobs:
docker-images: true docker-images: true
swap-storage: true swap-storage: true
- name: yarn and gradle caches in /mnt - name: npm and gradle caches in /mnt
run: | run: |
rm -rf ~/.yarn rm -rf ~/.npm
rm -rf ~/.gradle rm -rf ~/.gradle
sudo mkdir -p /mnt/.yarn sudo mkdir -p /mnt/.npm
sudo mkdir -p /mnt/.gradle sudo mkdir -p /mnt/.gradle
sudo chown -R runner /mnt/.yarn sudo chown -R runner /mnt/.npm
sudo chown -R runner /mnt/.gradle sudo chown -R runner /mnt/.gradle
ln -s /mnt/.yarn /home/runner/ ln -s /mnt/.npm /home/runner/
ln -s /mnt/.gradle /home/runner/ ln -s /mnt/.gradle /home/runner/
- name: Create artifacts directory on /mnt - name: Create artifacts directory on /mnt
@ -105,16 +105,16 @@ jobs:
restore-keys: | restore-keys: |
${{ runner.os }}-gradle- ${{ runner.os }}-gradle-
- name: Use yarn caches - name: Use npm caches
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
path: ~/.yarn/berry/cache path: ~/.npm
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: | restore-keys: |
${{ runner.os }}-yarn- ${{ runner.os }}-npm-
- name: Install node_modules - name: Install node_modules
run: yarn || yarn run: npm install || npm install
- name: Use specific Java version for sdkmanager to work - name: Use specific Java version for sdkmanager to work
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -129,7 +129,7 @@ jobs:
sudo udevadm trigger --name-match=kvm sudo udevadm trigger --name-match=kvm
- name: Build - name: Build
run: yarn e2e:release-build run: npm run e2e:release-build
- name: Run tests - name: Run tests
uses: reactivecircus/android-emulator-runner@v2 uses: reactivecircus/android-emulator-runner@v2
@ -139,7 +139,7 @@ jobs:
force-avd-creation: false force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none -camera-front none -partition-size 2047 emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none -camera-front none -partition-size 2047
arch: x86_64 arch: x86_64
script: yarn e2e:release-test --record-videos all --record-logs all --take-screenshots all --headless -d 200000 -R 5 --artifacts-location /mnt/artifacts script: npm run e2e:release-test -- --record-videos all --record-logs all --take-screenshots all --headless -d 200000 -R 5 --artifacts-location /mnt/artifacts
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
if: failure() if: failure()

11
.gitignore vendored
View file

@ -89,11 +89,6 @@ android/app/.project
android/app/.classpath android/app/.classpath
android/.settings/org.eclipse.buildship.core.prefs android/.settings/org.eclipse.buildship.core.prefs
android/.project android/.project
android/.settings/org.eclipse.buildship.core.prefs
# Yarn android/app/.classpath
.yarn/* android/app/.project
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

1
.npmrc Normal file
View file

@ -0,0 +1 @@
legacy-peer-deps=true

File diff suppressed because one or more lines are too long

View file

@ -1,5 +0,0 @@
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-3.6.4.cjs
# checksumBehavior: 'update'

View file

@ -2,7 +2,7 @@ source "https://rubygems.org"
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby "3.1.6" ruby "3.1.6"
gem 'rubyzip', '2.3.0' gem 'rubyzip', '2.3.2'
gem "cocoapods", "1.15.2" gem "cocoapods", "1.15.2"
gem "activesupport", ">= 6.1.7.3", "< 7.1.4" gem "activesupport", ">= 6.1.7.3", "< 7.1.4"
gem "fastlane" gem "fastlane"

View file

@ -23,8 +23,8 @@ GEM
artifactory (3.0.17) artifactory (3.0.17)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
aws-partitions (1.950.0) aws-partitions (1.961.0)
aws-sdk-core (3.201.0) aws-sdk-core (3.201.3)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.8)
@ -32,11 +32,11 @@ GEM
aws-sdk-kms (1.88.0) aws-sdk-kms (1.88.0)
aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-core (~> 3, >= 3.201.0)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.156.0) aws-sdk-s3 (1.157.0)
aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5) aws-sigv4 (~> 1.5)
aws-sigv4 (1.8.0) aws-sigv4 (1.9.1)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4) babosa (1.0.4)
base64 (0.2.0) base64 (0.2.0)
@ -95,7 +95,7 @@ GEM
escape (0.0.4) escape (0.0.4)
ethon (0.16.0) ethon (0.16.0)
ffi (>= 1.15.0) ffi (>= 1.15.0)
excon (0.110.0) excon (0.111.0)
faraday (1.10.3) faraday (1.10.3)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
@ -117,7 +117,7 @@ GEM
faraday-httpclient (1.0.1) faraday-httpclient (1.0.1)
faraday-multipart (1.0.4) faraday-multipart (1.0.4)
multipart-post (~> 2) multipart-post (~> 2)
faraday-net_http (1.0.1) faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0) faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0) faraday-patron (1.0.0)
faraday-rack (1.0.0) faraday-rack (1.0.0)
@ -125,7 +125,7 @@ GEM
faraday_middleware (1.2.0) faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.3.1) fastimage (2.3.1)
fastlane (2.221.1) fastlane (2.222.0)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0) addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
@ -216,7 +216,7 @@ GEM
json (2.7.2) json (2.7.2)
jwt (2.8.2) jwt (2.8.2)
base64 base64
mini_magick (4.13.1) mini_magick (4.13.2)
mini_mime (1.1.5) mini_mime (1.1.5)
minitest (5.24.1) minitest (5.24.1)
molinillo (0.8.0) molinillo (0.8.0)
@ -243,7 +243,7 @@ GEM
rouge (2.0.7) rouge (2.0.7)
ruby-macho (2.5.1) ruby-macho (2.5.1)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
rubyzip (2.3.0) rubyzip (2.3.2)
security (0.1.5) security (0.1.5)
signet (0.19.0) signet (0.19.0)
addressable (~> 2.8) addressable (~> 2.8)
@ -288,7 +288,7 @@ DEPENDENCIES
activesupport (>= 6.1.7.3, < 7.1.4) activesupport (>= 6.1.7.3, < 7.1.4)
cocoapods (= 1.15.2) cocoapods (= 1.15.2)
fastlane fastlane
rubyzip (= 2.3.0) rubyzip (= 2.3.2)
RUBY VERSION RUBY VERSION
ruby 3.1.6p260 ruby 3.1.6p260

View file

@ -27,12 +27,12 @@ Community: [telegram group](https://t.me/bluewallet)
## BUILD & RUN IT ## BUILD & RUN IT
Please refer to the engines field in package.json file for the minimum required versions of Node and yarn. It is preferred that you use an even-numbered version of Node as these are LTS versions. Please refer to the engines field in package.json file for the minimum required versions of Node and npm. It is preferred that you use an even-numbered version of Node as these are LTS versions.
To view the version of Node and yarn in your environment, run the following in your console: To view the version of Node and npm in your environment, run the following in your console:
``` ```
node --version && yarn --version node --version && npm --version
``` ```
* In your console: * In your console:
@ -40,10 +40,10 @@ node --version && yarn --version
``` ```
git clone https://github.com/BlueWallet/BlueWallet.git git clone https://github.com/BlueWallet/BlueWallet.git
cd BlueWallet cd BlueWallet
yarn npm install
``` ```
Please make sure that your console is running the most stable versions of node (even-numbered versions). Please make sure that your console is running the most stable versions of npm and node (even-numbered versions).
* To run on Android: * To run on Android:
@ -69,7 +69,7 @@ The above command will build the app and install it. Once you launch the app it
``` ```
npx pod-install npx pod-install
yarn start npm start
``` ```
In another terminal window within the BlueWallet folder: In another terminal window within the BlueWallet folder:
@ -83,15 +83,15 @@ npx react-native run-ios
``` ```
npx pod-install npx pod-install
yarn start npm start
``` ```
Open ios/BlueWallet.xcworkspace. Once the project loads, select the scheme/target BlueWallet-NoLDK. Click Run. Open ios/BlueWallet.xcworkspace. Once the project loads, select the scheme/target BlueWallet. Click Run.
## TESTS ## TESTS
```bash ```bash
yarn test npm run test
``` ```

View file

@ -2,27 +2,8 @@
## Apple ## Apple
* test the build on a real device. It is imperative that you run selftest and it gives you OK * TBD
* if necessary, up version number in all relevant files (you can use `./edit-version-number.sh`)
* run `./scripts/release-notes.sh` - it prints changelog between latest tag and now, put this output under
new version in file `ios/fastlane/metadata/en-US/release_notes.txt` (on top); if file got too big
delete the oldest version from the bottom of the file
* now is a good time to commit a ver bump and release notes changes
* create this release version in App Store Connect (iTunes) and attach appropriate build. note
last 4 digits of the build and announce it - this is now a RC. no need to fill release notes yet
* `cd ios/` and then run `DELIVER_USERNAME="my_itunes_email@example.com" DELIVER_PASSWORD="my_itunes_password" fastlane deliver --force --skip_binary_upload --skip_screenshots --ignore_language_directory_validation -a io.bluewallet.bluewallet --app_version "6.6.6"`
but replace `6.6.6` with your version number - this will upload release notes to all locales in itunes
* go back to App Store Connect and press `Submit for Review`. choose Yes, we use identifiers - for installs tracking
* once its approved and released it is safe to cut a release tag: run `git tag -m "REL v6.6.6: 76ed479" v6.6.6 -s`
where `76ed479` is a latest commit in this version. replace the version as well. then run `git push origin --tags`; alternative way to tag: `git tag -a v6.0.0 2e1a00609d5a0dbc91bcda2421df0f61bdfc6b10 -m "v6.0.0" -s`
* you are awesome!
## Android ## Android
* do android after ios usually * TBD
* test the build on a real device. We have accounts with browserstack where you can do so.
* its imperative that you run selftest and it gives you OK. note which build you are testing
* go to appcenter.ms, find this exact build under `master` builds, and press `Distribute` -> `Store` -> `Production`.
in `Release notes` write the release, this field is smaller than iOS, so you need to keep it bellow 500 characters.
* now just wait till appcenter displays a message that it is successfully distributed
* noice!

View file

@ -117,7 +117,6 @@ preBuild.dependsOn(copyFiatUnits)
dependencies { dependencies {
// The version of react-native is set by the React Native Gradle Plugin // The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android") implementation("com.facebook.react:react-android")
implementation files("../../node_modules/rn-ldk/android/libs/LDK-release.aar")
implementation 'androidx.core:core-ktx' implementation 'androidx.core:core-ktx'
implementation 'androidx.work:work-runtime-ktx:2.7.1' implementation 'androidx.work:work-runtime-ktx:2.7.1'

View file

@ -1,24 +0,0 @@
#!/bin/sh
echo Uploading to Appetize and publishing link to Github...
echo "Branch "
BRANCH=`git ls-remote --heads origin | grep $(git rev-parse HEAD) | cut -d / -f 3`
echo $BRANCH
echo "Branch 2 "
git log -n 1 --pretty=%d HEAD | awk '{print $2}' | sed 's/origin\///' | sed 's/)//'
FILENAME="$APPCENTER_OUTPUT_DIRECTORY/app-release.apk"
if [ -f $FILENAME ]; then
APTZ=`curl "https://$APPETIZE@api.appetize.io/v1/apps" -F "file=@$FILENAME" -F "platform=android"`
echo Apptezize response:
echo $APTZ
APPURL=`node -e "let e = JSON.parse('$APTZ'); console.log(e.publicURL + '?device=pixel4');"`
echo App url: $APPURL
PR=`node scripts/appcenter-post-build-get-pr-number.js`
echo PR: $PR
DLOAD_APK="https://lambda-download-android-build.herokuapp.com/download/$BUILD_BUILDID"
curl -X POST --data "{\"body\":\"♫ This was a triumph. I'm making a note here: HUGE SUCCESS ♫\n\n [android in browser] $APPURL\n\n[download apk]($DLOAD_APK) \"}" -H "Authorization: Bearer $GITHUB" "https://api.github.com/repos/BlueWallet/BlueWallet/issues/$PR/comments"
fi

View file

@ -88,7 +88,7 @@ const storageKey = 'ELECTRUM_PEERS';
const defaultPeer = { host: 'electrum1.bluewallet.io', ssl: '443' }; const defaultPeer = { host: 'electrum1.bluewallet.io', ssl: '443' };
export const hardcodedPeers: Peer[] = [ export const hardcodedPeers: Peer[] = [
{ host: 'mainnet.foundationdevices.com', ssl: '50002' }, { host: 'mainnet.foundationdevices.com', ssl: '50002' },
{ host: 'bitcoin.lukechilds.co', ssl: '50002' }, // { host: 'bitcoin.lukechilds.co', ssl: '50002' },
// { host: 'electrum.jochen-hoenicke.de', ssl: '50006' }, // { host: 'electrum.jochen-hoenicke.de', ssl: '50006' },
{ host: 'electrum1.bluewallet.io', ssl: '443' }, { host: 'electrum1.bluewallet.io', ssl: '443' },
{ host: 'electrum.acinq.co', ssl: '50002' }, { host: 'electrum.acinq.co', ssl: '50002' },

View file

@ -20,6 +20,8 @@ export interface TinySecp256k1InterfaceExtended {
isXOnlyPoint(p: Uint8Array): boolean; isXOnlyPoint(p: Uint8Array): boolean;
xOnlyPointAddTweak(p: Uint8Array, tweak: Uint8Array): XOnlyPointAddTweakResult | null; xOnlyPointAddTweak(p: Uint8Array, tweak: Uint8Array): XOnlyPointAddTweakResult | null;
privateNegate(d: Uint8Array): Uint8Array;
} }
necc.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => { necc.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => {
@ -119,7 +121,7 @@ const ecc: TinySecp256k1InterfaceExtended & TinySecp256k1Interface & TinySecp256
return ret; return ret;
}), }),
// privateNegate: (d: Uint8Array): Uint8Array => necc.utils.privateNegate(d), privateNegate: (d: Uint8Array): Uint8Array => necc.utils.privateNegate(d),
sign: (h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array => { sign: (h: Uint8Array, d: Uint8Array, e?: Uint8Array): Uint8Array => {
return necc.signSync(h, d, { der: false, extraEntropy: e }); return necc.signSync(h, d, { der: false, extraEntropy: e });

View file

@ -18,7 +18,6 @@ import { HDSegwitElectrumSeedP2WPKHWallet } from './wallets/hd-segwit-electrum-s
import { HDSegwitP2SHWallet } from './wallets/hd-segwit-p2sh-wallet'; import { HDSegwitP2SHWallet } from './wallets/hd-segwit-p2sh-wallet';
import { LegacyWallet } from './wallets/legacy-wallet'; import { LegacyWallet } from './wallets/legacy-wallet';
import { LightningCustodianWallet } from './wallets/lightning-custodian-wallet'; import { LightningCustodianWallet } from './wallets/lightning-custodian-wallet';
import { LightningLdkWallet } from './wallets/lightning-ldk-wallet';
import { MultisigHDWallet } from './wallets/multisig-hd-wallet'; import { MultisigHDWallet } from './wallets/multisig-hd-wallet';
import { SegwitBech32Wallet } from './wallets/segwit-bech32-wallet'; import { SegwitBech32Wallet } from './wallets/segwit-bech32-wallet';
import { SegwitP2SHWallet } from './wallets/segwit-p2sh-wallet'; import { SegwitP2SHWallet } from './wallets/segwit-p2sh-wallet';
@ -425,9 +424,6 @@ export class BlueApp {
unserializedWallet.passphrase = passphrase; unserializedWallet.passphrase = passphrase;
} }
break;
case LightningLdkWallet.type:
unserializedWallet = LightningLdkWallet.fromJson(key) as unknown as LightningLdkWallet;
break; break;
case SLIP39SegwitP2SHWallet.type: case SLIP39SegwitP2SHWallet.type:
unserializedWallet = SLIP39SegwitP2SHWallet.fromJson(key) as unknown as SLIP39SegwitP2SHWallet; unserializedWallet = SLIP39SegwitP2SHWallet.fromJson(key) as unknown as SLIP39SegwitP2SHWallet;
@ -496,11 +492,6 @@ export class BlueApp {
const ID = wallet.getID(); const ID = wallet.getID();
const tempWallets = []; const tempWallets = [];
if (wallet.type === LightningLdkWallet.type) {
const ldkwallet = wallet;
ldkwallet.stop().then(ldkwallet.purgeLocalStorage).catch(alert);
}
for (const value of this.wallets) { for (const value of this.wallets) {
if (value.getID() === ID) { if (value.getID() === ID) {
// the one we should delete // the one we should delete

View file

@ -12,7 +12,6 @@ export * from './wallets/hd-segwit-electrum-seed-p2wpkh-wallet';
export * from './wallets/hd-segwit-p2sh-wallet'; export * from './wallets/hd-segwit-p2sh-wallet';
export * from './wallets/legacy-wallet'; export * from './wallets/legacy-wallet';
export * from './wallets/lightning-custodian-wallet'; export * from './wallets/lightning-custodian-wallet';
export * from './wallets/lightning-ldk-wallet';
export * from './wallets/multisig-hd-wallet'; export * from './wallets/multisig-hd-wallet';
export * from './wallets/segwit-bech32-wallet'; export * from './wallets/segwit-bech32-wallet';
export * from './wallets/segwit-p2sh-wallet'; export * from './wallets/segwit-p2sh-wallet';

View file

@ -8,7 +8,6 @@ import { HDSegwitElectrumSeedP2WPKHWallet } from './wallets/hd-segwit-electrum-s
import { HDSegwitP2SHWallet } from './wallets/hd-segwit-p2sh-wallet'; import { HDSegwitP2SHWallet } from './wallets/hd-segwit-p2sh-wallet';
import { LegacyWallet } from './wallets/legacy-wallet'; import { LegacyWallet } from './wallets/legacy-wallet';
import { LightningCustodianWallet } from './wallets/lightning-custodian-wallet'; // Missing import import { LightningCustodianWallet } from './wallets/lightning-custodian-wallet'; // Missing import
import { LightningLdkWallet } from './wallets/lightning-ldk-wallet';
import { MultisigHDWallet } from './wallets/multisig-hd-wallet'; import { MultisigHDWallet } from './wallets/multisig-hd-wallet';
import { SegwitBech32Wallet } from './wallets/segwit-bech32-wallet'; import { SegwitBech32Wallet } from './wallets/segwit-bech32-wallet';
import { SLIP39LegacyP2PKHWallet, SLIP39SegwitBech32Wallet, SLIP39SegwitP2SHWallet } from './wallets/slip39-wallets'; import { SLIP39LegacyP2PKHWallet, SLIP39SegwitBech32Wallet, SLIP39SegwitP2SHWallet } from './wallets/slip39-wallets';
@ -26,7 +25,6 @@ export default class WalletGradient {
static defaultGradients: string[] = ['#B770F6', '#9013FE']; static defaultGradients: string[] = ['#B770F6', '#9013FE'];
static lightningCustodianWallet: string[] = ['#F1AA07', '#FD7E37']; // Corrected property with missing colors static lightningCustodianWallet: string[] = ['#F1AA07', '#FD7E37']; // Corrected property with missing colors
static aezeedWallet: string[] = ['#8584FF', '#5351FB']; static aezeedWallet: string[] = ['#8584FF', '#5351FB'];
static ldkWallet: string[] = ['#8584FF', '#5351FB'];
static createWallet = () => { static createWallet = () => {
const { colors } = useTheme(); const { colors } = useTheme();
@ -68,9 +66,6 @@ export default class WalletGradient {
case HDAezeedWallet.type: case HDAezeedWallet.type:
gradient = WalletGradient.aezeedWallet; gradient = WalletGradient.aezeedWallet;
break; break;
case LightningLdkWallet.type:
gradient = WalletGradient.ldkWallet;
break;
case LightningCustodianWallet.type: case LightningCustodianWallet.type:
gradient = WalletGradient.lightningCustodianWallet; gradient = WalletGradient.lightningCustodianWallet;
break; break;
@ -131,9 +126,6 @@ export default class WalletGradient {
case HDAezeedWallet.type: case HDAezeedWallet.type:
gradient = WalletGradient.aezeedWallet; gradient = WalletGradient.aezeedWallet;
break; break;
case LightningLdkWallet.type:
gradient = WalletGradient.ldkWallet;
break;
case LightningCustodianWallet.type: case LightningCustodianWallet.type:
gradient = WalletGradient.lightningCustodianWallet; gradient = WalletGradient.lightningCustodianWallet;
break; break;

View file

@ -12,7 +12,6 @@ import {
HDSegwitP2SHWallet, HDSegwitP2SHWallet,
LegacyWallet, LegacyWallet,
LightningCustodianWallet, LightningCustodianWallet,
LightningLdkWallet,
MultisigHDWallet, MultisigHDWallet,
SegwitBech32Wallet, SegwitBech32Wallet,
SegwitP2SHWallet, SegwitP2SHWallet,
@ -183,17 +182,6 @@ const startImport = (
yield { wallet: lnd }; yield { wallet: lnd };
} }
// is it LDK?
yield { progress: 'lightning' };
if (text.startsWith('ldk://')) {
const ldk = new LightningLdkWallet();
ldk.setSecret(text);
if (ldk.valid()) {
await ldk.init();
yield { wallet: ldk };
}
}
// check bip39 wallets // check bip39 wallets
yield { progress: 'bip39' }; yield { progress: 'bip39' };
const hd2 = new HDSegwitBech32Wallet(); const hd2 = new HDSegwitBech32Wallet();

View file

@ -1,698 +0,0 @@
import * as bip39 from 'bip39';
import * as bitcoin from 'bitcoinjs-lib';
import bolt11 from 'bolt11';
import RNFS from 'react-native-fs';
import RnLdk from 'rn-ldk/src/index';
import presentAlert from '../../components/Alert';
import { BitcoinUnit, Chain } from '../../models/bitcoinUnits';
import { randomBytes } from '../rng';
import SyncedAsyncStorage from '../synced-async-storage';
import { HDSegwitBech32Wallet } from './hd-segwit-bech32-wallet';
import { LightningCustodianWallet } from './lightning-custodian-wallet';
import { SegwitBech32Wallet } from './segwit-bech32-wallet';
export class LightningLdkWallet extends LightningCustodianWallet {
static readonly type = 'lightningLdk';
static readonly typeReadable = 'Lightning LDK';
// @ts-ignore: override
public readonly type = LightningLdkWallet.type;
// @ts-ignore: override
public readonly typeReadable = LightningLdkWallet.typeReadable;
private _listChannels: any[] = [];
private _listPayments: any[] = [];
private _listInvoices: any[] = [];
private _nodeConnectionDetailsCache: any = {}; // pubkey -> {pubkey, host, port, ts}
private _refundAddressScriptHex: string = '';
private _lastTimeBlockchainCheckedTs: number = 0;
private _unwrapFirstExternalAddressFromMnemonicsCache: string = '';
private static _predefinedNodes: Record<string, string> = {
Bitrefill: '03d607f3e69fd032524a867b288216bfab263b6eaee4e07783799a6fe69bb84fac@3.237.23.179:9735',
'OpenNode.com': '03abf6f44c355dec0d5aa155bdbdd6e0c8fefe318eff402de65c6eb2e1be55dc3e@3.132.230.42:9735',
Fold: '02816caed43171d3c9854e3b0ab2cf0c42be086ff1bd4005acc2a5f7db70d83774@35.238.153.25:9735',
'Moon (paywithmoon.com)': '025f1456582e70c4c06b61d5c8ed3ce229e6d0db538be337a2dc6d163b0ebc05a5@52.86.210.65:9735',
'coingate.com': '0242a4ae0c5bef18048fbecf995094b74bfb0f7391418d71ed394784373f41e4f3@3.124.63.44:9735',
'Blockstream Store': '02df5ffe895c778e10f7742a6c5b8a0cefbe9465df58b92fadeb883752c8107c8f@35.232.170.67:9735',
ACINQ: '03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f@3.33.236.230:9735',
};
static getPredefinedNodes() {
return LightningLdkWallet._predefinedNodes;
}
static pubkeyToAlias(pubkeyHex: string) {
for (const key of Object.keys(LightningLdkWallet._predefinedNodes)) {
const val = LightningLdkWallet._predefinedNodes[key];
if (val.startsWith(pubkeyHex)) return key;
}
return pubkeyHex;
}
constructor() {
super();
this.preferredBalanceUnit = BitcoinUnit.SATS;
this.chain = Chain.OFFCHAIN;
this.user_invoices_raw = []; // compatibility with other lightning wallet class
}
valid() {
try {
const entropy = bip39.mnemonicToEntropy(this.secret.replace('ldk://', ''));
return entropy.length === 64 || entropy.length === 32;
} catch (_) {}
return false;
}
async stop() {
return RnLdk.stop();
}
async wipeLndDir() {}
async listPeers() {
return RnLdk.listPeers();
}
async listChannels() {
try {
// exception might be in case of incompletely-started LDK. then just ignore and return cached version
this._listChannels = await RnLdk.listChannels();
} catch (_) {}
return this._listChannels;
}
async getLndTransactions() {
return [];
}
async getInfo() {
const identityPubkey = await RnLdk.getNodeId();
return {
identityPubkey,
};
}
allowSend() {
return true;
}
timeToCheckBlockchain() {
return +new Date() - this._lastTimeBlockchainCheckedTs > 5 * 60 * 1000; // 5 min, half of block time
}
async fundingStateStepFinalize(txhex: string) {
return RnLdk.openChannelStep2(txhex);
}
async getMaturingBalance(): Promise<number> {
return RnLdk.getMaturingBalance();
}
async getMaturingHeight(): Promise<number> {
return RnLdk.getMaturingHeight();
}
/**
* Probes getNodeId() call. if its available - LDK has started
*
* @return {Promise<boolean>}
*/
async isStarted() {
let rez;
try {
rez = await Promise.race([new Promise(resolve => setTimeout(() => resolve('timeout'), 1000)), RnLdk.getNodeId()]);
} catch (_) {}
if (rez === 'timeout' || !rez) {
return false;
}
return true;
}
/**
* Waiter till getNodeId() starts to respond. Returns true if it eventually does,
* false in case of timeout.
*
* @return {Promise<boolean>}
*/
async waitTillStarted() {
for (let c = 0; c < 30; c++) {
if (await this.isStarted()) return true;
await new Promise(resolve => setTimeout(resolve, 500)); // sleep
}
return false;
}
async openChannel(pubkeyHex: string, host: string, amountSats: number, privateChannel: boolean) {
let triedToConnect = false;
let port = 9735;
if (host.includes(':')) {
const splitted = host.split(':');
host = splitted[0];
port = +splitted[1];
}
for (let c = 0; c < 20; c++) {
const peers = await this.listPeers();
if (peers.includes(pubkeyHex)) {
// all good, connected, lets open channel
return await RnLdk.openChannelStep1(pubkeyHex, +amountSats);
}
if (!triedToConnect) {
triedToConnect = true;
await RnLdk.connectPeer(pubkeyHex, host, +port);
}
await new Promise(resolve => setTimeout(resolve, 500)); // sleep
}
throw new Error('timeout waiting for peer connection');
}
async connectPeer(pubkeyHex: string, host: string, port: number) {
return RnLdk.connectPeer(pubkeyHex, host, +port);
}
async lookupNodeConnectionDetailsByPubkey(pubkey: string) {
// first, trying cache:
if (this._nodeConnectionDetailsCache[pubkey] && +new Date() - this._nodeConnectionDetailsCache[pubkey].ts < 4 * 7 * 24 * 3600 * 1000) {
// cache hit
return this._nodeConnectionDetailsCache[pubkey];
}
// doing actual fetch and filling cache:
const response = await fetch(`https://1ml.com/node/${pubkey}/json`);
const json = await response.json();
if (json && json.addresses && Array.isArray(json.addresses)) {
for (const address of json.addresses) {
if (address.network === 'tcp') {
const ret = {
pubkey,
host: address.addr.split(':')[0],
port: parseInt(address.addr.split(':')[1], 10),
};
this._nodeConnectionDetailsCache[pubkey] = Object.assign({}, ret, { ts: +new Date() });
return ret;
}
}
}
}
getAddress(): string | false {
return false;
}
getSecret() {
return this.secret;
}
timeToRefreshBalance() {
return (+new Date() - this._lastBalanceFetch) / 1000 > 300; // 5 min
}
timeToRefreshTransaction() {
return (+new Date() - this._lastTxFetch) / 1000 > 300; // 5 min
}
async generate() {
const buf = await randomBytes(16);
this.secret = 'ldk://' + bip39.entropyToMnemonic(buf.toString('hex'));
}
getEntropyHex() {
let ret = bip39.mnemonicToEntropy(this.secret.replace('ldk://', ''));
while (ret.length < 64) ret = '0' + ret;
return ret;
}
getStorageNamespace() {
return RnLdk.getStorage().namespace;
}
static async _decodeInvoice(invoice: string) {
return bolt11.decode(invoice);
}
static async _script2address(scriptHex: string) {
return bitcoin.address.fromOutputScript(Buffer.from(scriptHex, 'hex'));
}
async selftest() {
await RnLdk.getStorage().selftest();
await RnLdk.selftest();
}
async init() {
if (!this.getSecret()) return;
console.warn('starting ldk');
try {
// providing simple functions that RnLdk would otherwise rely on 3rd party APIs
RnLdk.provideDecodeInvoiceFunc(LightningLdkWallet._decodeInvoice);
RnLdk.provideScript2addressFunc(LightningLdkWallet._script2address);
const syncedStorage = new SyncedAsyncStorage(this.getEntropyHex());
// await syncedStorage.selftest();
// await RnLdk.selftest();
// console.warn('selftest passed');
await syncedStorage.synchronize();
RnLdk.setStorage(syncedStorage);
if (this._refundAddressScriptHex) {
await RnLdk.setRefundAddressScript(this._refundAddressScriptHex);
} else {
// fallback, unwrapping address from bip39 mnemonic we have
const address = this.unwrapFirstExternalAddressFromMnemonics();
await this.setRefundAddress(address);
}
await RnLdk.start(this.getEntropyHex(), RNFS.DocumentDirectoryPath);
this._execInBackground(this.reestablishChannels);
if (this.timeToCheckBlockchain()) this._execInBackground(this.checkBlockchain);
} catch (error: any) {
presentAlert({ message: 'LDK init error: ' + error.message });
}
}
unwrapFirstExternalAddressFromMnemonics() {
if (this._unwrapFirstExternalAddressFromMnemonicsCache) return this._unwrapFirstExternalAddressFromMnemonicsCache; // cache hit
const hd = new HDSegwitBech32Wallet();
hd.setSecret(this.getSecret().replace('ldk://', ''));
const address = hd._getExternalAddressByIndex(0);
this._unwrapFirstExternalAddressFromMnemonicsCache = address;
return address;
}
unwrapFirstExternalWIFFromMnemonics() {
const hd = new HDSegwitBech32Wallet();
hd.setSecret(this.getSecret().replace('ldk://', ''));
return hd._getExternalWIFByIndex(0);
}
async checkBlockchain() {
this._lastTimeBlockchainCheckedTs = +new Date();
return RnLdk.checkBlockchain();
}
async payInvoice(invoice: string, freeAmount = 0) {
const decoded = this.decodeInvoice(invoice);
// if its NOT zero amount invoice, we forcefully reset passed amount argument so underlying LDK code
// would extract amount from bolt11
if (decoded.num_satoshis && parseInt(decoded.num_satoshis, 10) > 0) freeAmount = 0;
if (await this.channelsNeedReestablish()) {
await this.reestablishChannels();
await this.waitForAtLeastOneChannelBecomeActive();
}
const result = await RnLdk.payInvoice(invoice, freeAmount);
if (!result) throw new Error('Failed');
// ok, it was sent. now, waiting for an event that it was _actually_ paid:
for (let c = 0; c < 60; c++) {
await new Promise(resolve => setTimeout(resolve, 500)); // sleep
for (const sentPayment of RnLdk.sentPayments || []) {
const paidHash = LightningLdkWallet.preimage2hash(sentPayment.payment_preimage);
if (paidHash === decoded.payment_hash) {
this._listPayments = this._listPayments || [];
this._listPayments.push(
Object.assign({}, sentPayment, {
memo: decoded.description || 'Lightning payment',
value: (freeAmount || decoded.num_satoshis) * -1,
received: +new Date(),
payment_preimage: sentPayment.payment_preimage,
payment_hash: decoded.payment_hash,
}),
);
return;
}
}
for (const failedPayment of RnLdk.failedPayments || []) {
if (failedPayment.payment_hash === decoded.payment_hash) throw new Error(JSON.stringify(failedPayment));
}
}
// no? lets just throw timeout error
throw new Error('Payment timeout');
}
/**
* In case user initiated channel opening, and then lost peer connection (i.e. app went in background for an
* extended period of time), when user gets back to the app the channel might already have enough confirmations,
* but will never be acknowledged as 'established' by LDK until peer reconnects so that ldk & peer can negotiate and
* agree that channel is now established
*/
async reconnectPeersWithPendingChannels() {
const peers = await RnLdk.listPeers();
const peers2reconnect: Record<string, boolean> = {};
if (this._listChannels) {
for (const channel of this._listChannels) {
if (!channel.is_funding_locked) {
// pending channel
if (!peers.includes(channel.remote_node_id)) peers2reconnect[channel.remote_node_id] = true;
}
}
}
for (const pubkey of Object.keys(peers2reconnect)) {
const { host, port } = await this.lookupNodeConnectionDetailsByPubkey(pubkey);
await this.connectPeer(pubkey, host, port);
}
}
async getUserInvoices(limit: number | false = false) {
const newInvoices: any[] = [];
let found = false;
// okay, so the idea is that `this._listInvoices` is a persistent storage of invoices, while
// `RnLdk.receivedPayments` is only a temp storage of emitted events
// we iterate through all stored invoices
for (const invoice of this._listInvoices) {
const newInvoice = Object.assign({}, invoice);
// iterate through events of received payments
for (const receivedPayment of RnLdk.receivedPayments || []) {
if (receivedPayment.payment_hash === invoice.payment_hash) {
// match! this particular payment was paid
newInvoice.ispaid = true;
newInvoice.value = Math.floor(parseInt(receivedPayment.amt, 10) / 1000);
found = true;
}
}
newInvoices.push(newInvoice);
}
// overwrite stored array if flag was set
if (found) this._listInvoices = newInvoices;
return this._listInvoices;
}
isInvoiceGeneratedByWallet(paymentRequest: string) {
return Boolean(this?._listInvoices?.some(invoice => invoice.payment_request === paymentRequest));
}
weOwnAddress(address: string) {
return false;
}
async addInvoice(amtSat: number, memo: string) {
if (await this.channelsNeedReestablish()) {
await this.reestablishChannels();
await this.waitForAtLeastOneChannelBecomeActive();
}
if (this.getReceivableBalance() < amtSat) throw new Error('You dont have enough inbound capacity');
const paymentRequest = await RnLdk.addInvoice(amtSat * 1000, memo);
if (!paymentRequest) return false;
const decoded = this.decodeInvoice(paymentRequest);
this._listInvoices = this._listInvoices || [];
const tx = {
payment_request: paymentRequest,
ispaid: false,
timestamp: +new Date(),
expire_time: 3600 * 1000,
amt: amtSat,
type: 'user_invoice',
payment_hash: decoded.payment_hash,
description: memo || '',
};
this._listInvoices.push(tx);
return paymentRequest;
}
async getAddressAsync(): Promise<string> {
throw new Error('getAddressAsync: Not implemented');
}
async allowOnchainAddress(): Promise<boolean> {
throw new Error('allowOnchainAddress: Not implemented');
}
getTransactions() {
const ret = [];
for (const payment of this?._listPayments || []) {
const newTx = Object.assign({}, payment, {
type: 'paid_invoice',
walletID: this.getID(),
});
ret.push(newTx);
}
// ############################################
for (const invoice of this?._listInvoices || []) {
const tx = {
payment_request: invoice.payment_request,
ispaid: invoice.ispaid,
received: invoice.timestamp,
type: invoice.type,
value: invoice.value || invoice.amt,
memo: invoice.description,
timestamp: invoice.timestamp, // important
expire_time: invoice.expire_time, // important
walletID: this.getID(),
};
if (tx.ispaid || invoice.timestamp + invoice.expire_time > +new Date()) {
// expired non-paid invoices are not shown
ret.push(tx);
}
}
ret.sort(function (a, b) {
return b.received - a.received;
});
return ret;
}
async fetchTransactions() {
if (this.timeToCheckBlockchain()) {
try {
// exception might be in case of incompletely-started LDK
this._listChannels = await RnLdk.listChannels();
await this.checkBlockchain();
// ^^^ will be executed if above didnt throw exceptions, which means ldk fully started.
// we need this for a case when app returns from background if it was in bg for a really long time.
// ldk needs to update it's blockchain data, and this is practically the only place where it can
// do that (except on cold start)
} catch (_) {}
}
try {
await this.reconnectPeersWithPendingChannels();
} catch (error: any) {
console.log('fetchTransactions failed');
console.log(error.message);
}
await this.getUserInvoices(); // it internally updates paid user invoices
}
getBalance() {
let sum = 0;
if (this._listChannels) {
for (const channel of this._listChannels) {
if (!channel.is_funding_locked) continue; // pending channel
sum += Math.floor(parseInt(channel.outbound_capacity_msat, 10) / 1000);
}
}
return sum;
}
getReceivableBalance() {
let sum = 0;
if (this._listChannels) {
for (const channel of this._listChannels) {
if (!channel.is_funding_locked) continue; // pending channel
sum += Math.floor(parseInt(channel.inbound_capacity_msat, 10) / 1000);
}
}
return sum;
}
/**
* This method checks if there is balance on first unwapped address we have.
* This address is a fallback in case user has _no_ other wallets to withdraw onchain coins to, so closed-channel
* funds land on this address. Ofcourse, if user provided us a withdraw address, it should be stored in
* `this._refundAddressScriptHex` and its balance frankly is not our concern.
*
* @return {Promise<{confirmedBalance: number}>}
*/
async walletBalance() {
let confirmedSat = 0;
if (this._unwrapFirstExternalAddressFromMnemonicsCache) {
const response = await fetch('https://blockstream.info/api/address/' + this._unwrapFirstExternalAddressFromMnemonicsCache + '/utxo');
const json = await response.json();
if (json && Array.isArray(json)) {
for (const utxo of json) {
if (utxo?.status?.confirmed) {
confirmedSat += parseInt(utxo.value, 10);
}
}
}
}
return { confirmedBalance: confirmedSat };
}
async fetchBalance() {
await this.listChannels(); // updates channels
}
async claimCoins(address: string) {
console.log('unwrapping wif...');
const wif = this.unwrapFirstExternalWIFFromMnemonics();
const wallet = new SegwitBech32Wallet();
wallet.setSecret(String(wif));
console.log('fetching balance...');
await wallet.fetchUtxo();
console.log(wallet.getBalance(), wallet.getUtxo());
console.log('creating transaction...');
// @ts-ignore wtf wallet.getUtxo() and first arg of createTransaction are not compatible
const { tx } = wallet.createTransaction(wallet.getUtxo(), [{ address }], 2, address, 0, false, 0);
if (!tx) throw new Error('claimCoins: could not create transaction');
console.log('broadcasting...');
return await wallet.broadcastTx(tx.toHex());
}
async fetchInfo() {
throw new Error('fetchInfo: Not implemented');
}
allowReceive() {
return true;
}
async closeChannel(fundingTxidHex: string, force = false) {
return force ? await RnLdk.closeChannelForce(fundingTxidHex) : await RnLdk.closeChannelCooperatively(fundingTxidHex);
}
getLatestTransactionTime(): string | 0 {
if (this.getTransactions().length === 0) {
return 0;
}
let max = -1;
for (const tx of this.getTransactions()) {
if (tx.received) max = Math.max(tx.received, max);
}
return new Date(max).toString();
}
async getLogs() {
return RnLdk.getLogs()
.map(log => log.line)
.join('\n');
}
async getLogsWithTs() {
return RnLdk.getLogs()
.map(log => log.ts + ' ' + log.line)
.join('\n');
}
async fetchPendingTransactions() {}
async fetchUserInvoices() {
await this.getUserInvoices();
}
static preimage2hash(preimageHex: string): string {
const hash = bitcoin.crypto.sha256(Buffer.from(preimageHex, 'hex'));
return hash.toString('hex');
}
async reestablishChannels() {
const connectedInThisRun: any = {};
for (const channel of await this.listChannels()) {
if (channel.is_usable) continue; // already connected..?
if (connectedInThisRun[channel.remote_node_id]) continue; // already tried to reconnect (in case there are several channels with the same node)
const { pubkey, host, port } = await this.lookupNodeConnectionDetailsByPubkey(channel.remote_node_id);
await this.connectPeer(pubkey, host, port);
connectedInThisRun[pubkey] = true;
}
}
async channelsNeedReestablish() {
const freshListChannels = await this.listChannels();
const active = freshListChannels.filter(chan => !!chan.is_usable && chan.is_funding_locked).length;
return freshListChannels.length !== +active;
}
async waitForAtLeastOneChannelBecomeActive() {
const active = (await this.listChannels()).filter(chan => !!chan.is_usable).length;
for (let c = 0; c < 10; c++) {
await new Promise(resolve => setTimeout(resolve, 500)); // sleep
const freshListChannels = await this.listChannels();
const active2 = freshListChannels.filter(chan => !!chan.is_usable).length;
if (freshListChannels.length === +active2) return true; // all active kek
if (freshListChannels.length === 0) return true; // no channels at all
if (+active2 > +active) return true; // something became active, lets ret
}
return false;
}
async setRefundAddress(address: string) {
const script = bitcoin.address.toOutputScript(address);
this._refundAddressScriptHex = script.toString('hex');
await RnLdk.setRefundAddressScript(this._refundAddressScriptHex);
}
static async getVersion() {
return RnLdk.getVersion();
}
static getPackageVersion() {
return RnLdk.getPackageVersion();
}
getChannelsClosedEvents() {
return RnLdk.channelsClosed;
}
async purgeLocalStorage() {
return RnLdk.getStorage().purgeLocalStorage();
}
/**
* executes async function in background, so calling code can return immediately, while catching all thrown exceptions
* and showing them in alert() instead of propagating them up
*
* @param func {function} Async functino to execute
* @private
*/
_execInBackground(func: () => void) {
const that = this;
(async () => {
try {
await func.call(that);
} catch (error: any) {
presentAlert({ message: '_execInBackground error:' + error.message });
}
})();
}
}

View file

@ -11,7 +11,6 @@ import { HDSegwitElectrumSeedP2WPKHWallet } from './hd-segwit-electrum-seed-p2wp
import { HDSegwitP2SHWallet } from './hd-segwit-p2sh-wallet'; import { HDSegwitP2SHWallet } from './hd-segwit-p2sh-wallet';
import { LegacyWallet } from './legacy-wallet'; import { LegacyWallet } from './legacy-wallet';
import { LightningCustodianWallet } from './lightning-custodian-wallet'; import { LightningCustodianWallet } from './lightning-custodian-wallet';
import { LightningLdkWallet } from './lightning-ldk-wallet';
import { MultisigHDWallet } from './multisig-hd-wallet'; import { MultisigHDWallet } from './multisig-hd-wallet';
import { SegwitBech32Wallet } from './segwit-bech32-wallet'; import { SegwitBech32Wallet } from './segwit-bech32-wallet';
import { SegwitP2SHWallet } from './segwit-p2sh-wallet'; import { SegwitP2SHWallet } from './segwit-p2sh-wallet';
@ -133,7 +132,6 @@ export type TWallet =
| HDSegwitP2SHWallet | HDSegwitP2SHWallet
| LegacyWallet | LegacyWallet
| LightningCustodianWallet | LightningCustodianWallet
| LightningLdkWallet
| MultisigHDWallet | MultisigHDWallet
| SLIP39LegacyP2PKHWallet | SLIP39LegacyP2PKHWallet
| SLIP39SegwitBech32Wallet | SLIP39SegwitBech32Wallet

View file

@ -1,94 +0,0 @@
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import loc, { formatBalanceWithoutSuffix } from '../loc';
import { BitcoinUnit } from '../models/bitcoinUnits';
import { useTheme } from './themes';
interface LNNodeBarProps {
canReceive: number;
canSend: number;
nodeAlias?: string;
disabled?: boolean;
itemPriceUnit?: BitcoinUnit;
}
export const LNNodeBar: React.FC<LNNodeBarProps> = ({
canReceive = 0,
canSend = 0,
nodeAlias = '',
disabled = false,
itemPriceUnit = BitcoinUnit.SATS,
}) => {
const { colors } = useTheme();
const opacity = { opacity: disabled ? 0.5 : 1.0 };
const canSendBarFlex = {
flex: canReceive > 0 && canSend > 0 ? Math.abs(canSend / (canReceive + canSend)) * 1.0 : 1.0,
};
const stylesHook = StyleSheet.create({
nodeAlias: {
color: colors.alternativeTextColor2,
},
});
return (
<View style={[styles.root, opacity]}>
{nodeAlias.trim().length > 0 && <Text style={[styles.nodeAlias, stylesHook.nodeAlias]}>{nodeAlias}</Text>}
<View style={styles.canReceiveBar}>
<View style={styles.fullFlexDirectionRow}>
<View style={[styles.canSendBar, canSendBarFlex]} />
</View>
</View>
<View style={styles.containerBottomText}>
<View style={styles.containerBottomRightText}>
<Text style={styles.titleText}>{loc.lnd.can_send.toUpperCase()}</Text>
<Text style={styles.canSend}>{formatBalanceWithoutSuffix(canSend, itemPriceUnit, true).toString()}</Text>
</View>
<View style={styles.containerBottomLeftText}>
<Text style={styles.titleText}>{loc.lnd.can_receive.toUpperCase()}</Text>
<Text style={styles.canReceive}>{formatBalanceWithoutSuffix(canReceive, itemPriceUnit, true).toString()}</Text>
</View>
</View>
</View>
);
};
export default LNNodeBar;
const styles = StyleSheet.create({
root: {
flex: 1,
},
containerBottomText: {
flexDirection: 'row',
justifyContent: 'space-between',
marginTop: 16,
},
nodeAlias: {
marginVertical: 16,
},
canSendBar: {
height: 14,
maxHeight: 14,
backgroundColor: '#4E6CF5',
borderRadius: 6,
},
canReceiveBar: { backgroundColor: '#57B996', borderRadius: 6, height: 14, maxHeight: 14 },
fullFlexDirectionRow: {
flexDirection: 'row',
flex: 1,
},
containerBottomLeftText: {},
containerBottomRightText: {},
titleText: {
color: '#9AA0AA',
},
canReceive: {
color: '#57B996',
textAlign: 'right',
},
canSend: {
color: '#4E6CF5',
textAlign: 'left',
},
});

View file

@ -1,79 +0,0 @@
import React from 'react';
import { DimensionValue, Image, StyleSheet, TouchableOpacity, View } from 'react-native';
import { Text } from '@rneui/themed';
import { useTheme } from './themes';
interface LdkButtonProps {
text: string;
subtext: string;
active: boolean;
style: {
width: DimensionValue;
height: DimensionValue;
};
onPress: () => void;
}
export const LdkButton: React.FC<LdkButtonProps> = ({ text, subtext, active, style, onPress }) => {
const { colors } = useTheme();
const stylesHook = StyleSheet.create({
container: {
borderColor: (active && colors.lnborderColor) || colors.buttonDisabledBackgroundColor,
backgroundColor: colors.buttonDisabledBackgroundColor,
minWidth: style.width,
minHeight: style.height,
height: style.height,
},
text: {
color: colors.lnborderColor,
},
subtext: {
color: colors.alternativeTextColor,
},
});
return (
<TouchableOpacity accessibilityRole="button" onPress={onPress}>
<View style={[stylesHook.container, styles.container]}>
<View style={styles.contentContainer}>
<View>
<Image style={styles.image} source={require('../img/addWallet/lightning.png')} />
</View>
<View>
<Text style={[stylesHook.text, styles.text]}>{text}</Text>
<Text style={[stylesHook.subtext, styles.subtext]}>{subtext}</Text>
</View>
</View>
</View>
</TouchableOpacity>
);
};
const styles = StyleSheet.create({
container: {
borderWidth: 1.5,
borderRadius: 8,
flex: 1,
marginBottom: 8,
},
contentContainer: {
marginHorizontal: 16,
marginVertical: 10,
flexDirection: 'row',
alignItems: 'center',
},
image: {
width: 34,
height: 34,
marginRight: 8,
},
text: {
fontWeight: 'bold',
fontSize: 18,
},
subtext: {
fontSize: 13,
fontWeight: '500',
},
});

View file

@ -21,7 +21,7 @@ interface ListItemProps {
switch?: object; // Define more specific type if needed switch?: object; // Define more specific type if needed
leftIcon?: any; // Define more specific type if needed leftIcon?: any; // Define more specific type if needed
title: string; title: string;
subtitle?: string; subtitle?: string | React.ReactNode;
subtitleNumberOfLines?: number; subtitleNumberOfLines?: number;
rightTitle?: string; rightTitle?: string;
rightTitleStyle?: object; rightTitleStyle?: object;

View file

@ -0,0 +1,386 @@
import React, { useState, useRef, forwardRef, useImperativeHandle } from 'react';
import { View, Text, TouchableOpacity, TextInput, StyleSheet, Platform } from 'react-native';
import BottomModal, { BottomModalHandle } from './BottomModal';
import { useTheme } from './themes';
import loc from '../loc';
import { SecondButton } from './SecondButton';
interface NetworkTransactionFees {
fastestFee: number;
mediumFee: number;
slowFee: number;
}
interface FeePrecalc {
fastestFee: number | null;
mediumFee: number | null;
slowFee: number | null;
current: number | null;
}
interface Option {
label: string;
time: string;
fee: number | null;
rate: number;
active: boolean;
disabled?: boolean;
}
interface SelectFeeModalProps {
networkTransactionFees: NetworkTransactionFees;
feePrecalc: FeePrecalc;
feeRate: number | string;
setCustomFee: (fee: string) => void;
setFeePrecalc: (fn: (fp: FeePrecalc) => FeePrecalc) => void;
}
const SelectFeeModal = forwardRef<BottomModalHandle, SelectFeeModalProps>(
({ networkTransactionFees, feePrecalc, feeRate, setCustomFee, setFeePrecalc }, ref) => {
const [customFee, setCustomFeeState] = useState('');
const feeModalRef = useRef<BottomModalHandle>(null);
const customModalRef = useRef<BottomModalHandle>(null);
const nf = networkTransactionFees;
const { colors } = useTheme();
const stylesHook = StyleSheet.create({
loading: {
backgroundColor: colors.background,
},
root: {
backgroundColor: colors.elevated,
},
feeModalItemActive: {
backgroundColor: colors.feeActive,
},
feeModalLabel: {
color: colors.successColor,
},
feeModalTime: {
backgroundColor: colors.successColor,
},
feeModalTimeText: {
color: colors.background,
},
feeModalValue: {
color: colors.successColor,
},
feeModalCustomText: {
color: colors.buttonAlternativeTextColor,
},
selectLabel: {
color: colors.buttonTextColor,
},
of: {
color: colors.feeText,
},
memo: {
borderColor: colors.formBorder,
borderBottomColor: colors.formBorder,
backgroundColor: colors.inputBackgroundColor,
},
feeLabel: {
color: colors.feeText,
},
feeModalItemDisabled: {
backgroundColor: colors.buttonDisabledBackgroundColor,
},
feeModalItemTextDisabled: {
color: colors.buttonDisabledTextColor,
},
feeRow: {
backgroundColor: colors.feeLabel,
},
feeValue: {
color: colors.feeValue,
},
});
useImperativeHandle(ref, () => ({
present: async () => feeModalRef.current?.present(),
dismiss: async () => feeModalRef.current?.dismiss(),
}));
const options: Option[] = [
{
label: loc.send.fee_fast,
time: loc.send.fee_10m,
fee: feePrecalc.fastestFee,
rate: nf.fastestFee,
active: Number(feeRate) === nf.fastestFee,
},
{
label: loc.send.fee_medium,
time: loc.send.fee_3h,
fee: feePrecalc.mediumFee,
rate: nf.mediumFee,
active: Number(feeRate) === nf.mediumFee,
disabled: nf.mediumFee === nf.fastestFee,
},
{
label: loc.send.fee_slow,
time: loc.send.fee_1d,
fee: feePrecalc.slowFee,
rate: nf.slowFee,
active: Number(feeRate) === nf.slowFee,
disabled: nf.slowFee === nf.mediumFee || nf.slowFee === nf.fastestFee,
},
];
const formatFee = (fee: number | null): string => {
return fee ? `${fee} sat/vB` : '';
};
const handleCustomFeeSubmit = async () => {
if (!/^\d+$/.test(customFee) || Number(customFee) <= 0) {
// Handle error if necessary
return;
}
const fee = Number(customFee) < 1 ? '1' : customFee;
setCustomFee(fee);
await customModalRef.current?.dismiss();
await feeModalRef.current?.dismiss();
};
const handleCancel = async () => {
setCustomFeeState('');
await customModalRef.current?.dismiss();
};
const handlePressCustom = async () => {
await customModalRef.current?.present();
};
const handleSelectOption = async (fee: number | null, rate: number) => {
setFeePrecalc(fp => ({ ...fp, current: fee }));
await feeModalRef.current?.dismiss();
setCustomFee(rate.toString());
};
return (
<BottomModal
ref={feeModalRef}
backgroundColor={colors.modal}
contentContainerStyle={[styles.modalContent, styles.modalContentMinHeight]}
footerDefaultMargins
footer={
<View style={styles.feeModalFooter}>
<TouchableOpacity testID="feeCustom" accessibilityRole="button" onPress={handlePressCustom}>
<Text style={[styles.feeModalCustomText, stylesHook.feeModalCustomText]}>{loc.send.fee_custom}</Text>
</TouchableOpacity>
</View>
}
>
<View style={styles.paddingTop66}>
{options.map(({ label, time, fee, rate, active, disabled }) => (
<TouchableOpacity
accessibilityRole="button"
key={label}
disabled={disabled}
onPress={() => handleSelectOption(fee, rate)}
style={[styles.feeModalItem, active && styles.feeModalItemActive, active && !disabled && stylesHook.feeModalItemActive]}
>
<View style={styles.feeModalRow}>
<Text style={[styles.feeModalLabel, disabled ? stylesHook.feeModalItemTextDisabled : stylesHook.feeModalLabel]}>
{label}
</Text>
<View style={[styles.feeModalTime, disabled ? stylesHook.feeModalItemDisabled : stylesHook.feeModalTime]}>
<Text style={stylesHook.feeModalTimeText}>~{time}</Text>
</View>
</View>
<View style={styles.feeModalRow}>
<Text style={disabled ? stylesHook.feeModalItemTextDisabled : stylesHook.feeModalValue}>{fee && formatFee(fee)}</Text>
<Text style={disabled ? stylesHook.feeModalItemTextDisabled : stylesHook.feeModalValue}>
{rate} {loc.units.sat_vbyte}
</Text>
</View>
</TouchableOpacity>
))}
</View>
<BottomModal
ref={customModalRef}
backgroundColor={colors.modal}
showCloseButton={false}
contentContainerStyle={[styles.modalContent, styles.modalContentMinHeight]}
footer={
<View style={[styles.feeModalFooter, styles.feeModalFooterSpacing]}>
<SecondButton title={loc._.cancel} onPress={handleCancel} />
<View style={styles.feeModalFooterSpacing} />
<SecondButton title={loc._.ok} onPress={handleCustomFeeSubmit} disabled={!customFee || Number(customFee) <= 0} />
</View>
}
footerDefaultMargins
>
<View style={styles.paddingTop30}>
<Text style={[styles.feeModalLabel, stylesHook.feeModalLabel]}>{loc.send.insert_custom_fee}</Text>
<View style={styles.optionsContent} />
<TextInput
style={[styles.feeModalLabel, stylesHook.feeModalLabel, styles.customFeeTextInput]}
keyboardType="numeric"
placeholder={loc.send.create_fee}
value={customFee}
onChangeText={setCustomFeeState}
autoFocus
/>
</View>
</BottomModal>
</BottomModal>
);
},
);
export default SelectFeeModal;
const styles = StyleSheet.create({
loading: {
flex: 1,
paddingTop: 20,
},
root: {
flex: 1,
justifyContent: 'space-between',
},
scrollViewContent: {
flexDirection: 'row',
},
scrollViewIndicator: {
top: 0,
left: 8,
bottom: 0,
right: 8,
},
modalContent: {
margin: 22,
},
modalContentMinHeight: Platform.OS === 'android' ? { minHeight: 400 } : {},
paddingTop66: { paddingVertical: 66 },
paddingTop30: { paddingBottom: 60, paddingTop: 30 },
optionsContent: {
padding: 22,
},
feeModalItem: {
paddingHorizontal: 16,
paddingVertical: 8,
marginBottom: 10,
},
feeModalItemActive: {
borderRadius: 8,
},
feeModalRow: {
justifyContent: 'space-between',
flexDirection: 'row',
alignItems: 'center',
},
feeModalLabel: {
fontSize: 22,
fontWeight: '600',
},
customFeeTextInput: {
backgroundColor: '#FFFFFF',
borderColor: '#9aa0aa',
borderWidth: 1,
borderRadius: 4,
padding: 8,
marginVertical: 8,
fontSize: 16,
},
feeModalTime: {
borderRadius: 5,
paddingHorizontal: 6,
paddingVertical: 3,
},
feeModalCustomText: {
fontSize: 15,
fontWeight: '600',
},
createButton: {
marginVertical: 16,
marginHorizontal: 16,
alignContent: 'center',
minHeight: 44,
},
select: {
marginBottom: 24,
marginHorizontal: 24,
alignItems: 'center',
},
selectTouch: {
flexDirection: 'row',
alignItems: 'center',
},
selectText: {
color: '#9aa0aa',
fontSize: 14,
marginRight: 8,
},
selectWrap: {
flexDirection: 'row',
alignItems: 'center',
marginVertical: 4,
},
selectLabel: {
fontSize: 14,
},
of: {
alignSelf: 'flex-end',
marginRight: 18,
marginVertical: 8,
},
feeModalFooter: {
paddingBottom: 36,
flexDirection: 'row',
justifyContent: 'space-between',
},
feeModalFooterSpacing: {
paddingHorizontal: 24,
},
memo: {
flexDirection: 'row',
borderWidth: 1,
borderBottomWidth: 0.5,
minHeight: 44,
height: 44,
marginHorizontal: 20,
alignItems: 'center',
marginVertical: 8,
borderRadius: 4,
},
memoText: {
flex: 1,
marginHorizontal: 8,
minHeight: 33,
color: '#81868e',
},
fee: {
flexDirection: 'row',
marginHorizontal: 20,
justifyContent: 'space-between',
alignItems: 'center',
},
feeLabel: {
fontSize: 14,
},
feeRow: {
minWidth: 40,
height: 25,
borderRadius: 4,
justifyContent: 'space-between',
flexDirection: 'row',
alignItems: 'center',
paddingHorizontal: 10,
},
advancedOptions: {
minWidth: 40,
height: 40,
justifyContent: 'center',
},
feeModalCloseButton: {
paddingHorizontal: 10,
paddingVertical: 8,
},
feeModalCloseButtonText: {
color: '#007AFF',
},
});

View file

@ -1,7 +1,7 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import AsyncStorage from '@react-native-async-storage/async-storage'; import AsyncStorage from '@react-native-async-storage/async-storage';
import Clipboard from '@react-native-clipboard/clipboard'; import Clipboard from '@react-native-clipboard/clipboard';
import { Linking, View } from 'react-native'; import { Linking, View, ViewStyle } from 'react-native';
import Lnurl from '../class/lnurl'; import Lnurl from '../class/lnurl';
import { LightningTransaction, Transaction } from '../class/wallets/types'; import { LightningTransaction, Transaction } from '../class/wallets/types';
import TransactionExpiredIcon from '../components/icons/TransactionExpiredIcon'; import TransactionExpiredIcon from '../components/icons/TransactionExpiredIcon';
@ -23,16 +23,21 @@ import { DetailViewStackParamList } from '../navigation/DetailViewStackParamList
import { useStorage } from '../hooks/context/useStorage'; import { useStorage } from '../hooks/context/useStorage';
import ToolTipMenu from './TooltipMenu'; import ToolTipMenu from './TooltipMenu';
import { CommonToolTipActions } from '../typings/CommonToolTipActions'; import { CommonToolTipActions } from '../typings/CommonToolTipActions';
import { pop } from '../NavigationService';
interface TransactionListItemProps { interface TransactionListItemProps {
itemPriceUnit: BitcoinUnit; itemPriceUnit: BitcoinUnit;
walletID: string; walletID: string;
item: Transaction & LightningTransaction; // using type intersection to have less issues with ts item: Transaction & LightningTransaction; // using type intersection to have less issues with ts
searchQuery?: string;
style?: ViewStyle;
renderHighlightedText?: (text: string, query: string) => JSX.Element;
} }
type NavigationProps = NativeStackNavigationProp<DetailViewStackParamList>; type NavigationProps = NativeStackNavigationProp<DetailViewStackParamList>;
export const TransactionListItem: React.FC<TransactionListItemProps> = React.memo(({ item, itemPriceUnit = BitcoinUnit.BTC, walletID }) => { export const TransactionListItem: React.FC<TransactionListItemProps> = React.memo(
({ item, itemPriceUnit = BitcoinUnit.BTC, walletID, searchQuery, style, renderHighlightedText }) => {
const [subtitleNumberOfLines, setSubtitleNumberOfLines] = useState(1); const [subtitleNumberOfLines, setSubtitleNumberOfLines] = useState(1);
const { colors } = useTheme(); const { colors } = useTheme();
const { navigate } = useExtendedNavigation<NavigationProps>(); const { navigate } = useExtendedNavigation<NavigationProps>();
@ -47,6 +52,8 @@ export const TransactionListItem: React.FC<TransactionListItemProps> = React.mem
[colors.lightBorder], [colors.lightBorder],
); );
const combinedStyle = useMemo(() => [containerStyle, style], [containerStyle, style]);
const shortenContactName = (name: string): string => { const shortenContactName = (name: string): string => {
if (name.length < 16) return name; if (name.length < 16) return name;
return name.substr(0, 7) + '...' + name.substr(name.length - 7, 7); return name.substr(0, 7) + '...' + name.substr(name.length - 7, 7);
@ -198,6 +205,7 @@ export const TransactionListItem: React.FC<TransactionListItemProps> = React.mem
const onPress = useCallback(async () => { const onPress = useCallback(async () => {
menuRef?.current?.dismissMenu?.(); menuRef?.current?.dismissMenu?.();
if (item.hash) { if (item.hash) {
pop();
navigate('TransactionStatus', { hash: item.hash, walletID }); navigate('TransactionStatus', { hash: item.hash, walletID });
} else if (item.type === 'user_invoice' || item.type === 'payment_request' || item.type === 'paid_invoice') { } else if (item.type === 'user_invoice' || item.type === 'payment_request' || item.type === 'paid_invoice') {
const lightningWallet = wallets.filter(wallet => wallet?.getID() === item.walletID); const lightningWallet = wallets.filter(wallet => wallet?.getID() === item.walletID);
@ -222,7 +230,7 @@ export const TransactionListItem: React.FC<TransactionListItemProps> = React.mem
return; return;
} }
} catch (e) { } catch (e) {
console.log(e); console.debug(e);
} }
navigate('LNDViewInvoice', { navigate('LNDViewInvoice', {
@ -321,14 +329,15 @@ export const TransactionListItem: React.FC<TransactionListItemProps> = React.mem
leftAvatar={avatar} leftAvatar={avatar}
title={title} title={title}
subtitleNumberOfLines={subtitleNumberOfLines} subtitleNumberOfLines={subtitleNumberOfLines}
subtitle={subtitle} subtitle={subtitle ? (renderHighlightedText ? renderHighlightedText(subtitle, searchQuery ?? '') : subtitle) : undefined}
Component={View} Component={View}
subtitleProps={subtitleProps} subtitleProps={subtitleProps}
chevron={false} chevron={false}
rightTitle={rowTitle} rightTitle={rowTitle}
rightTitleStyle={rowTitleStyle} rightTitleStyle={rowTitleStyle}
containerStyle={containerStyle} containerStyle={combinedStyle}
/> />
</ToolTipMenu> </ToolTipMenu>
); );
}); },
);

View file

@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import Clipboard from '@react-native-clipboard/clipboard'; import Clipboard from '@react-native-clipboard/clipboard';
import { I18nManager, Image, LayoutAnimation, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import { I18nManager, Image, LayoutAnimation, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
import LinearGradient from 'react-native-linear-gradient'; import LinearGradient from 'react-native-linear-gradient';
import { LightningCustodianWallet, LightningLdkWallet, MultisigHDWallet } from '../class'; import { LightningCustodianWallet, MultisigHDWallet } from '../class';
import WalletGradient from '../class/wallet-gradient'; import WalletGradient from '../class/wallet-gradient';
import { TWallet } from '../class/wallets/types'; import { TWallet } from '../class/wallets/types';
import loc, { formatBalance, formatBalanceWithoutSuffix } from '../loc'; import loc, { formatBalance, formatBalanceWithoutSuffix } from '../loc';
@ -184,7 +184,6 @@ const TransactionsNavigationHeader: React.FC<TransactionsNavigationHeaderProps>
<Image <Image
source={(() => { source={(() => {
switch (wallet.type) { switch (wallet.type) {
case LightningLdkWallet.type:
case LightningCustodianWallet.type: case LightningCustodianWallet.type:
return I18nManager.isRTL ? require('../img/lnd-shape-rtl.png') : require('../img/lnd-shape.png'); return I18nManager.isRTL ? require('../img/lnd-shape-rtl.png') : require('../img/lnd-shape.png');
case MultisigHDWallet.type: case MultisigHDWallet.type:
@ -231,7 +230,7 @@ const TransactionsNavigationHeader: React.FC<TransactionsNavigationHeaderProps>
<TouchableOpacity style={styles.walletPreferredUnitView} onPress={changeWalletBalanceUnit}> <TouchableOpacity style={styles.walletPreferredUnitView} onPress={changeWalletBalanceUnit}>
<Text style={styles.walletPreferredUnitText}> <Text style={styles.walletPreferredUnitText}>
{wallet.getPreferredBalanceUnit() === BitcoinUnit.LOCAL_CURRENCY {wallet.getPreferredBalanceUnit() === BitcoinUnit.LOCAL_CURRENCY
? (preferredFiatCurrency?.endPointKey ?? FiatUnit.USD) ? preferredFiatCurrency?.endPointKey ?? FiatUnit.USD
: wallet.getPreferredBalanceUnit()} : wallet.getPreferredBalanceUnit()}
</Text> </Text>
</TouchableOpacity> </TouchableOpacity>
@ -247,16 +246,6 @@ const TransactionsNavigationHeader: React.FC<TransactionsNavigationHeaderProps>
<Text style={styles.manageFundsButtonText}>{loc.lnd.title}</Text> <Text style={styles.manageFundsButtonText}>{loc.lnd.title}</Text>
</ToolTipMenu> </ToolTipMenu>
)} )}
{wallet.type === LightningLdkWallet.type && (
<TouchableOpacity
style={styles.manageFundsButton}
accessibilityRole="button"
accessibilityLabel={loc.lnd.title}
onPress={() => handleManageFundsPressed()}
>
<Text style={styles.manageFundsButtonText}>{loc.lnd.title}</Text>
</TouchableOpacity>
)}
{wallet.type === MultisigHDWallet.type && ( {wallet.type === MultisigHDWallet.type && (
<TouchableOpacity style={styles.manageFundsButton} accessibilityRole="button" onPress={() => handleManageFundsPressed()}> <TouchableOpacity style={styles.manageFundsButton} accessibilityRole="button" onPress={() => handleManageFundsPressed()}>
<Text style={styles.manageFundsButtonText}>{loc.multisig.manage_keys}</Text> <Text style={styles.manageFundsButtonText}>{loc.multisig.manage_keys}</Text>

View file

@ -8,7 +8,6 @@ import {
Pressable, Pressable,
StyleSheet, StyleSheet,
Text, Text,
TouchableOpacity,
useWindowDimensions, useWindowDimensions,
View, View,
FlatListProps, FlatListProps,
@ -17,7 +16,7 @@ import {
} from 'react-native'; } from 'react-native';
import LinearGradient from 'react-native-linear-gradient'; import LinearGradient from 'react-native-linear-gradient';
import { BlueSpacing10 } from '../BlueComponents'; import { BlueSpacing10 } from '../BlueComponents';
import { LightningCustodianWallet, LightningLdkWallet, MultisigHDWallet } from '../class'; import { LightningCustodianWallet, MultisigHDWallet } from '../class';
import WalletGradient from '../class/wallet-gradient'; import WalletGradient from '../class/wallet-gradient';
import { useIsLargeScreen } from '../hooks/useIsLargeScreen'; import { useIsLargeScreen } from '../hooks/useIsLargeScreen';
import loc, { formatBalance, transactionTimeToReadable } from '../loc'; import loc, { formatBalance, transactionTimeToReadable } from '../loc';
@ -73,12 +72,7 @@ const NewWalletPanel: React.FC<NewWalletPanelProps> = ({ onPress }) => {
}); });
return ( return (
<TouchableOpacity <Pressable accessibilityRole="button" testID="CreateAWallet" onPress={onPress} style={isLargeScreen ? {} : { width: itemWidth * 1.2 }}>
accessibilityRole="button"
testID="CreateAWallet"
onPress={onPress}
style={isLargeScreen ? {} : { width: itemWidth * 1.2 }}
>
<View <View
style={[ style={[
nStyles.container, nStyles.container,
@ -93,7 +87,7 @@ const NewWalletPanel: React.FC<NewWalletPanelProps> = ({ onPress }) => {
<Text style={[nStyles.buttonText, { color: colors.brandingColor }]}>{loc.wallets.list_create_a_button}</Text> <Text style={[nStyles.buttonText, { color: colors.brandingColor }]}>{loc.wallets.list_create_a_button}</Text>
</View> </View>
</View> </View>
</TouchableOpacity> </Pressable>
); );
}; };
@ -105,7 +99,8 @@ interface WalletCarouselItemProps {
customStyle?: ViewStyle; customStyle?: ViewStyle;
horizontal?: boolean; horizontal?: boolean;
isActive?: boolean; isActive?: boolean;
allowOnPressAnimation?: boolean; searchQuery?: string;
renderHighlightedText?: (text: string, query: string) => JSX.Element;
} }
const iStyles = StyleSheet.create({ const iStyles = StyleSheet.create({
@ -168,7 +163,7 @@ const iStyles = StyleSheet.create({
}); });
export const WalletCarouselItem: React.FC<WalletCarouselItemProps> = React.memo( export const WalletCarouselItem: React.FC<WalletCarouselItemProps> = React.memo(
({ item, onPress, handleLongPress, isSelectedWallet, customStyle, horizontal, allowOnPressAnimation = true }) => { ({ item, onPress, handleLongPress, isSelectedWallet, customStyle, horizontal, searchQuery, renderHighlightedText }) => {
const scaleValue = useRef(new Animated.Value(1.0)).current; const scaleValue = useRef(new Animated.Value(1.0)).current;
const { colors } = useTheme(); const { colors } = useTheme();
const { walletTransactionUpdateStatus } = useStorage(); const { walletTransactionUpdateStatus } = useStorage();
@ -202,7 +197,6 @@ export const WalletCarouselItem: React.FC<WalletCarouselItemProps> = React.memo(
const opacity = isSelectedWallet === false ? 0.5 : 1.0; const opacity = isSelectedWallet === false ? 0.5 : 1.0;
let image; let image;
switch (item.type) { switch (item.type) {
case LightningLdkWallet.type:
case LightningCustodianWallet.type: case LightningCustodianWallet.type:
image = I18nManager.isRTL ? require('../img/lnd-shape-rtl.png') : require('../img/lnd-shape.png'); image = I18nManager.isRTL ? require('../img/lnd-shape-rtl.png') : require('../img/lnd-shape.png');
break; break;
@ -227,15 +221,15 @@ export const WalletCarouselItem: React.FC<WalletCarouselItemProps> = React.memo(
return ( return (
<Animated.View <Animated.View
style={[ style={[
isLargeScreen || !horizontal ? [iStyles.rootLargeDevice, customStyle] : (customStyle ?? { ...iStyles.root, width: itemWidth }), isLargeScreen || !horizontal ? [iStyles.rootLargeDevice, customStyle] : customStyle ?? { ...iStyles.root, width: itemWidth },
{ opacity, transform: [{ scale: scaleValue }] }, { opacity, transform: [{ scale: scaleValue }] },
]} ]}
> >
<Pressable <Pressable
accessibilityRole="button" accessibilityRole="button"
testID={item.getLabel()} testID={item.getLabel()}
onPressIn={allowOnPressAnimation ? onPressedIn : undefined} onPressIn={onPressedIn}
onPressOut={allowOnPressAnimation ? onPressedOut : undefined} onPressOut={onPressedOut}
onLongPress={() => { onLongPress={() => {
if (handleLongPress) handleLongPress(); if (handleLongPress) handleLongPress();
}} }}
@ -246,7 +240,7 @@ export const WalletCarouselItem: React.FC<WalletCarouselItemProps> = React.memo(
<Image source={image} style={iStyles.image} /> <Image source={image} style={iStyles.image} />
<Text style={iStyles.br} /> <Text style={iStyles.br} />
<Text numberOfLines={1} style={[iStyles.label, { color: colors.inverseForegroundColor }]}> <Text numberOfLines={1} style={[iStyles.label, { color: colors.inverseForegroundColor }]}>
{item.getLabel()} {renderHighlightedText && searchQuery ? renderHighlightedText(item.getLabel(), searchQuery) : item.getLabel()}
</Text> </Text>
<View style={iStyles.balanceContainer}> <View style={iStyles.balanceContainer}>
{item.hideBalance ? ( {item.hideBalance ? (
@ -288,6 +282,8 @@ interface WalletsCarouselProps extends Partial<FlatListProps<any>> {
handleLongPress?: () => void; handleLongPress?: () => void;
data: TWallet[]; data: TWallet[];
scrollEnabled?: boolean; scrollEnabled?: boolean;
searchQuery?: string;
renderHighlightedText?: (text: string, query: string) => JSX.Element;
} }
type FlatListRefType = FlatList<any> & { type FlatListRefType = FlatList<any> & {
@ -316,7 +312,17 @@ const cStyles = StyleSheet.create({
const ListHeaderComponent: React.FC = () => <View style={cStyles.separatorStyle} />; const ListHeaderComponent: React.FC = () => <View style={cStyles.separatorStyle} />;
const WalletsCarousel = forwardRef<FlatListRefType, WalletsCarouselProps>((props, ref) => { const WalletsCarousel = forwardRef<FlatListRefType, WalletsCarouselProps>((props, ref) => {
const { horizontal, data, handleLongPress, onPress, selectedWallet, scrollEnabled, onNewWalletPress } = props; const {
horizontal,
data,
handleLongPress,
onPress,
selectedWallet,
scrollEnabled,
onNewWalletPress,
searchQuery,
renderHighlightedText,
} = props;
const renderItem = useCallback( const renderItem = useCallback(
({ item, index }: ListRenderItemInfo<TWallet>) => ({ item, index }: ListRenderItemInfo<TWallet>) =>
item ? ( item ? (
@ -326,14 +332,18 @@ const WalletsCarousel = forwardRef<FlatListRefType, WalletsCarouselProps>((props
handleLongPress={handleLongPress} handleLongPress={handleLongPress}
onPress={onPress} onPress={onPress}
horizontal={horizontal} horizontal={horizontal}
searchQuery={searchQuery}
renderHighlightedText={renderHighlightedText}
/> />
) : null, ) : null,
[horizontal, selectedWallet, handleLongPress, onPress], [horizontal, selectedWallet, handleLongPress, onPress, searchQuery, renderHighlightedText],
); );
const flatListRef = useRef<FlatList<any>>(null); const flatListRef = useRef<FlatList<any>>(null);
useImperativeHandle(ref, (): any => { useImperativeHandle(
ref,
(): any => {
return { return {
scrollToEnd: (params: { animated?: boolean | null | undefined } | undefined) => flatListRef.current?.scrollToEnd(params), scrollToEnd: (params: { animated?: boolean | null | undefined } | undefined) => flatListRef.current?.scrollToEnd(params),
scrollToIndex: (params: { scrollToIndex: (params: {
@ -353,7 +363,9 @@ const WalletsCarousel = forwardRef<FlatListRefType, WalletsCarouselProps>((props
flashScrollIndicators: () => flatListRef.current?.flashScrollIndicators(), flashScrollIndicators: () => flatListRef.current?.flashScrollIndicators(),
getNativeScrollRef: () => flatListRef.current?.getNativeScrollRef(), getNativeScrollRef: () => flatListRef.current?.getNativeScrollRef(),
}; };
}, []); },
[],
);
const onScrollToIndexFailed = (error: { averageItemLength: number; index: number }): void => { const onScrollToIndexFailed = (error: { averageItemLength: number; index: number }): void => {
console.debug('onScrollToIndexFailed'); console.debug('onScrollToIndexFailed');
@ -402,6 +414,8 @@ const WalletsCarousel = forwardRef<FlatListRefType, WalletsCarouselProps>((props
handleLongPress={handleLongPress} handleLongPress={handleLongPress}
onPress={onPress} onPress={onPress}
key={index} key={index}
searchQuery={props.searchQuery}
renderHighlightedText={props.renderHighlightedText}
/> />
) : null, ) : null,
)} )}

View file

@ -0,0 +1,26 @@
import { useEffect, useRef } from 'react';
import { Animated } from 'react-native';
const useBounceAnimation = (query: string) => {
const bounceAnim = useRef(new Animated.Value(1.0)).current;
useEffect(() => {
if (query) {
Animated.timing(bounceAnim, {
toValue: 1.2,
duration: 150,
useNativeDriver: true,
}).start(() => {
Animated.timing(bounceAnim, {
toValue: 1.0,
duration: 150,
useNativeDriver: true,
}).start();
});
}
}, [bounceAnim, query]);
return bounceAnim;
};
export default useBounceAnimation;

View file

@ -1,386 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LSMinimumSystemVersion</key>
<string>11</string>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>io.bluewallet.bluewallet.fetchTxsForWallet</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>BlueWallet</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>PSBT</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>io.bluewallet.psbt</string>
</array>
</dict>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>TXN</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>io.bluewallet.psbt.txn</string>
</array>
</dict>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>ELECTRUMBACKUP</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>io.bluewallet.backup</string>
</array>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>JSON File</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>public.json</string>
</array>
</dict>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>BW COSIGNER</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>io.bluewallet.bwcosigner</string>
</array>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>bitcoin</string>
<string>lightning</string>
<string>bluewallet</string>
<string>lapp</string>
<string>blue</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.finance</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>http</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>onion</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>tailscale.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>ts.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
<key>NSCameraUsageDescription</key>
<string>In order to quickly scan the recipient&apos;s address, we need your permission to use the camera to scan their QR Code.</string>
<key>NSFaceIDUsageDescription</key>
<string>In order to use FaceID please confirm your permission.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Your authorization is required to save this image.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>In order to import an image for scanning, we need your permission to access your photo library.</string>
<key>NSUserActivityTypes</key>
<array>
<string>io.bluewallet.bluewallet.receiveonchain</string>
<string>io.bluewallet.bluewallet.xpub</string>
</array>
<key>UIAppFonts</key>
<array>
<string>Entypo.ttf</string>
<string>FontAwesome.ttf</string>
<string>FontAwesome5_Brands.ttf</string>
<string>FontAwesome5_Regular.ttf</string>
<string>FontAwesome5_Solid.ttf</string>
<string>Ionicons.ttf</string>
<string>MaterialIcons.ttf</string>
<string>Octicons.ttf</string>
</array>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>processing</string>
<string>remote-notification</string>
</array>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Partially Signed Bitcoin Transaction</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.psbt</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>psbt</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.json</string>
</array>
<key>UTTypeDescription</key>
<string>BW COSIGNER</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.bwcosigner</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>bwcosigner</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Bitcoin Transaction</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.psbt.txn</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>txn</string>
</array>
</dict>
</dict>
</array>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>JSON File</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>public.json</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>json</string>
</array>
<key>public.mime-type</key>
<array>
<string>application/json</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Partially Signed Bitcoin Transaction</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.psbt</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>psbt</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Bitcoin Transaction</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.psbt.txn</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>txn</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Electrum Backup</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.backup</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>backup</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.json</string>
</array>
<key>UTTypeDescription</key>
<string>BW COSIGNER</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>io.bluewallet.bwcosigner</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>bwcosigner</string>
</array>
</dict>
</dict>
</array>
<key>bugsnag</key>
<dict>
<key>apiKey</key>
<string>17ba9059f676f1cc4f45d98182388b01</string>
</dict>
</dict>
</plist>

View file

@ -9,7 +9,6 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
2B2B129397ACA4E7FCCB4F6F /* libPods-BlueWallet-NoLDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52FA0F1447D69747BD547E1E /* libPods-BlueWallet-NoLDK.a */; };
32B5A32A2334450100F8D608 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5A3292334450100F8D608 /* Bridge.swift */; }; 32B5A32A2334450100F8D608 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5A3292334450100F8D608 /* Bridge.swift */; };
32F0A29A2311DBB20095C559 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F0A2992311DBB20095C559 /* ComplicationController.swift */; }; 32F0A29A2311DBB20095C559 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F0A2992311DBB20095C559 /* ComplicationController.swift */; };
6D2A6464258BA92D0092292B /* Stickers.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D2A6463258BA92D0092292B /* Stickers.xcassets */; }; 6D2A6464258BA92D0092292B /* Stickers.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D2A6463258BA92D0092292B /* Stickers.xcassets */; };
@ -59,13 +58,11 @@
B40D4E632258425500428FCC /* ReceiveInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40D4E5B2258425500428FCC /* ReceiveInterfaceController.swift */; }; B40D4E632258425500428FCC /* ReceiveInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40D4E5B2258425500428FCC /* ReceiveInterfaceController.swift */; };
B40D4E642258425500428FCC /* WalletDetailsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40D4E5C2258425500428FCC /* WalletDetailsInterfaceController.swift */; }; B40D4E642258425500428FCC /* WalletDetailsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40D4E5C2258425500428FCC /* WalletDetailsInterfaceController.swift */; };
B40FC3FA29CCD1D00007EBAC /* SwiftTCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40FC3F829CCD1AC0007EBAC /* SwiftTCPClient.swift */; }; B40FC3FA29CCD1D00007EBAC /* SwiftTCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40FC3F829CCD1AC0007EBAC /* SwiftTCPClient.swift */; };
B411DA832C2F1D3700115221 /* SwiftTCPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B40FC3F829CCD1AC0007EBAC /* SwiftTCPClient.swift */; };
B41B76852B66B2FF002C48D5 /* Bugsnag in Frameworks */ = {isa = PBXBuildFile; productRef = B41B76842B66B2FF002C48D5 /* Bugsnag */; }; B41B76852B66B2FF002C48D5 /* Bugsnag in Frameworks */ = {isa = PBXBuildFile; productRef = B41B76842B66B2FF002C48D5 /* Bugsnag */; };
B41B76872B66B2FF002C48D5 /* BugsnagNetworkRequestPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = B41B76862B66B2FF002C48D5 /* BugsnagNetworkRequestPlugin */; }; B41B76872B66B2FF002C48D5 /* BugsnagNetworkRequestPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = B41B76862B66B2FF002C48D5 /* BugsnagNetworkRequestPlugin */; };
B41C2E562BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; }; B41C2E562BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; };
B41C2E572BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; }; B41C2E572BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; };
B41C2E582BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; }; B41C2E582BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; };
B41C2E592BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B41C2E552BB3DCB8000FE097 /* PrivacyInfo.xcprivacy */; };
B43D0378225847C500FBAA95 /* WalletGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0372225847C500FBAA95 /* WalletGradient.swift */; }; B43D0378225847C500FBAA95 /* WalletGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0372225847C500FBAA95 /* WalletGradient.swift */; };
B43D0379225847C500FBAA95 /* WatchDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0373225847C500FBAA95 /* WatchDataSource.swift */; }; B43D0379225847C500FBAA95 /* WatchDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0373225847C500FBAA95 /* WatchDataSource.swift */; };
B43D037A225847C500FBAA95 /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0374225847C500FBAA95 /* Transaction.swift */; }; B43D037A225847C500FBAA95 /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B43D0374225847C500FBAA95 /* Transaction.swift */; };
@ -75,112 +72,65 @@
B44033BF2BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; }; B44033BF2BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; };
B44033C02BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; }; B44033C02BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; };
B44033C12BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; }; B44033C12BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; };
B44033C22BCC32F800162242 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; };
B44033C42BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; }; B44033C42BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; };
B44033C52BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; }; B44033C52BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; };
B44033C62BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; }; B44033C62BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; };
B44033C72BCC332400162242 /* Balance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C32BCC332400162242 /* Balance.swift */; };
B44033CA2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; }; B44033CA2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; };
B44033CB2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; }; B44033CB2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; };
B44033CC2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; }; B44033CC2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; };
B44033CD2BCC350A00162242 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; };
B44033CE2BCC352900162242 /* UserDefaultsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA7047D254E24D5005FE5E2 /* UserDefaultsGroup.swift */; }; B44033CE2BCC352900162242 /* UserDefaultsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA7047D254E24D5005FE5E2 /* UserDefaultsGroup.swift */; };
B44033CF2BCC352C00162242 /* UserDefaultsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA7047D254E24D5005FE5E2 /* UserDefaultsGroup.swift */; };
B44033D02BCC352F00162242 /* UserDefaultsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA7047D254E24D5005FE5E2 /* UserDefaultsGroup.swift */; }; B44033D02BCC352F00162242 /* UserDefaultsGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DA7047D254E24D5005FE5E2 /* UserDefaultsGroup.swift */; };
B44033D32BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; }; B44033D32BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; };
B44033D42BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; }; B44033D42BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; };
B44033D52BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; }; B44033D52BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; };
B44033D62BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033D22BCC368800162242 /* UserDefaultsGroupKey.swift */; };
B44033D72BCC369400162242 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4AF18325D215D1009DD853 /* UserDefaultsExtension.swift */; };
B44033D82BCC369500162242 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4AF18325D215D1009DD853 /* UserDefaultsExtension.swift */; }; B44033D82BCC369500162242 /* UserDefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4AF18325D215D1009DD853 /* UserDefaultsExtension.swift */; };
B44033D92BCC369900162242 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4C3A254FBF4800E9F9AA /* Colors.swift */; };
B44033DA2BCC369A00162242 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4C3A254FBF4800E9F9AA /* Colors.swift */; }; B44033DA2BCC369A00162242 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4C3A254FBF4800E9F9AA /* Colors.swift */; };
B44033DB2BCC369B00162242 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4C3A254FBF4800E9F9AA /* Colors.swift */; }; B44033DB2BCC369B00162242 /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4C3A254FBF4800E9F9AA /* Colors.swift */; };
B44033DD2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; }; B44033DD2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; };
B44033DE2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; }; B44033DE2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; };
B44033DF2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; }; B44033DF2BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; };
B44033E02BCC36C300162242 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; };
B44033E12BCC36CA00162242 /* Placeholders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4BFA254FBA0E00E9F9AA /* Placeholders.swift */; };
B44033E22BCC36CB00162242 /* Placeholders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4BFA254FBA0E00E9F9AA /* Placeholders.swift */; }; B44033E22BCC36CB00162242 /* Placeholders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4BFA254FBA0E00E9F9AA /* Placeholders.swift */; };
B44033E42BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; }; B44033E42BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; };
B44033E52BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; }; B44033E52BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; };
B44033E62BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; }; B44033E62BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; };
B44033E72BCC36FF00162242 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; };
B44033E92BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; }; B44033E92BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; };
B44033EA2BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; }; B44033EA2BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; };
B44033EB2BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; }; B44033EB2BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; };
B44033EC2BCC371A00162242 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; };
B44033EE2BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; }; B44033EE2BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; };
B44033EF2BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; }; B44033EF2BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; };
B44033F02BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; }; B44033F02BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; };
B44033F12BCC374500162242 /* Numeric+abbreviated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033ED2BCC374500162242 /* Numeric+abbreviated.swift */; };
B44033F42BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; }; B44033F42BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; };
B44033F52BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; }; B44033F52BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; };
B44033F62BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; }; B44033F62BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; };
B44033F72BCC377F00162242 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F32BCC377F00162242 /* WidgetData.swift */; };
B44033F92BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; }; B44033F92BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; };
B44033FA2BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; }; B44033FA2BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; };
B44033FB2BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; }; B44033FB2BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; };
B44033FC2BCC379200162242 /* WidgetDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033F82BCC379200162242 /* WidgetDataStore.swift */; };
B44033FD2BCC37D600162242 /* MarketAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D9A2E6A254BAB1B007B5B82 /* MarketAPI.swift */; };
B44033FE2BCC37D700162242 /* MarketAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D9A2E6A254BAB1B007B5B82 /* MarketAPI.swift */; }; B44033FE2BCC37D700162242 /* MarketAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D9A2E6A254BAB1B007B5B82 /* MarketAPI.swift */; };
B44034002BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; }; B44034002BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; };
B44034012BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; }; B44034012BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; };
B44034022BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; }; B44034022BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; };
B44034032BCC37F800162242 /* Bundle+decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033FF2BCC37F800162242 /* Bundle+decode.swift */; };
B44034042BCC389100162242 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
B44034052BCC389200162242 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; }; B44034052BCC389200162242 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
B44034062BCC389F00162242 /* FiatUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2AA8072568B8F40090B089 /* FiatUnit.swift */; };
B44034072BCC38A000162242 /* FiatUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2AA8072568B8F40090B089 /* FiatUnit.swift */; }; B44034072BCC38A000162242 /* FiatUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2AA8072568B8F40090B089 /* FiatUnit.swift */; };
B440340F2BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; }; B440340F2BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; };
B44034102BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; }; B44034102BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; };
B44034112BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; }; B44034112BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; };
B44034122BCC40A400162242 /* fiatUnits.json in Resources */ = {isa = PBXBuildFile; fileRef = B440340E2BCC40A400162242 /* fiatUnits.json */; };
B45010982C0FCB7700619044 /* MarketAPI+Electrum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D6CA5142558EBA3009312A5 /* MarketAPI+Electrum.swift */; };
B450109C2C0FCD8A00619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; }; B450109C2C0FCD8A00619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; };
B450109D2C0FCD9F00619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; }; B450109D2C0FCD9F00619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; };
B450109E2C0FCDA000619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; };
B450109F2C0FCDA500619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; }; B450109F2C0FCDA500619044 /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B450109B2C0FCD8A00619044 /* Utilities.swift */; };
B45010A62C1507DE00619044 /* CustomSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B45010A52C1507DE00619044 /* CustomSegmentedControlManager.m */; }; B45010A62C1507DE00619044 /* CustomSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B45010A52C1507DE00619044 /* CustomSegmentedControlManager.m */; };
B4549F362B82B10D002E3153 /* ci_post_clone.sh in Resources */ = {isa = PBXBuildFile; fileRef = B4549F352B82B10D002E3153 /* ci_post_clone.sh */; }; B4549F362B82B10D002E3153 /* ci_post_clone.sh in Resources */ = {isa = PBXBuildFile; fileRef = B4549F352B82B10D002E3153 /* ci_post_clone.sh */; };
B461B852299599F800E431AA /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = B461B851299599F800E431AA /* AppDelegate.mm */; }; B461B852299599F800E431AA /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = B461B851299599F800E431AA /* AppDelegate.mm */; };
B47462D02C1538D800100825 /* CustomSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B45010A52C1507DE00619044 /* CustomSegmentedControlManager.m */; };
B47B21EC2B2128B8001F6690 /* BlueWalletUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B47B21EB2B2128B8001F6690 /* BlueWalletUITests.swift */; };
B48A6A292C1DF01000030AB9 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B48A6A282C1DF01000030AB9 /* KeychainSwift */; }; B48A6A292C1DF01000030AB9 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B48A6A282C1DF01000030AB9 /* KeychainSwift */; };
B49038D92B8FBAD300A8164A /* BlueWalletUITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B49038D82B8FBAD300A8164A /* BlueWalletUITest.swift */; };
B4A29A2C2B55C990002A67DF /* EventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D32C5C52596CE3A008C077C /* EventEmitter.m */; };
B4A29A2D2B55C990002A67DF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
B4A29A2E2B55C990002A67DF /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = B461B851299599F800E431AA /* AppDelegate.mm */; };
B4A29A2F2B55C990002A67DF /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B5A3292334450100F8D608 /* Bridge.swift */; };
B4A29A312B55C990002A67DF /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9D9B3A7B2CB4255876B67AF /* libz.tbd */; };
B4A29A322B55C990002A67DF /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B468CC34D5B41F3950078EF /* libsqlite3.0.tbd */; };
B4A29A352B55C990002A67DF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6DF25A9E249DB97E001D06F5 /* LaunchScreen.storyboard */; };
B4A29A372B55C990002A67DF /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
B4A29A3A2B55C990002A67DF /* BlueWalletWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = B40D4E30225841EC00428FCC /* BlueWalletWatch.app */; platformFilter = ios; };
B4A29A3C2B55C990002A67DF /* Stickers.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6D2A6461258BA92C0092292B /* Stickers.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B4A29A3D2B55C990002A67DF /* WidgetsExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6DD4109C266CADF10087DE03 /* WidgetsExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
B4AB225D2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; }; B4AB225D2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
B4AB225E2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; }; B4AB225E2B02AD12001F4328 /* XMLParserDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */; };
B4B1A4622BFA73110072E3BB /* WidgetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */; }; B4B1A4622BFA73110072E3BB /* WidgetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */; };
B4B1A4642BFA73110072E3BB /* WidgetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */; }; B4B1A4642BFA73110072E3BB /* WidgetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */; };
B4B1A4652BFA73110072E3BB /* WidgetHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */; };
B4D0B2622C1DEA11006B6B1B /* ReceivePageInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2612C1DEA11006B6B1B /* ReceivePageInterfaceController.swift */; }; B4D0B2622C1DEA11006B6B1B /* ReceivePageInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2612C1DEA11006B6B1B /* ReceivePageInterfaceController.swift */; };
B4D0B2642C1DEA99006B6B1B /* ReceiveType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2632C1DEA99006B6B1B /* ReceiveType.swift */; }; B4D0B2642C1DEA99006B6B1B /* ReceiveType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2632C1DEA99006B6B1B /* ReceiveType.swift */; };
B4D0B2662C1DEB7F006B6B1B /* ReceiveInterfaceMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2652C1DEB7F006B6B1B /* ReceiveInterfaceMode.swift */; }; B4D0B2662C1DEB7F006B6B1B /* ReceiveInterfaceMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2652C1DEB7F006B6B1B /* ReceiveInterfaceMode.swift */; };
B4D0B2682C1DED67006B6B1B /* ReceiveMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2672C1DED67006B6B1B /* ReceiveMethod.swift */; }; B4D0B2682C1DED67006B6B1B /* ReceiveMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D0B2672C1DED67006B6B1B /* ReceiveMethod.swift */; };
B4EE583C226703320003363C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B40D4E35225841ED00428FCC /* Assets.xcassets */; }; B4EE583C226703320003363C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B40D4E35225841ED00428FCC /* Assets.xcassets */; };
B4EFF73B2C3F6C5E0095D655 /* MockData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4EFF73A2C3F6C5E0095D655 /* MockData.swift */; }; B4EFF73B2C3F6C5E0095D655 /* MockData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4EFF73A2C3F6C5E0095D655 /* MockData.swift */; };
B4EFF73C2C3F6C5E0095D655 /* MockData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4EFF73A2C3F6C5E0095D655 /* MockData.swift */; };
B4EFF73D2C3F6C6C0095D655 /* MarketData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E82BCC371A00162242 /* MarketData.swift */; };
B4EFF7412C3F6C960095D655 /* PriceWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D6CA4BC255872E3009312A5 /* PriceWidget.swift */; };
B4EFF7422C3F6C990095D655 /* PriceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D6CA5272558EC52009312A5 /* PriceView.swift */; };
B4EFF7432C3F6F650095D655 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033C92BCC350A00162242 /* Currency.swift */; };
B4EFF7442C3F6F6A0095D655 /* FiatUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D2AA8072568B8F40090B089 /* FiatUnit.swift */; };
B4EFF7452C3F6FF30095D655 /* Placeholders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4BFA254FBA0E00E9F9AA /* Placeholders.swift */; };
B4EFF7462C3F6FF90095D655 /* WalletData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033E32BCC36FF00162242 /* WalletData.swift */; };
B4EFF7472C3F70010095D655 /* LatestTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033DC2BCC36C300162242 /* LatestTransaction.swift */; };
B4EFF7482C3F70090095D655 /* BitcoinUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = B44033BE2BCC32F800162242 /* BitcoinUnit.swift */; };
C59F90CE0D04D3E4BB39BC5D /* libPods-BlueWalletUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F02C2F7CA3591E4E0B06EBA /* libPods-BlueWalletUITests.a */; };
C978A716948AB7DEC5B6F677 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; }; C978A716948AB7DEC5B6F677 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -220,41 +170,6 @@
remoteGlobalIDString = B40D4E2F225841EC00428FCC; remoteGlobalIDString = B40D4E2F225841EC00428FCC;
remoteInfo = BlueWalletWatch; remoteInfo = BlueWalletWatch;
}; };
B47B21EF2B2128B8001F6690 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = BlueWallet;
};
B49038D62B8FBA2500A8164A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = B4A29A212B55C990002A67DF;
remoteInfo = "BlueWallet-NoLDK";
};
B4A29A252B55C990002A67DF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 6D99465D2555A660000E52E8;
remoteInfo = MarketWidgetExtension;
};
B4A29A272B55C990002A67DF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 6D2A6460258BA92C0092292B;
remoteInfo = Stickers;
};
B4A29A292B55C990002A67DF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 6DD4109B266CADF10087DE03;
remoteInfo = WidgetsExtension;
};
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -292,29 +207,6 @@
name = "Embed App Extensions"; name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
B4A29A392B55C990002A67DF /* Embed Watch Content */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
dstSubfolderSpec = 16;
files = (
B4A29A3A2B55C990002A67DF /* BlueWalletWatch.app in Embed Watch Content */,
);
name = "Embed Watch Content";
runOnlyForDeploymentPostprocessing = 0;
};
B4A29A3B2B55C990002A67DF /* Embed App Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
B4A29A3C2B55C990002A67DF /* Stickers.appex in Embed App Extensions */,
B4A29A3D2B55C990002A67DF /* WidgetsExtension.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
@ -341,7 +233,6 @@
44BC9E3EE0E9476A830CCCB9 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; }; 44BC9E3EE0E9476A830CCCB9 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
47564776A7A3427DB36C087D /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; }; 47564776A7A3427DB36C087D /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
4F12F501B686459183E0BE0D /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; }; 4F12F501B686459183E0BE0D /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = "<group>"; };
52FA0F1447D69747BD547E1E /* libPods-BlueWallet-NoLDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BlueWallet-NoLDK.a"; sourceTree = BUILT_PRODUCTS_DIR; };
5A8F67CF29564E41882ECEF8 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; }; 5A8F67CF29564E41882ECEF8 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
6A65D81712444D37BA152B06 /* libRNRandomBytes.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNRandomBytes.a; sourceTree = "<group>"; }; 6A65D81712444D37BA152B06 /* libRNRandomBytes.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNRandomBytes.a; sourceTree = "<group>"; };
6D203C2025D4ED2500493AD1 /* BlueWalletWatch.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = BlueWalletWatch.entitlements; sourceTree = "<group>"; }; 6D203C2025D4ED2500493AD1 /* BlueWalletWatch.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = BlueWalletWatch.entitlements; sourceTree = "<group>"; };
@ -408,14 +299,12 @@
849047C92702A32A008EE567 /* Handoff.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Handoff.swift; sourceTree = "<group>"; }; 849047C92702A32A008EE567 /* Handoff.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Handoff.swift; sourceTree = "<group>"; };
84E05A832721191B001A0D3A /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; }; 84E05A832721191B001A0D3A /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
8637D4B5E14D443A9031DA95 /* libRNFS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFS.a; sourceTree = "<group>"; }; 8637D4B5E14D443A9031DA95 /* libRNFS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFS.a; sourceTree = "<group>"; };
8B160AC12BDAD72BB70BC175 /* Pods-BlueWallet-NoLDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlueWallet-NoLDK.release.xcconfig"; path = "Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK.release.xcconfig"; sourceTree = "<group>"; };
90F86BC5194548CA87D729A9 /* libToolTipMenu.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libToolTipMenu.a; sourceTree = "<group>"; }; 90F86BC5194548CA87D729A9 /* libToolTipMenu.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libToolTipMenu.a; sourceTree = "<group>"; };
94565BFC6A0C4235B3EC7B01 /* libRNSVG.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSVG.a; sourceTree = "<group>"; }; 94565BFC6A0C4235B3EC7B01 /* libRNSVG.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNSVG.a; sourceTree = "<group>"; };
95208B2A05884A76B5BB99C0 /* libRCTGoogleAnalyticsBridge.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTGoogleAnalyticsBridge.a; sourceTree = "<group>"; }; 95208B2A05884A76B5BB99C0 /* libRCTGoogleAnalyticsBridge.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTGoogleAnalyticsBridge.a; sourceTree = "<group>"; };
95304AD151F1F531985AA341 /* libPods-BlueWallet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BlueWallet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 95304AD151F1F531985AA341 /* libPods-BlueWallet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BlueWallet.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9DF4E6C040764E4BA1ACC1EB /* libTcpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libTcpSockets.a; sourceTree = "<group>"; }; 9DF4E6C040764E4BA1ACC1EB /* libTcpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libTcpSockets.a; sourceTree = "<group>"; };
9F1F51A83D044F3BB26A35FC /* libRNSVG-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNSVG-tvOS.a"; sourceTree = "<group>"; }; 9F1F51A83D044F3BB26A35FC /* libRNSVG-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNSVG-tvOS.a"; sourceTree = "<group>"; };
A16A0CF8A3E6F577B90BF8A4 /* Pods-BlueWallet-NoLDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BlueWallet-NoLDK.debug.xcconfig"; path = "Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK.debug.xcconfig"; sourceTree = "<group>"; };
A7C4B1FDAD264618BAF8C335 /* libRNCWebView.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCWebView.a; sourceTree = "<group>"; }; A7C4B1FDAD264618BAF8C335 /* libRNCWebView.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNCWebView.a; sourceTree = "<group>"; };
AB2325650CE04F018697ACFE /* libRNReactNativeHapticFeedback.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNReactNativeHapticFeedback.a; sourceTree = "<group>"; }; AB2325650CE04F018697ACFE /* libRNReactNativeHapticFeedback.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNReactNativeHapticFeedback.a; sourceTree = "<group>"; };
B40D4E30225841EC00428FCC /* BlueWalletWatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlueWalletWatch.app; sourceTree = BUILT_PRODUCTS_DIR; }; B40D4E30225841EC00428FCC /* BlueWalletWatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlueWalletWatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -460,11 +349,8 @@
B4549F352B82B10D002E3153 /* ci_post_clone.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ci_post_clone.sh; sourceTree = "<group>"; }; B4549F352B82B10D002E3153 /* ci_post_clone.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ci_post_clone.sh; sourceTree = "<group>"; };
B461B850299599F800E431AA /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = BlueWallet/AppDelegate.h; sourceTree = "<group>"; }; B461B850299599F800E431AA /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = BlueWallet/AppDelegate.h; sourceTree = "<group>"; };
B461B851299599F800E431AA /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = BlueWallet/AppDelegate.mm; sourceTree = "<group>"; }; B461B851299599F800E431AA /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = BlueWallet/AppDelegate.mm; sourceTree = "<group>"; };
B47B21E92B2128B8001F6690 /* BlueWalletUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BlueWalletUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
B47B21EB2B2128B8001F6690 /* BlueWalletUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITests.swift; sourceTree = "<group>"; }; B47B21EB2B2128B8001F6690 /* BlueWalletUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITests.swift; sourceTree = "<group>"; };
B49038D82B8FBAD300A8164A /* BlueWalletUITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITest.swift; sourceTree = "<group>"; }; B49038D82B8FBAD300A8164A /* BlueWalletUITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlueWalletUITest.swift; sourceTree = "<group>"; };
B4A29A452B55C990002A67DF /* BlueWallet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BlueWallet.app; sourceTree = BUILT_PRODUCTS_DIR; };
B4A29A462B55C990002A67DF /* BlueWallet-NoLDK.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BlueWallet-NoLDK.plist"; sourceTree = "<absolute>"; };
B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XMLParserDelegate.swift; sourceTree = "<group>"; }; B4AB225C2B02AD12001F4328 /* XMLParserDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XMLParserDelegate.swift; sourceTree = "<group>"; };
B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetHelper.swift; sourceTree = "<group>"; }; B4B1A4612BFA73110072E3BB /* WidgetHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetHelper.swift; sourceTree = "<group>"; };
B4D0B2612C1DEA11006B6B1B /* ReceivePageInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceivePageInterfaceController.swift; sourceTree = "<group>"; }; B4D0B2612C1DEA11006B6B1B /* ReceivePageInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReceivePageInterfaceController.swift; sourceTree = "<group>"; };
@ -536,24 +422,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
B47B21E62B2128B8001F6690 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C59F90CE0D04D3E4BB39BC5D /* libPods-BlueWalletUITests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
B4A29A302B55C990002A67DF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
B4A29A312B55C990002A67DF /* libz.tbd in Frameworks */,
B4A29A322B55C990002A67DF /* libsqlite3.0.tbd in Frameworks */,
2B2B129397ACA4E7FCCB4F6F /* libPods-BlueWallet-NoLDK.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
@ -585,7 +453,6 @@
008F07F21AC5B25A0029DE68 /* main.jsbundle */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB51A68108700A75B9A /* Images.xcassets */,
13B07FB61A68108700A75B9A /* Info.plist */, 13B07FB61A68108700A75B9A /* Info.plist */,
B4A29A462B55C990002A67DF /* BlueWallet-NoLDK.plist */,
13B07FB71A68108700A75B9A /* main.m */, 13B07FB71A68108700A75B9A /* main.m */,
32B5A3292334450100F8D608 /* Bridge.swift */, 32B5A3292334450100F8D608 /* Bridge.swift */,
32B5A3282334450100F8D608 /* BlueWallet-Bridging-Header.h */, 32B5A3282334450100F8D608 /* BlueWallet-Bridging-Header.h */,
@ -612,7 +479,6 @@
3271B0AA236E2E0700DA766F /* NotificationCenter.framework */, 3271B0AA236E2E0700DA766F /* NotificationCenter.framework */,
6D333B3A252FE1A3004D72DF /* WidgetKit.framework */, 6D333B3A252FE1A3004D72DF /* WidgetKit.framework */,
6D333B3C252FE1A3004D72DF /* SwiftUI.framework */, 6D333B3C252FE1A3004D72DF /* SwiftUI.framework */,
52FA0F1447D69747BD547E1E /* libPods-BlueWallet-NoLDK.a */,
95304AD151F1F531985AA341 /* libPods-BlueWallet.a */, 95304AD151F1F531985AA341 /* libPods-BlueWallet.a */,
6F02C2F7CA3591E4E0B06EBA /* libPods-BlueWalletUITests.a */, 6F02C2F7CA3591E4E0B06EBA /* libPods-BlueWalletUITests.a */,
); );
@ -756,8 +622,6 @@
B40D4E3C225841ED00428FCC /* BlueWalletWatch Extension.appex */, B40D4E3C225841ED00428FCC /* BlueWalletWatch Extension.appex */,
6D2A6461258BA92C0092292B /* Stickers.appex */, 6D2A6461258BA92C0092292B /* Stickers.appex */,
6DD4109C266CADF10087DE03 /* WidgetsExtension.appex */, 6DD4109C266CADF10087DE03 /* WidgetsExtension.appex */,
B47B21E92B2128B8001F6690 /* BlueWalletUITests.xctest */,
B4A29A452B55C990002A67DF /* BlueWallet.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -915,8 +779,6 @@
children = ( children = (
B68F8552DD4428F64B11DCFB /* Pods-BlueWallet.debug.xcconfig */, B68F8552DD4428F64B11DCFB /* Pods-BlueWallet.debug.xcconfig */,
77ED97C3CA4284744868B15D /* Pods-BlueWallet.release.xcconfig */, 77ED97C3CA4284744868B15D /* Pods-BlueWallet.release.xcconfig */,
A16A0CF8A3E6F577B90BF8A4 /* Pods-BlueWallet-NoLDK.debug.xcconfig */,
8B160AC12BDAD72BB70BC175 /* Pods-BlueWallet-NoLDK.release.xcconfig */,
6E8A234AFCA1624321AE54F5 /* Pods-BlueWalletUITests.debug.xcconfig */, 6E8A234AFCA1624321AE54F5 /* Pods-BlueWalletUITests.debug.xcconfig */,
0C3D27CE367C0DD11F4B8772 /* Pods-BlueWalletUITests.release.xcconfig */, 0C3D27CE367C0DD11F4B8772 /* Pods-BlueWalletUITests.release.xcconfig */,
); );
@ -1030,56 +892,6 @@
productReference = B40D4E3C225841ED00428FCC /* BlueWalletWatch Extension.appex */; productReference = B40D4E3C225841ED00428FCC /* BlueWalletWatch Extension.appex */;
productType = "com.apple.product-type.watchkit2-extension"; productType = "com.apple.product-type.watchkit2-extension";
}; };
B47B21E82B2128B8001F6690 /* BlueWalletUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = B47B21F32B2128B8001F6690 /* Build configuration list for PBXNativeTarget "BlueWalletUITests" */;
buildPhases = (
6A7B5D072DAE0808347B48AA /* [CP] Check Pods Manifest.lock */,
B47B21E52B2128B8001F6690 /* Sources */,
B47B21E62B2128B8001F6690 /* Frameworks */,
B47B21E72B2128B8001F6690 /* Resources */,
5BF4F7E206022ECCBEE8C01A /* [CP] Embed Pods Frameworks */,
22A7683E080229A2C227229E /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
B47B21F02B2128B8001F6690 /* PBXTargetDependency */,
B49038D72B8FBA2500A8164A /* PBXTargetDependency */,
);
name = BlueWalletUITests;
productName = BlueWalletUITests;
productReference = B47B21E92B2128B8001F6690 /* BlueWalletUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
B4A29A212B55C990002A67DF /* BlueWallet-NoLDK */ = {
isa = PBXNativeTarget;
buildConfigurationList = B4A29A422B55C990002A67DF /* Build configuration list for PBXNativeTarget "BlueWallet-NoLDK" */;
buildPhases = (
B4A29A2A2B55C990002A67DF /* [CP] Check Pods Manifest.lock */,
B4A29A2B2B55C990002A67DF /* Sources */,
B4A29A302B55C990002A67DF /* Frameworks */,
B4A29A342B55C990002A67DF /* Resources */,
B4A29A382B55C990002A67DF /* Bundle React Native code and images */,
B4A29A392B55C990002A67DF /* Embed Watch Content */,
B4A29A3B2B55C990002A67DF /* Embed App Extensions */,
B4A29A3E2B55C990002A67DF /* Upload source maps to Bugsnag */,
B4A29A3F2B55C990002A67DF /* Upload Bugsnag dSYM */,
B4A29A402B55C990002A67DF /* [CP] Embed Pods Frameworks */,
B4A29A412B55C990002A67DF /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
B4A29A242B55C990002A67DF /* PBXTargetDependency */,
B4A29A262B55C990002A67DF /* PBXTargetDependency */,
B4A29A282B55C990002A67DF /* PBXTargetDependency */,
);
name = "BlueWallet-NoLDK";
productName = "Hello World";
productReference = B4A29A452B55C990002A67DF /* BlueWallet.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
@ -1117,10 +929,6 @@
}; };
}; };
}; };
B47B21E82B2128B8001F6690 = {
CreatedOnToolsVersion = 15.0.1;
TestTargetID = B4A29A212B55C990002A67DF;
};
}; };
}; };
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BlueWallet" */; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "BlueWallet" */;
@ -1169,8 +977,6 @@
B40D4E3B225841ED00428FCC /* BlueWalletWatch Extension */, B40D4E3B225841ED00428FCC /* BlueWalletWatch Extension */,
6D2A6460258BA92C0092292B /* Stickers */, 6D2A6460258BA92C0092292B /* Stickers */,
6DD4109B266CADF10087DE03 /* WidgetsExtension */, 6DD4109B266CADF10087DE03 /* WidgetsExtension */,
B47B21E82B2128B8001F6690 /* BlueWalletUITests */,
B4A29A212B55C990002A67DF /* BlueWallet-NoLDK */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@ -1226,24 +1032,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
B47B21E72B2128B8001F6690 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
B4A29A342B55C990002A67DF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B41C2E592BB3DCB8000FE097 /* PrivacyInfo.xcprivacy in Resources */,
B44034122BCC40A400162242 /* fiatUnits.json in Resources */,
B4A29A352B55C990002A67DF /* LaunchScreen.storyboard in Resources */,
B4A29A372B55C990002A67DF /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
@ -1278,23 +1066,6 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-frameworks.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-frameworks.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
22A7683E080229A2C227229E /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
3018134BCE2C10C2242F4CA3 /* [CP] Check Pods Manifest.lock */ = { 3018134BCE2C10C2242F4CA3 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1355,45 +1126,6 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-resources.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
5BF4F7E206022ECCBEE8C01A /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWalletUITests/Pods-BlueWalletUITests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
6A7B5D072DAE0808347B48AA /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-BlueWalletUITests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
A8D9893AE3CD454A9094B651 /* Upload source maps to Bugsnag */ = { A8D9893AE3CD454A9094B651 /* Upload source maps to Bugsnag */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1408,111 +1140,6 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n"; shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
}; };
B4A29A2A2B55C990002A67DF /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-BlueWallet-NoLDK-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
B4A29A382B55C990002A67DF /* Bundle React Native code and images */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Bundle React Native code and images";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
B4A29A3E2B55C990002A67DF /* Upload source maps to Bugsnag */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Upload source maps to Bugsnag";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
};
B4A29A3F2B55C990002A67DF /* Upload Bugsnag dSYM */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}",
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}",
);
name = "Upload Bugsnag dSYM";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = "/usr/bin/env ruby";
shellScript = "api_key = nil # Insert your key here to use it directly from this script\n\n# Attempt to get the API key from an environment variable\nunless api_key\n api_key = ENV[\"BUGSNAG_API_KEY\"]\n\n # If not present, attempt to lookup the value from the Info.plist\n unless api_key\n info_plist_path = \"#{ENV[\"BUILT_PRODUCTS_DIR\"]}/#{ENV[\"INFOPLIST_PATH\"]}\"\n plist_buddy_response = `/usr/libexec/PlistBuddy -c \"print :bugsnag:apiKey\" \"#{info_plist_path}\"`\n plist_buddy_response = `/usr/libexec/PlistBuddy -c \"print :BugsnagAPIKey\" \"#{info_plist_path}\"` if !$?.success?\n api_key = plist_buddy_response if $?.success?\n end\nend\n\nfail(\"No Bugsnag API key detected - add your key to your Info.plist, BUGSNAG_API_KEY environment variable or this Run Script phase\") unless api_key\n\nfork do\n Process.setsid\n STDIN.reopen(\"/dev/null\")\n STDOUT.reopen(\"/dev/null\", \"a\")\n STDERR.reopen(\"/dev/null\", \"a\")\n\n require 'shellwords'\n\n Dir[\"#{ENV[\"DWARF_DSYM_FOLDER_PATH\"]}/*/Contents/Resources/DWARF/*\"].each do |dsym|\n curl_command = \"curl --http1.1 -F dsym=@#{Shellwords.escape(dsym)} -F projectRoot=#{Shellwords.escape(ENV[\"PROJECT_DIR\"])} \"\n curl_command += \"-F apiKey=#{Shellwords.escape(api_key)} \"\n curl_command += \"https://upload.bugsnag.com/\"\n system(curl_command)\n end\nend\n";
showEnvVarsInLog = 0;
};
B4A29A402B55C990002A67DF /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
B4A29A412B55C990002A67DF /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet-NoLDK/Pods-BlueWallet-NoLDK-resources.sh\"\n";
showEnvVarsInLog = 0;
};
CF0725821442A3000F20E874 /* Upload Bugsnag dSYM */ = { CF0725821442A3000F20E874 /* Upload Bugsnag dSYM */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -1654,59 +1281,6 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
B47B21E52B2128B8001F6690 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B49038D92B8FBAD300A8164A /* BlueWalletUITest.swift in Sources */,
B4EFF7472C3F70010095D655 /* LatestTransaction.swift in Sources */,
B4EFF7422C3F6C990095D655 /* PriceView.swift in Sources */,
B4EFF7482C3F70090095D655 /* BitcoinUnit.swift in Sources */,
B4EFF73D2C3F6C6C0095D655 /* MarketData.swift in Sources */,
B4EFF73C2C3F6C5E0095D655 /* MockData.swift in Sources */,
B4EFF7432C3F6F650095D655 /* Currency.swift in Sources */,
B4EFF7412C3F6C960095D655 /* PriceWidget.swift in Sources */,
B4EFF7462C3F6FF90095D655 /* WalletData.swift in Sources */,
B4EFF7452C3F6FF30095D655 /* Placeholders.swift in Sources */,
B4EFF7442C3F6F6A0095D655 /* FiatUnit.swift in Sources */,
B47B21EC2B2128B8001F6690 /* BlueWalletUITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
B4A29A2B2B55C990002A67DF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B44033D72BCC369400162242 /* UserDefaultsExtension.swift in Sources */,
B44033F72BCC377F00162242 /* WidgetData.swift in Sources */,
B44033E12BCC36CA00162242 /* Placeholders.swift in Sources */,
B47462D02C1538D800100825 /* CustomSegmentedControlManager.m in Sources */,
B44033E72BCC36FF00162242 /* WalletData.swift in Sources */,
B44033E02BCC36C300162242 /* LatestTransaction.swift in Sources */,
B44033D92BCC369900162242 /* Colors.swift in Sources */,
B4A29A2C2B55C990002A67DF /* EventEmitter.m in Sources */,
B44033D62BCC368800162242 /* UserDefaultsGroupKey.swift in Sources */,
B44033FD2BCC37D600162242 /* MarketAPI.swift in Sources */,
B4A29A2D2B55C990002A67DF /* main.m in Sources */,
B45010982C0FCB7700619044 /* MarketAPI+Electrum.swift in Sources */,
B4A29A2E2B55C990002A67DF /* AppDelegate.mm in Sources */,
B44033C72BCC332400162242 /* Balance.swift in Sources */,
B44033FC2BCC379200162242 /* WidgetDataStore.swift in Sources */,
B411DA832C2F1D3700115221 /* SwiftTCPClient.swift in Sources */,
B44033C22BCC32F800162242 /* BitcoinUnit.swift in Sources */,
B4B1A4652BFA73110072E3BB /* WidgetHelper.swift in Sources */,
B44033F12BCC374500162242 /* Numeric+abbreviated.swift in Sources */,
B44034032BCC37F800162242 /* Bundle+decode.swift in Sources */,
B44033CD2BCC350A00162242 /* Currency.swift in Sources */,
B44034062BCC389F00162242 /* FiatUnit.swift in Sources */,
B44033CF2BCC352C00162242 /* UserDefaultsGroup.swift in Sources */,
B4A29A2F2B55C990002A67DF /* Bridge.swift in Sources */,
B44034042BCC389100162242 /* XMLParserDelegate.swift in Sources */,
B450109E2C0FCDA000619044 /* Utilities.swift in Sources */,
B44033EC2BCC371A00162242 /* MarketData.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
@ -1736,31 +1310,6 @@
target = B40D4E2F225841EC00428FCC /* BlueWalletWatch */; target = B40D4E2F225841EC00428FCC /* BlueWalletWatch */;
targetProxy = B40D4E4B225841ED00428FCC /* PBXContainerItemProxy */; targetProxy = B40D4E4B225841ED00428FCC /* PBXContainerItemProxy */;
}; };
B47B21F02B2128B8001F6690 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 13B07F861A680F5B00A75B9A /* BlueWallet */;
targetProxy = B47B21EF2B2128B8001F6690 /* PBXContainerItemProxy */;
};
B49038D72B8FBA2500A8164A /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = B4A29A212B55C990002A67DF /* BlueWallet-NoLDK */;
targetProxy = B49038D62B8FBA2500A8164A /* PBXContainerItemProxy */;
};
B4A29A242B55C990002A67DF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
targetProxy = B4A29A252B55C990002A67DF /* PBXContainerItemProxy */;
};
B4A29A262B55C990002A67DF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
platformFilter = ios;
target = 6D2A6460258BA92C0092292B /* Stickers */;
targetProxy = B4A29A272B55C990002A67DF /* PBXContainerItemProxy */;
};
B4A29A282B55C990002A67DF /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6DD4109B266CADF10087DE03 /* WidgetsExtension */;
targetProxy = B4A29A292B55C990002A67DF /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */ /* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */ /* Begin PBXVariantGroup section */
@ -1846,13 +1395,13 @@
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.bluewallet.bluewallet"; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.bluewallet.bluewallet";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet catalyst"; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet catalyst";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2,6";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Debug; name = Debug;
@ -1901,12 +1450,12 @@
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet"; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet catalyst"; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet catalyst";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2,6";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
name = Release; name = Release;
@ -2009,7 +1558,7 @@
CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements; CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1703136680; CURRENT_PROJECT_VERSION = 1703136680;
DEAD_CODE_STRIPPING = YES; DEAD_CODE_STRIPPING = YES;
@ -2038,7 +1587,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.bluewallet.bluewallet.MarketWidget"; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.bluewallet.bluewallet.MarketWidget";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match Development io.bluewallet.bluewallet.MarketWidget macos"; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet.MarketWidget catalyst";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES; SUPPORTS_MACCATALYST = YES;
@ -2064,7 +1613,7 @@
CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements; CODE_SIGN_ENTITLEMENTS = WidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Distribution";
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1703136680; CURRENT_PROJECT_VERSION = 1703136680;
@ -2093,7 +1642,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet.MarketWidget"; "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore io.bluewallet.bluewallet.MarketWidget";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match Development io.bluewallet.bluewallet.MarketWidget macos"; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = "match AppStore io.bluewallet.bluewallet.MarketWidget catalyst";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES; SUPPORTS_MACCATALYST = YES;
@ -2417,202 +1966,6 @@
}; };
name = Release; name = Release;
}; };
B47B21F12B2128B8001F6690 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6E8A234AFCA1624321AE54F5 /* Pods-BlueWalletUITests.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1703136680;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = A7W54YZ4WU;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift",
"$(SDKROOT)/System/iOSSupport/usr/lib/swift",
"$(inherited)",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.BlueWalletUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "BlueWallet-NoLDK";
};
name = Debug;
};
B47B21F22B2128B8001F6690 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 0C3D27CE367C0DD11F4B8772 /* Pods-BlueWalletUITests.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1703136680;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = A7W54YZ4WU;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift",
"$(SDKROOT)/System/iOSSupport/usr/lib/swift",
"$(inherited)",
);
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet.BlueWalletUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "BlueWallet-NoLDK";
};
name = Release;
};
B4A29A432B55C990002A67DF /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A16A0CF8A3E6F577B90BF8A4 /* Pods-BlueWallet-NoLDK.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = BlueWallet/BlueWallet.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1703136680;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = A7W54YZ4WU;
ENABLE_BITCODE = NO;
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"COCOAPODS=1",
"FB_SONARKIT_ENABLED=1",
);
HEADER_SEARCH_PATHS = "$(inherited)";
INFOPLIST_FILE = "BlueWallet-NoLDK.plist";
INFOPLIST_KEY_CFBundleDisplayName = BlueWallet;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift",
"$(SDKROOT)/System/iOSSupport/usr/lib/swift",
"$(inherited)",
);
MARKETING_VERSION = 6.6.9;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet;
PRODUCT_NAME = BlueWallet;
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,6";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
B4A29A442B55C990002A67DF /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 8B160AC12BDAD72BB70BC175 /* Pods-BlueWallet-NoLDK.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = BlueWallet/BlueWalletRelease.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1703136680;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = A7W54YZ4WU;
ENABLE_BITCODE = NO;
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
HEADER_SEARCH_PATHS = "$(inherited)";
INFOPLIST_FILE = "BlueWallet-NoLDK.plist";
INFOPLIST_KEY_CFBundleDisplayName = BlueWallet;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.finance";
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift",
"$(SDKROOT)/System/iOSSupport/usr/lib/swift",
"$(inherited)",
);
MARKETING_VERSION = 6.6.9;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
"-lc++",
);
PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES;
PRODUCT_BUNDLE_IDENTIFIER = io.bluewallet.bluewallet;
PRODUCT_NAME = BlueWallet;
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "BlueWallet-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2,6";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@ -2670,24 +2023,6 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
B47B21F32B2128B8001F6690 /* Build configuration list for PBXNativeTarget "BlueWalletUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B47B21F12B2128B8001F6690 /* Debug */,
B47B21F22B2128B8001F6690 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
B4A29A422B55C990002A67DF /* Build configuration list for PBXNativeTarget "BlueWallet-NoLDK" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B4A29A432B55C990002A67DF /* Debug */,
B4A29A442B55C990002A67DF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */ /* Begin XCRemoteSwiftPackageReference section */

View file

@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1520"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Script"
scriptText = "cd ${SRCROOT}&#10;cd ..&#10;cp scripts/maccatalystpatches/lightning-ldk-wallet.ts class/wallets/lightning-ldk-wallet.ts&#10;">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B4A29A212B55C990002A67DF"
BuildableName = "BlueWallet.app"
BlueprintName = "BlueWallet-NoLDK"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B4A29A212B55C990002A67DF"
BuildableName = "BlueWallet.app"
BlueprintName = "BlueWallet-NoLDK"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B4A29A212B55C990002A67DF"
BuildableName = "BlueWallet.app"
BlueprintName = "BlueWallet-NoLDK"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B4A29A212B55C990002A67DF"
BuildableName = "BlueWallet.app"
BlueprintName = "BlueWallet-NoLDK"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1500"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Script"
scriptText = "cd ${SRCROOT}&#10;cd ..&#10;cp scripts/maccatalystpatches/lightning-ldk-wallet.ts class/wallets/lightning-ldk-wallet.ts&#10;">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B47B21E82B2128B8001F6690"
BuildableName = "BlueWalletUITests.xctest"
BlueprintName = "BlueWalletUITests"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B47B21E82B2128B8001F6690"
BuildableName = "BlueWalletUITests.xctest"
BlueprintName = "BlueWalletUITests"
ReferencedContainer = "container:BlueWallet.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -19,25 +19,15 @@
<key>orderHint</key> <key>orderHint</key>
<integer>71</integer> <integer>71</integer>
</dict> </dict>
<key>BlueWallet-NoLDK.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>136</integer>
</dict>
<key>BlueWallet.xcscheme_^#shared#^_</key> <key>BlueWallet.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>0</integer> <integer>0</integer>
</dict> </dict>
<key>BlueWalletUITests.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>97</integer>
</dict>
<key>BlueWalletWatch (Complication).xcscheme</key> <key>BlueWalletWatch (Complication).xcscheme</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>123</integer> <integer>9</integer>
</dict> </dict>
<key>BlueWalletWatch (Glance).xcscheme_^#shared#^_</key> <key>BlueWalletWatch (Glance).xcscheme_^#shared#^_</key>
<dict> <dict>
@ -107,6 +97,11 @@
<key>primary</key> <key>primary</key>
<true/> <true/>
</dict> </dict>
<key>B4A29A212B55C990002A67DF</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict> </dict>
</dict> </dict>
</plist> </plist>

View file

@ -0,0 +1,42 @@
{
"originHash" : "52530e6b1e3a85c8854952ef703a6d1bbe1acd82713be2b3166476b9b277db23",
"pins" : [
{
"identity" : "bugsnag-cocoa",
"kind" : "remoteSourceControl",
"location" : "https://github.com/bugsnag/bugsnag-cocoa",
"state" : {
"revision" : "16b9145fc66e5296f16e733f6feb5d0e450574e8",
"version" : "6.28.1"
}
},
{
"identity" : "efqrcode",
"kind" : "remoteSourceControl",
"location" : "https://github.com/EFPrefix/EFQRCode.git",
"state" : {
"revision" : "2991c2f318ad9529d93b2a73a382a3f9c72c64ce",
"version" : "6.2.2"
}
},
{
"identity" : "keychain-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/evgenyneu/keychain-swift.git",
"state" : {
"revision" : "5e1b02b6a9dac2a759a1d5dbc175c86bd192a608",
"version" : "24.0.0"
}
},
{
"identity" : "swift_qrcodejs",
"kind" : "remoteSourceControl",
"location" : "https://github.com/ApolloZhu/swift_qrcodejs.git",
"state" : {
"revision" : "374dc7f7b9e76c6aeb393f6a84590c6d387e1ecb",
"version" : "2.2.2"
}
}
],
"version" : 3
}

View file

@ -12,7 +12,6 @@ enum WalletGradient: String {
case SegwitHD = "HDsegwitP2SH" case SegwitHD = "HDsegwitP2SH"
case Segwit = "segwitP2SH" case Segwit = "segwitP2SH"
case LightningCustodial = "lightningCustodianWallet" case LightningCustodial = "lightningCustodianWallet"
case LightningLDK = "lightningLdk"
case SegwitNative = "HDsegwitBech32" case SegwitNative = "HDsegwitBech32"
case WatchOnly = "watchOnly" case WatchOnly = "watchOnly"
case MultiSig = "HDmultisig" case MultiSig = "HDmultisig"
@ -27,7 +26,7 @@ enum WalletGradient: String {
return "walletHD" return "walletHD"
case .WatchOnly: case .WatchOnly:
return "walletWatchOnly" return "walletWatchOnly"
case .LightningCustodial, .LightningLDK: case .LightningCustodial:
return "walletLightningCustodial" return "walletLightningCustodial"
case .MultiSig: case .MultiSig:
return "watchMultisig" return "watchMultisig"

View file

@ -43,7 +43,7 @@ class ReceiveInterfaceController: WKInterfaceController {
} }
private func setupView() { private func setupView() {
if receiveMethod == .CreateInvoice && (wallet?.type == WalletGradient.LightningCustodial.rawValue || wallet?.type == WalletGradient.LightningLDK.rawValue) { if receiveMethod == .CreateInvoice && (wallet?.type == WalletGradient.LightningCustodial.rawValue) {
presentController(withName: SpecifyInterfaceController.identifier, context: wallet?.identifier) presentController(withName: SpecifyInterfaceController.identifier, context: wallet?.identifier)
} else { } else {
setupQRCode() setupQRCode()
@ -92,7 +92,7 @@ class ReceiveInterfaceController: WKInterfaceController {
} }
private func isCreatingInvoice() -> Bool { private func isCreatingInvoice() -> Bool {
return receiveMethod == .CreateInvoice && (wallet?.type == WalletGradient.LightningCustodial.rawValue || wallet?.type == WalletGradient.LightningLDK.rawValue) return receiveMethod == .CreateInvoice && (wallet?.type == WalletGradient.LightningCustodial.rawValue)
} }
override func didDeactivate() { override func didDeactivate() {

View file

@ -40,7 +40,7 @@ class SpecifyInterfaceController: WKInterfaceController {
let wallet = WatchDataSource.shared.wallets[identifier] let wallet = WatchDataSource.shared.wallets[identifier]
self.wallet = wallet self.wallet = wallet
self.createButton.setAlpha(0.5) self.createButton.setAlpha(0.5)
self.specifiedQRContent.bitcoinUnit = (wallet.type == WalletGradient.LightningCustodial.rawValue || wallet.type == WalletGradient.LightningLDK.rawValue) ? .SATS : .BTC self.specifiedQRContent.bitcoinUnit = (wallet.type == WalletGradient.LightningCustodial.rawValue) ? .SATS : .BTC
NotificationCenter.default.addObserver(forName: NumericKeypadInterfaceController.NotificationName.keypadDataChanged, object: nil, queue: nil) { [weak self] (notification) in NotificationCenter.default.addObserver(forName: NumericKeypadInterfaceController.NotificationName.keypadDataChanged, object: nil, queue: nil) { [weak self] (notification) in
guard let amountObject = notification.object as? [String], !amountObject.isEmpty else { return } guard let amountObject = notification.object as? [String], !amountObject.isEmpty else { return }
if amountObject.count == 1 && (amountObject.first == "." || amountObject.first == "0") { if amountObject.count == 1 && (amountObject.first == "." || amountObject.first == "0") {
@ -60,7 +60,7 @@ class SpecifyInterfaceController: WKInterfaceController {
var isShouldCreateButtonBeEnabled = amountDouble > 0 && !title.isEmpty var isShouldCreateButtonBeEnabled = amountDouble > 0 && !title.isEmpty
if (wallet.type == WalletGradient.LightningCustodial.rawValue || wallet.type == WalletGradient.LightningLDK.rawValue) && !WCSession.default.isReachable { if (wallet.type == WalletGradient.LightningCustodial.rawValue) && !WCSession.default.isReachable {
isShouldCreateButtonBeEnabled = false isShouldCreateButtonBeEnabled = false
} }

View file

@ -41,14 +41,14 @@ class WalletDetailsInterfaceController: WKInterfaceController {
walletNameLabel.setText(wallet.label) walletNameLabel.setText(wallet.label)
walletBasicsGroup.setBackgroundImageNamed(WalletGradient(rawValue: wallet.type)?.imageString) walletBasicsGroup.setBackgroundImageNamed(WalletGradient(rawValue: wallet.type)?.imageString)
let isLightningWallet = wallet.type == WalletGradient.LightningCustodial.rawValue || wallet.type == WalletGradient.LightningLDK.rawValue let isLightningWallet = wallet.type == WalletGradient.LightningCustodial.rawValue
createInvoiceButton.setHidden(!isLightningWallet) createInvoiceButton.setHidden(!isLightningWallet)
receiveButton.setHidden(wallet.receiveAddress.isEmpty) receiveButton.setHidden(wallet.receiveAddress.isEmpty)
viewXPubButton.setHidden(!isXPubAvailable(wallet: wallet)) viewXPubButton.setHidden(!isXPubAvailable(wallet: wallet))
} }
private func isXPubAvailable(wallet: Wallet) -> Bool { private func isXPubAvailable(wallet: Wallet) -> Bool {
return (wallet.type != WalletGradient.LightningCustodial.rawValue && wallet.type != WalletGradient.LightningLDK.rawValue) && !(wallet.xpub ?? "").isEmpty return (wallet.type != WalletGradient.LightningCustodial.rawValue) && !(wallet.xpub ?? "").isEmpty
} }
private func updateTransactionsTable(forWallet wallet: Wallet) { private func updateTransactionsTable(forWallet wallet: Wallet) {

View file

@ -60,16 +60,6 @@ end
target 'BlueWallet' do target 'BlueWallet' do
configure_target() configure_target()
# Manually add rn-ldk pod for this target
pod 'rn-ldk', :path => '../node_modules/rn-ldk'
end
target 'BlueWallet-NoLDK' do
configure_target()
end
target 'BlueWalletUITests' do
configure_target()
end end
post_install do |installer| post_install do |installer|

View file

@ -466,8 +466,6 @@ PODS:
- React-Core - React-Core
- RealmJS (12.12.1): - RealmJS (12.12.1):
- React - React
- rn-ldk (0.8.4):
- React-Core
- RNCAsyncStorage (1.24.0): - RNCAsyncStorage (1.24.0):
- React-Core - React-Core
- RNCClipboard (1.14.1): - RNCClipboard (1.14.1):
@ -480,14 +478,14 @@ PODS:
- React-Core - React-Core
- RNFS (2.20.0): - RNFS (2.20.0):
- React-Core - React-Core
- RNGestureHandler (2.17.1): - RNGestureHandler (2.18.1):
- RCT-Folly (= 2021.07.22.00) - RCT-Folly (= 2021.07.22.00)
- React-Core - React-Core
- RNHandoff (0.0.3): - RNHandoff (0.0.3):
- React - React
- RNKeychain (8.2.0): - RNKeychain (8.2.0):
- React-Core - React-Core
- RNLocalize (3.2.0): - RNLocalize (3.2.1):
- React-Core - React-Core
- RNPermissions (4.1.5): - RNPermissions (4.1.5):
- React-Core - React-Core
@ -497,13 +495,14 @@ PODS:
- React - React
- RNRate (1.2.12): - RNRate (1.2.12):
- React-Core - React-Core
- RNReactNativeHapticFeedback (2.2.0): - RNReactNativeHapticFeedback (2.3.0):
- RCT-Folly (= 2021.07.22.00)
- React-Core - React-Core
- RNReanimated (3.14.0): - RNReanimated (3.14.0):
- RCT-Folly (= 2021.07.22.00) - RCT-Folly (= 2021.07.22.00)
- React-Core - React-Core
- ReactCommon/turbomodule/core - ReactCommon/turbomodule/core
- RNScreens (3.32.0): - RNScreens (3.33.0):
- RCT-Folly (= 2021.07.22.00) - RCT-Folly (= 2021.07.22.00)
- React-Core - React-Core
- React-RCTImage - React-RCTImage
@ -581,7 +580,6 @@ DEPENDENCIES:
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- ReactNativeCameraKit (from `../node_modules/react-native-camera-kit`) - ReactNativeCameraKit (from `../node_modules/react-native-camera-kit`)
- RealmJS (from `../node_modules/realm`) - RealmJS (from `../node_modules/realm`)
- rn-ldk (from `../node_modules/rn-ldk`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)"
- "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)" - "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)"
@ -727,8 +725,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-camera-kit" :path: "../node_modules/react-native-camera-kit"
RealmJS: RealmJS:
:path: "../node_modules/realm" :path: "../node_modules/realm"
rn-ldk:
:path: "../node_modules/rn-ldk"
RNCAsyncStorage: RNCAsyncStorage:
:path: "../node_modules/@react-native-async-storage/async-storage" :path: "../node_modules/@react-native-async-storage/async-storage"
RNCClipboard: RNCClipboard:
@ -837,24 +833,23 @@ SPEC CHECKSUMS:
ReactCommon: ff94462e007c568d8cdebc32e3c97af86ec93bb5 ReactCommon: ff94462e007c568d8cdebc32e3c97af86ec93bb5
ReactNativeCameraKit: 9d46a5d7dd544ca64aa9c03c150d2348faf437eb ReactNativeCameraKit: 9d46a5d7dd544ca64aa9c03c150d2348faf437eb
RealmJS: f4f6d27b325b1c1b402eb0aa5ee79e9d5f603293 RealmJS: f4f6d27b325b1c1b402eb0aa5ee79e9d5f603293
rn-ldk: 0d8749d98cc5ce67302a32831818c116b67f7643
RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a
RNCClipboard: 0a720adef5ec193aa0e3de24c3977222c7e52a37 RNCClipboard: 0a720adef5ec193aa0e3de24c3977222c7e52a37
RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8 RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8
RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31 RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31
RNDeviceInfo: b899ce37a403a4dea52b7cb85e16e49c04a5b88e RNDeviceInfo: b899ce37a403a4dea52b7cb85e16e49c04a5b88e
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
RNGestureHandler: 53f1b8fcdf62b349da820ef4616abeed04cde85c RNGestureHandler: 9e0d0a46b7af6d21fbe3343912502afa8baf755e
RNHandoff: d3b0754cca3a6bcd9b25f544f733f7f033ccf5fa RNHandoff: d3b0754cca3a6bcd9b25f544f733f7f033ccf5fa
RNKeychain: bfe3d12bf4620fe488771c414530bf16e88f3678 RNKeychain: bfe3d12bf4620fe488771c414530bf16e88f3678
RNLocalize: b77875884750cb6a58cd6865863fe2ba2729b72b RNLocalize: 4f22418187ecd5ca693231093ff1d912d1b3c9bc
RNPermissions: 9fa74223844f437bc309e112994859dc47194829 RNPermissions: 9fa74223844f437bc309e112994859dc47194829
RNPrivacySnapshot: 71919dde3c6a29dd332115409c2aec564afee8f4 RNPrivacySnapshot: 71919dde3c6a29dd332115409c2aec564afee8f4
RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93 RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93
RNRate: ef3bcff84f39bb1d1e41c5593d3eea4aab2bd73a RNRate: ef3bcff84f39bb1d1e41c5593d3eea4aab2bd73a
RNReactNativeHapticFeedback: ec56a5f81c3941206fd85625fa669ffc7b4545f9 RNReactNativeHapticFeedback: 5eee8b6c8f2b1595f4441e884d4c353c18eb7003
RNReanimated: e71a1d6bb6427f45ea57c5e23f99030129b6db62 RNReanimated: e71a1d6bb6427f45ea57c5e23f99030129b6db62
RNScreens: ad1c105ac9107cf1a613bf80889485458eb20bd7 RNScreens: 01092d6104b707ddd6258dadefc9997a9f523c35
RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c
RNSVG: af3907ac5d4fa26a862b75a16d8f15bc74f2ceda RNSVG: af3907ac5d4fa26a862b75a16d8f15bc74f2ceda
RNVectorIcons: 32462e7c7e58fe457474fc79c4d7de3f0ef08d70 RNVectorIcons: 32462e7c7e58fe457474fc79c4d7de3f0ef08d70
@ -863,6 +858,6 @@ SPEC CHECKSUMS:
TrueSheet: 3ba036b4f20ea78a2953fcf7949e8a60dd63d3f6 TrueSheet: 3ba036b4f20ea78a2953fcf7949e8a60dd63d3f6
Yoga: c32e0be1a17f8f1f0e633a3122f7666441f52c82 Yoga: c32e0be1a17f8f1f0e633a3122f7666441f52c82
PODFILE CHECKSUM: f19eea438501edfe85fb2fa51d40ba1b57540758 PODFILE CHECKSUM: f6f6fbdfa280f2c07d8569ee5cb4ca320636ebf4
COCOAPODS: 1.15.2 COCOAPODS: 1.15.2

View file

@ -6,25 +6,25 @@ brew install cocoapods
echo "CocoaPods installation complete." echo "CocoaPods installation complete."
echo "===== Installing Node.js =====" echo "===== Installing Node.js ====="
brew install node@18 brew install node@20
echo "Node.js installation complete." echo "Node.js installation complete."
# Configure environment to use node@18 # Configure environment to use node@20
echo "Configuring environment to use node@18..." echo "Configuring environment to use node@20..."
echo 'export PATH="/usr/local/opt/node@18/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/usr/local/opt/node@20/bin:$PATH"' >> ~/.zshrc
export PATH="/usr/local/opt/node@18/bin:$PATH" export PATH="/usr/local/opt/node@20/bin:$PATH"
echo 'export LDFLAGS="-L/usr/local/opt/node@18/lib"' >> ~/.zshrc echo 'export LDFLAGS="-L/usr/local/opt/node@20/lib"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/node@18/lib" export LDFLAGS="-L/usr/local/opt/node@20/lib"
echo 'export CPPFLAGS="-I/usr/local/opt/node@18/include"' >> ~/.zshrc echo 'export CPPFLAGS="-I/usr/local/opt/node@20/include"' >> ~/.zshrc
export CPPFLAGS="-I/usr/local/opt/node@18/include" export CPPFLAGS="-I/usr/local/opt/node@20/include"
echo "Configuration complete." echo "Configuration complete."
# Install dependencies using yarn # Install dependencies using npm
echo "===== Running yarn install =====" echo "===== Running npm install ====="
yarn install | tee yarn-install-log.txt npm install -y | tee npm-install-log.txt
echo "yarn install complete. Full log output in yarn-install-log.txt" echo "npm install complete. Full log output in npm-install-log.txt"
echo "===== Running pod install =====" echo "===== Running pod install ====="
cd ios cd ios

View file

@ -102,13 +102,13 @@ lane :fetch_appstore_profiles_catalyst do
end end
desc "Clear derived data" desc "Clear derived data"
lane :clear_derived_data_lane do lane :clear_derived_data_lane do
UI.message("Clearing derived data...") UI.message("Clearing derived data...")
clear_derived_data clear_derived_data
end end
desc "Increment build number" desc "Increment build number"
lane :increment_build_number_lane do lane :increment_build_number_lane do
UI.message("Incrementing build number to current timestamp...") UI.message("Incrementing build number to current timestamp...")
@ -134,7 +134,7 @@ end
scheme: "BlueWallet", scheme: "BlueWallet",
workspace: "BlueWallet.xcworkspace", workspace: "BlueWallet.xcworkspace",
export_method: "app-store", export_method: "app-store",
include_bitcode: true, include_bitcode: false,
configuration: "Release", configuration: "Release",
skip_profile_detection: true, skip_profile_detection: true,
include_symbols: true, include_symbols: true,
@ -211,37 +211,6 @@ end
last_commit = last_git_commit last_commit = last_git_commit
already_built_flag = ".already_built_#{last_commit[:sha]}" already_built_flag = ".already_built_#{last_commit[:sha]}"
File.write(already_built_flag, Time.now.to_s) File.write(already_built_flag, Time.now.to_s)
end
desc "Build and distribute the Mac Catalyst app for BlueWallet-NoLDK (Universal)"
lane :build_and_distribute_catalyst_universal do |options|
# Conditionally fetch the right provisioning profiles
if options[:type] == "development"
fetch_dev_profiles_catalyst
else
fetch_appstore_profiles_catalyst
end
# Build the Mac Catalyst app (Universal Build for Apple Silicon and Intel)
build_app(
scheme: "BlueWallet-NoLDK",
configuration: "Release",
catalyst_platform: "macos",
export_method: options[:type] || "app-store", # Default to app-store if not specified
xcargs: "ARCHS='arm64 x86_64' VALID_ARCHS='arm64 x86_64'",
export_options: {
provisioningProfiles: {
"io.bluewallet.bluewallet" => "Provisioning Profile Name for Catalyst",
# Include other identifiers as necessary
},
signingStyle: "manual",
}
)
# Optionally, upload the build to TestFlight or App Store Connect for app-store type
if options[:type] != "development"
upload_to_testflight(skip_waiting_for_build_processing: true)
end
end end
desc "Update 'What's New' section in App Store Connect for all localizations" desc "Update 'What's New' section in App Store Connect for all localizations"

View file

@ -48,34 +48,17 @@
"network": "خطأ في الشبكة" "network": "خطأ في الشبكة"
}, },
"lnd": { "lnd": {
"active": "نشط",
"inactive": "غير نشط",
"channels": "القنوات",
"no_channels": "لا يوجد قنوات",
"claim_balance": "المطالبة برصيد {balance}",
"close_channel": "اغلق القناة",
"new_channel": "قناة جديدة",
"force_close_channel": "هل تود فرض اغلاق القناة؟",
"expired": "منتهية الصلاحية", "expired": "منتهية الصلاحية",
"node_alias": "اسم النود",
"expiresIn": "تنتهي بعد {time} دقيقة", "expiresIn": "تنتهي بعد {time} دقيقة",
"payButton": "دفع", "payButton": "دفع",
"placeholder": "عنوان أو برقية", "placeholder": "عنوان أو برقية",
"open_channel": "فتح قناة",
"opening_channnel_for_from": "جارِ فتح قناة للمحفظة {forWalletLabel} بتمويل من {fromWalletLabel}",
"are_you_sure_open_channel": "هل أنت متأكد أنك تريد فتح هذه القناة؟",
"potentialFee": "الرسوم المحتملة: {fee}", "potentialFee": "الرسوم المحتملة: {fee}",
"remote_host": "المضيف البعيد",
"refill": "إعادة التعبئة", "refill": "إعادة التعبئة",
"reconnect_peer": "إعادة الاتصال بالأقران",
"refill_create": "للمتابعة، يُرجى إنشاء محفظة بتكوين لإعادة التعبئة باستخدامها.", "refill_create": "للمتابعة، يُرجى إنشاء محفظة بتكوين لإعادة التعبئة باستخدامها.",
"refill_external": "إعادة التعبئة باستخدام محفظة خارجية", "refill_external": "إعادة التعبئة باستخدام محفظة خارجية",
"refill_lnd_balance": "إعادة تعبئة رصيد محفظة البرق (Lightning)", "refill_lnd_balance": "إعادة تعبئة رصيد محفظة البرق (Lightning)",
"sameWalletAsInvoiceError": "لا يمكنك دفع فاتورة بنفس المحفظة المستخدمة لإنشائها.", "sameWalletAsInvoiceError": "لا يمكنك دفع فاتورة بنفس المحفظة المستخدمة لإنشائها.",
"title": "إدارة الأموال", "title": "إدارة الأموال"
"can_send": "يمكن أن ترسل",
"can_receive": "يمكن ان تستقبل",
"view_logs": "عرض السجلات"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "معلومة إضافية", "additional_info": "معلومة إضافية",
@ -427,7 +410,6 @@
"list_tryagain": "إعادة المحاولة", "list_tryagain": "إعادة المحاولة",
"no_ln_wallet_error": "قبل دفع البرقية، يجب عليك أولاً إضافة محفظة برق.", "no_ln_wallet_error": "قبل دفع البرقية، يجب عليك أولاً إضافة محفظة برق.",
"looks_like_bip38": "يبدوا ان هذا مفتاح خاص محمي بكلمة مرور (BIP38).", "looks_like_bip38": "يبدوا ان هذا مفتاح خاص محمي بكلمة مرور (BIP38).",
"reorder_title": "إعادة ترتيب المحافظ",
"please_continue_scanning": "الرجاء متابعة الفحص.", "please_continue_scanning": "الرجاء متابعة الفحص.",
"select_no_bitcoin": "لا توجد محافظ بتكوين متاحة حاليًا.", "select_no_bitcoin": "لا توجد محافظ بتكوين متاحة حاليًا.",
"select_no_bitcoin_exp": "تحتاج إلى محفظة بتكوين لإعادة تعبئة محافظ البرق. يُرجى إنشاء محفظة أو استيراد واحدة.", "select_no_bitcoin_exp": "تحتاج إلى محفظة بتكوين لإعادة تعبئة محافظ البرق. يُرجى إنشاء محفظة أو استيراد واحدة.",

View file

@ -39,13 +39,7 @@
"network": "Памылка Сеткі" "network": "Памылка Сеткі"
}, },
"lnd": { "lnd": {
"inactive": "Неактыўны", "expired": "Скончыўся"
"channels": "Каналы",
"no_channels": "Няма каналаў",
"close_channel": "Зачыніць канал",
"new_channel": "Новы канал",
"expired": "Скончыўся",
"open_channel": "Адкрыць Канал"
}, },
"plausibledeniability": { "plausibledeniability": {
"success": "Посьпех" "success": "Посьпех"

View file

@ -48,37 +48,19 @@
"network": "ختا شبکه" "network": "ختا شبکه"
}, },
"lnd": { "lnd": {
"active": "فعال",
"inactive": "قیر فعال",
"channels": "تورگیل",
"no_channels": "بؽ تورگه",
"claim_balance": "تسویه مۉجۊڌی {balance}",
"close_channel": "بستن تورگه",
"new_channel": "تورگه نۊ",
"errorInvoiceExpired": "سۊرت هساو مونقزی وابیڌه.", "errorInvoiceExpired": "سۊرت هساو مونقزی وابیڌه.",
"force_close_channel": "بستن اجباری تورگه؟",
"expired": "مونقزی وابیڌه", "expired": "مونقزی وابیڌه",
"node_alias": "نوم موستعار گره",
"expiresIn": "تا {time} دیقه دی مونقزی ابۊ", "expiresIn": "تا {time} دیقه دی مونقزی ابۊ",
"payButton": "پرداخت", "payButton": "پرداخت",
"payment": "پرداخت", "payment": "پرداخت",
"placeholder": "سۊرت هساو یا آدرس", "placeholder": "سۊرت هساو یا آدرس",
"open_channel": "گۊشیڌن تورگه",
"funding_amount_placeholder": "هندا بۊدجه، سی نمووه، 0.001",
"opening_channnel_for_from": "هونی تورگه نه اگوشه سی کیف پیل {forWalletLabel}، وا تمین پیل زه {fromWalletLabel}",
"are_you_sure_open_channel": "زه گۊشیڌن ای تورگه اتمینۉ داری؟",
"potentialFee": "کارمزد ائتمالی: {fee}", "potentialFee": "کارمزد ائتمالی: {fee}",
"remote_host": "میزبۉ ره دیر",
"refill": "پور کردن", "refill": "پور کردن",
"reconnect_peer": "منپیز دوارته به همتا",
"refill_create": "سی ادامه، یه کیف پیل بیت کوین سی پور کردن وورکل کۊنین.", "refill_create": "سی ادامه، یه کیف پیل بیت کوین سی پور کردن وورکل کۊنین.",
"refill_external": "پور کردن وا کیف پیل خارجی", "refill_external": "پور کردن وا کیف پیل خارجی",
"refill_lnd_balance": "پور کردن مۉجۊڌی کیف پیل لایتنینگ", "refill_lnd_balance": "پور کردن مۉجۊڌی کیف پیل لایتنینگ",
"sameWalletAsInvoiceError": "ایسا نترین سۊرت هساوی نه وا همو کیف پیلی که وورکل کردین، پرداخت کۊنین.", "sameWalletAsInvoiceError": "ایسا نترین سۊرت هساوی نه وا همو کیف پیلی که وورکل کردین، پرداخت کۊنین.",
"title": "دؽوۉداری دارایی", "title": "دؽوۉداری دارایی"
"can_send": "تره فشنه",
"can_receive": "تره گره",
"view_logs": "نیشتن تفاقا"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "دۉسمندیا بیشتر", "additional_info": "دۉسمندیا بیشتر",

View file

@ -48,30 +48,16 @@
"network": "Error de red" "network": "Error de red"
}, },
"lnd": { "lnd": {
"active": "Actiu",
"inactive": "Inactiu",
"channels": "Canals",
"no_channels": "No hi ha canals",
"claim_balance": "Reclamar el saldo {balance}",
"close_channel": "Tancar el canal",
"new_channel": "Nou canal",
"force_close_channel": "Forçar tancar el canal?",
"expired": "Caducat", "expired": "Caducat",
"node_alias": "Àlies del node",
"expiresIn": "Caduca en {time} minuts", "expiresIn": "Caduca en {time} minuts",
"payButton": "Pagar", "payButton": "Pagar",
"payment": "Pagament", "payment": "Pagament",
"placeholder": "Factura o adreça", "placeholder": "Factura o adreça",
"open_channel": "Obra el canal",
"are_you_sure_open_channel": "Esteu segur que voleu obrir aquest canal?",
"refill": "Recarregar", "refill": "Recarregar",
"refill_external": "Recarregar amb un moneder extern", "refill_external": "Recarregar amb un moneder extern",
"refill_lnd_balance": "Recarregar el balanç del moneder Lightning", "refill_lnd_balance": "Recarregar el balanç del moneder Lightning",
"sameWalletAsInvoiceError": "No pots pagar una factura amb el mateix moneder que l'ha creat.", "sameWalletAsInvoiceError": "No pots pagar una factura amb el mateix moneder que l'ha creat.",
"title": "gestionar fons", "title": "gestionar fons"
"can_send": "Pots enviar",
"can_receive": "Pots rebre",
"view_logs": "Veure Registres"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Informació addicional", "additional_info": "Informació addicional",
@ -299,7 +285,6 @@
"list_long_scan": "Escaneja el codi QR", "list_long_scan": "Escaneja el codi QR",
"list_title": "moneders", "list_title": "moneders",
"list_tryagain": "Torna-ho a provar", "list_tryagain": "Torna-ho a provar",
"reorder_title": "Reorganitzar moneder",
"select_wallet": "Seleccioni moneder", "select_wallet": "Seleccioni moneder",
"xpub_copiedToClipboard": "Copiat al porta-retalls." "xpub_copiedToClipboard": "Copiat al porta-retalls."
}, },

View file

@ -52,37 +52,19 @@
"network": "Chyba sítě" "network": "Chyba sítě"
}, },
"lnd": { "lnd": {
"active": "Aktivní",
"inactive": "Neaktivní",
"channels": "Kanály",
"no_channels": "Žádné kanály",
"claim_balance": "Požadovat zůstatek {balance}",
"close_channel": "Zavřít kanál",
"new_channel": "Nový kanál",
"errorInvoiceExpired": "Platnost faktury vypršela.", "errorInvoiceExpired": "Platnost faktury vypršela.",
"force_close_channel": "Vynutit uzavření kanálu?",
"expired": "Expirováno", "expired": "Expirováno",
"node_alias": "Alias uzlu",
"expiresIn": "Vyprší za {time} minut", "expiresIn": "Vyprší za {time} minut",
"payButton": "Zaplatit", "payButton": "Zaplatit",
"payment": "Platba", "payment": "Platba",
"placeholder": "Faktura nebo adresa", "placeholder": "Faktura nebo adresa",
"open_channel": "Otevřít kanál",
"funding_amount_placeholder": "Výše financování, např. 0,001",
"opening_channnel_for_from": "Otevření kanálu pro peněženku {forWalletLabel}, financováním z {fromWalletLabel}",
"are_you_sure_open_channel": "Jste si jisti, že chcete tento kanál otevřít?",
"potentialFee": "Potenciální poplatek: {fee}", "potentialFee": "Potenciální poplatek: {fee}",
"remote_host": "Vzdálený hostitel",
"refill": "Doplnit", "refill": "Doplnit",
"reconnect_peer": "Znovu připojit peera",
"refill_create": "Chcete-li pokračovat, vytvořte prosím bitcoinovou peněženku, kterou můžete doplnit.", "refill_create": "Chcete-li pokračovat, vytvořte prosím bitcoinovou peněženku, kterou můžete doplnit.",
"refill_external": "Doplnit pomocí externí peněženky", "refill_external": "Doplnit pomocí externí peněženky",
"refill_lnd_balance": "Doplnit zůstatek na Lightning peněžence", "refill_lnd_balance": "Doplnit zůstatek na Lightning peněžence",
"sameWalletAsInvoiceError": "Fakturu nemůžete zaplatit pomocí stejné peněženky, kterou jste použili k jejímu vytvoření.", "sameWalletAsInvoiceError": "Fakturu nemůžete zaplatit pomocí stejné peněženky, kterou jste použili k jejímu vytvoření.",
"title": "Správa prostředků", "title": "Správa prostředků"
"can_send": "Může odeslat",
"can_receive": "Může přijmout",
"view_logs": "Zobrazit logy"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Dodatečné informace", "additional_info": "Dodatečné informace",
@ -187,6 +169,7 @@
"fee_1d": "1 d", "fee_1d": "1 d",
"fee_3h": "3 h", "fee_3h": "3 h",
"fee_custom": "Vlastní", "fee_custom": "Vlastní",
"insert_custom_fee": "Vložte vlastní poplatek",
"fee_fast": "Rychle", "fee_fast": "Rychle",
"fee_medium": "Středně rychle", "fee_medium": "Středně rychle",
"fee_replace_minvb": "Celková sazba poplatku (satoshi na vByte), kterou chcete zaplatit, by měla být vyšší než {min} sat/vByte.", "fee_replace_minvb": "Celková sazba poplatku (satoshi na vByte), kterou chcete zaplatit, by měla být vyšší než {min} sat/vByte.",
@ -484,7 +467,8 @@
"list_tryagain": "Zkuste to znovu", "list_tryagain": "Zkuste to znovu",
"no_ln_wallet_error": "Před zaplacením Lightning faktury musíte nejdříve přidat Lightning peněženku.", "no_ln_wallet_error": "Před zaplacením Lightning faktury musíte nejdříve přidat Lightning peněženku.",
"looks_like_bip38": "Tohle vypadá jako soukromý klíč chráněný heslem (BIP38).", "looks_like_bip38": "Tohle vypadá jako soukromý klíč chráněný heslem (BIP38).",
"reorder_title": "Seřadit peněženky", "manage_title": "Spravovat peněženky",
"no_results_found": "Nebyly nalezeny žádné výsledky.",
"please_continue_scanning": "Pokračujte ve skenování.", "please_continue_scanning": "Pokračujte ve skenování.",
"select_no_bitcoin": "V současné době nejsou k dispozici žádné bitcoinové peněženky.", "select_no_bitcoin": "V současné době nejsou k dispozici žádné bitcoinové peněženky.",
"select_no_bitcoin_exp": "Bitcoinová peněženka je vyžadována pro doplnění Lightning peněženky. Nějakou prosím vytvořte nebo importujte.", "select_no_bitcoin_exp": "Bitcoinová peněženka je vyžadována pro doplnění Lightning peněženky. Nějakou prosím vytvořte nebo importujte.",
@ -495,7 +479,7 @@
"add_ln_wallet_first": "Nejdříve musíte přidat Lightning peněženku.", "add_ln_wallet_first": "Nejdříve musíte přidat Lightning peněženku.",
"identity_pubkey": "Identity Pubkey", "identity_pubkey": "Identity Pubkey",
"xpub_title": "XPUB peněženky", "xpub_title": "XPUB peněženky",
"search_wallets": "Vyhledat peněženky" "manage_wallets_search_placeholder": "Prohledat peněženky, poznámky"
}, },
"multisig": { "multisig": {
"multisig_vault": "Úložiště", "multisig_vault": "Úložiště",

View file

@ -111,7 +111,6 @@
"list_create_a_wallet": "Tilføj en tegnebog", "list_create_a_wallet": "Tilføj en tegnebog",
"list_empty_txs1": "Dine transaktioner vil blive vist her,", "list_empty_txs1": "Dine transaktioner vil blive vist her,",
"list_latest_transaction": "seneste transaktion", "list_latest_transaction": "seneste transaktion",
"reorder_title": "Ændre rækkefølgen af wallets",
"select_wallet": "Vælg wallet", "select_wallet": "Vælg wallet",
"xpub_copiedToClipboard": "Kopieret til udklipsholder." "xpub_copiedToClipboard": "Kopieret til udklipsholder."
}, },

View file

@ -52,37 +52,19 @@
"network": "Netzwerkfehler" "network": "Netzwerkfehler"
}, },
"lnd": { "lnd": {
"active": "Aktiv",
"inactive": "Inaktiv",
"channels": "Kanäle",
"no_channels": "Keine Kanäle",
"claim_balance": "Saldo von {balance} beanspruchen",
"close_channel": "Kanal schließen",
"new_channel": "Neuer Kanal",
"errorInvoiceExpired": "Rechnung verfallen.", "errorInvoiceExpired": "Rechnung verfallen.",
"force_close_channel": "Kanal zwangsweise schließen?",
"expired": "Abgelaufen", "expired": "Abgelaufen",
"node_alias": "Knoten-Alias",
"expiresIn": "Läuft in {time} Minuten ab", "expiresIn": "Läuft in {time} Minuten ab",
"payButton": "Zahlen", "payButton": "Zahlen",
"payment": "Zahlung", "payment": "Zahlung",
"placeholder": "Rechnung oder Adresse", "placeholder": "Rechnung oder Adresse",
"open_channel": "Kanal öffnen",
"funding_amount_placeholder": "Finanzierungsbetrag, z.B. 0.001",
"opening_channnel_for_from": "Kanal für Wallet {forWalletLabel} finanziert durch Wallet {fromWalletLabel} eröffnen.",
"are_you_sure_open_channel": "Diesen Kanal definitiv eröffnen?",
"potentialFee": "Geschätzte Gebühr: {fee}", "potentialFee": "Geschätzte Gebühr: {fee}",
"remote_host": "Entfernter Rechner",
"refill": "Aufladen", "refill": "Aufladen",
"reconnect_peer": "Erneut zu Peer verbinden",
"refill_create": "Bitte eine Bitcoin Wallet erstellen um fortzufahren", "refill_create": "Bitte eine Bitcoin Wallet erstellen um fortzufahren",
"refill_external": "Mit externem Wallet aufladen", "refill_external": "Mit externem Wallet aufladen",
"refill_lnd_balance": "Lade deine Lightning Wallet auf", "refill_lnd_balance": "Lade deine Lightning Wallet auf",
"sameWalletAsInvoiceError": "Du kannst nicht die Rechnung mit der Wallet begleichen, die du für die Erstellung dieser Rechnung verwendet hast.", "sameWalletAsInvoiceError": "Du kannst nicht die Rechnung mit der Wallet begleichen, die du für die Erstellung dieser Rechnung verwendet hast.",
"title": "Beträge verwalten", "title": "Beträge verwalten"
"can_send": "Kann senden",
"can_receive": "Kann empfangen",
"view_logs": "Protokolle anzeigen"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Weiterführende Informationen", "additional_info": "Weiterführende Informationen",
@ -475,7 +457,6 @@
"list_tryagain": "Nochmal versuchen", "list_tryagain": "Nochmal versuchen",
"no_ln_wallet_error": "Vor Bezahlung einer Lightning Rechnung zuerst ein Lightning Wallet eröffnen.", "no_ln_wallet_error": "Vor Bezahlung einer Lightning Rechnung zuerst ein Lightning Wallet eröffnen.",
"looks_like_bip38": "Passwortgeschützter Privatschlüssel (BIP38) erkannt.", "looks_like_bip38": "Passwortgeschützter Privatschlüssel (BIP38) erkannt.",
"reorder_title": "Wallets neu ordnen",
"please_continue_scanning": "Bitte Scanvorgang fortsetzten", "please_continue_scanning": "Bitte Scanvorgang fortsetzten",
"select_no_bitcoin": "Es sind momentan keine Bitcoin Wallets verfügbar.", "select_no_bitcoin": "Es sind momentan keine Bitcoin Wallets verfügbar.",
"select_no_bitcoin_exp": "Eine Bitcoin Wallet ist Voraussetzung dafür, um eine Lightning Wallet zu befüllen. Bitte erstelle oder importiere eines.", "select_no_bitcoin_exp": "Eine Bitcoin Wallet ist Voraussetzung dafür, um eine Lightning Wallet zu befüllen. Bitte erstelle oder importiere eines.",
@ -485,8 +466,7 @@
"warning_do_not_disclose": "Warnung! Nicht veröffentlichen", "warning_do_not_disclose": "Warnung! Nicht veröffentlichen",
"add_ln_wallet_first": "Bitte zuerst ein Lightning-Wallet hinzufügen.", "add_ln_wallet_first": "Bitte zuerst ein Lightning-Wallet hinzufügen.",
"identity_pubkey": "Pubkey-Identität", "identity_pubkey": "Pubkey-Identität",
"xpub_title": "Wallet xPub", "xpub_title": "Wallet xPub"
"search_wallets": "Wallets suchen"
}, },
"multisig": { "multisig": {
"multisig_vault": "Tresor", "multisig_vault": "Tresor",

View file

@ -36,28 +36,16 @@
"network": "Σφάλμα δικτύου" "network": "Σφάλμα δικτύου"
}, },
"lnd": { "lnd": {
"active": "Ενεργό",
"inactive": "Ανενεργό",
"channels": "Κανάλια",
"no_channels": "Δεν υπάρχουν κανάλια",
"close_channel": "Κλείσιμο καναλιού",
"new_channel": "Νέο κανάλι",
"errorInvoiceExpired": "Το τιμολόγιο έληξε", "errorInvoiceExpired": "Το τιμολόγιο έληξε",
"expired": "Έληξε", "expired": "Έληξε",
"node_alias": "Ψευδώνυμο κόμβου",
"expiresIn": "Λήγει σε {time} λεπτά", "expiresIn": "Λήγει σε {time} λεπτά",
"payButton": "Πληρωμή", "payButton": "Πληρωμή",
"payment": "Πληρωμή", "payment": "Πληρωμή",
"placeholder": "Τιμολόγιο ή διεύθυνση", "placeholder": "Τιμολόγιο ή διεύθυνση",
"open_channel": "Άνοιγμα καναλιού",
"are_you_sure_open_channel": "Είσαι βέβαιος ότι θέλεις να ανοίξεις αυτό το κανάλι;",
"remote_host": "Απομακρυσμένος υπολογιστής",
"refill": "Γέμισμα πορτοφολιού", "refill": "Γέμισμα πορτοφολιού",
"refill_lnd_balance": "Γέμισε το πορτοφόλι Lightning", "refill_lnd_balance": "Γέμισε το πορτοφόλι Lightning",
"sameWalletAsInvoiceError": "Δεν μπορείς να εξοφλήσεις ένα τιμολόγιο από το ίδιο πορτοφόλι με το οποίο δημιουργήθηκε.", "sameWalletAsInvoiceError": "Δεν μπορείς να εξοφλήσεις ένα τιμολόγιο από το ίδιο πορτοφόλι με το οποίο δημιουργήθηκε.",
"title": "Διαχείριση χρημάτων", "title": "Διαχείριση χρημάτων"
"can_send": "Μπορεί να αποσταλεί",
"can_receive": "Μπορεί να ληφθεί"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Επιπρόσθετη πληροφορία", "additional_info": "Επιπρόσθετη πληροφορία",
@ -314,7 +302,6 @@
"list_long_scan": "Σάρωση QR Code", "list_long_scan": "Σάρωση QR Code",
"list_title": "Πορτοφόλια", "list_title": "Πορτοφόλια",
"list_tryagain": "Προσπαθήστε ξανά", "list_tryagain": "Προσπαθήστε ξανά",
"reorder_title": "Αναδιάταξη των πορτοφολιών",
"select_wallet": "Επιλογή πορτοφολιού", "select_wallet": "Επιλογή πορτοφολιού",
"xpub_copiedToClipboard": "Αντιγράφηκε στο πρόχειρο", "xpub_copiedToClipboard": "Αντιγράφηκε στο πρόχειρο",
"xpub_title": "XPUB του πορτοφολιού" "xpub_title": "XPUB του πορτοφολιού"

View file

@ -52,37 +52,19 @@
"network": "Network Error" "network": "Network Error"
}, },
"lnd": { "lnd": {
"active": "Active",
"inactive": "Inactive",
"channels": "Channels",
"no_channels": "No channels",
"claim_balance": "Claim balance {balance}",
"close_channel": "Close channel",
"new_channel": "New channel",
"errorInvoiceExpired": "Invoice expired.", "errorInvoiceExpired": "Invoice expired.",
"force_close_channel": "Force close channel?",
"expired": "Expired", "expired": "Expired",
"node_alias": "Node alias",
"expiresIn": "Expires in {time} minutes", "expiresIn": "Expires in {time} minutes",
"payButton": "Pay", "payButton": "Pay",
"payment": "Payment", "payment": "Payment",
"placeholder": "Invoice or address", "placeholder": "Invoice or address",
"open_channel": "Open Channel",
"funding_amount_placeholder": "Funding amount, for example, 0.001",
"opening_channnel_for_from": "Opening channel for wallet {forWalletLabel}, by funding from {fromWalletLabel}",
"are_you_sure_open_channel": "Are you sure you want to open this channel?",
"potentialFee": "Potential fee: {fee}", "potentialFee": "Potential fee: {fee}",
"remote_host": "Remote host",
"refill": "Refill", "refill": "Refill",
"reconnect_peer": "Reconnect peer",
"refill_create": "In order to proceed, please create a Bitcoin wallet to refill with.", "refill_create": "In order to proceed, please create a Bitcoin wallet to refill with.",
"refill_external": "Refill with External Wallet", "refill_external": "Refill with External Wallet",
"refill_lnd_balance": "Refill Lightning Wallet Balance", "refill_lnd_balance": "Refill Lightning Wallet Balance",
"sameWalletAsInvoiceError": "You cannot pay an invoice with the same wallet used to create it.", "sameWalletAsInvoiceError": "You cannot pay an invoice with the same wallet used to create it.",
"title": "Manage Funds", "title": "Manage Funds"
"can_send": "Can Send",
"can_receive": "Can Receive",
"view_logs": "View Logs"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Additional Information", "additional_info": "Additional Information",
@ -187,6 +169,7 @@
"fee_1d": "1d", "fee_1d": "1d",
"fee_3h": "3h", "fee_3h": "3h",
"fee_custom": "Custom", "fee_custom": "Custom",
"insert_custom_fee": "Insert custom fee",
"fee_fast": "Fast", "fee_fast": "Fast",
"fee_medium": "Medium", "fee_medium": "Medium",
"fee_replace_minvb": "The total fee rate (satoshi per vByte) you want to pay should be higher than {min} sat/vByte.", "fee_replace_minvb": "The total fee rate (satoshi per vByte) you want to pay should be higher than {min} sat/vByte.",
@ -484,7 +467,8 @@
"list_tryagain": "Try again", "list_tryagain": "Try again",
"no_ln_wallet_error": "Before paying a Lightning invoice, you must first add a Lightning wallet.", "no_ln_wallet_error": "Before paying a Lightning invoice, you must first add a Lightning wallet.",
"looks_like_bip38": "This looks like a password-protected private key (BIP38).", "looks_like_bip38": "This looks like a password-protected private key (BIP38).",
"reorder_title": "Re-order Wallets", "manage_title": "Manage Wallets",
"no_results_found": "No results found.",
"please_continue_scanning": "Please continue scanning.", "please_continue_scanning": "Please continue scanning.",
"select_no_bitcoin": "There are currently no Bitcoin wallets available.", "select_no_bitcoin": "There are currently no Bitcoin wallets available.",
"select_no_bitcoin_exp": "A Bitcoin wallet is required to refill Lightning wallets. Please create or import one.", "select_no_bitcoin_exp": "A Bitcoin wallet is required to refill Lightning wallets. Please create or import one.",
@ -495,7 +479,7 @@
"add_ln_wallet_first": "You must first add a Lightning wallet.", "add_ln_wallet_first": "You must first add a Lightning wallet.",
"identity_pubkey": "Identity Pubkey", "identity_pubkey": "Identity Pubkey",
"xpub_title": "Wallet XPUB", "xpub_title": "Wallet XPUB",
"search_wallets": "Search Wallets" "manage_wallets_search_placeholder": "Search wallets, memos"
}, },
"multisig": { "multisig": {
"multisig_vault": "Vault", "multisig_vault": "Vault",

View file

@ -40,33 +40,16 @@
"network": "Error de red" "network": "Error de red"
}, },
"lnd": { "lnd": {
"active": "Activo",
"inactive": "Inactivo",
"channels": "Canales",
"no_channels": "Sin canales",
"claim_balance": "Reclamar saldo {balance}",
"close_channel": "Cerrar canal",
"new_channel": "Nuevo canal",
"force_close_channel": "¿Forzar el cierre del canal?",
"expired": "Expirado", "expired": "Expirado",
"node_alias": "Alias del nodo",
"expiresIn": "Expira en {time} minutos", "expiresIn": "Expira en {time} minutos",
"payButton": "Pagar", "payButton": "Pagar",
"open_channel": "Abrir canal",
"opening_channnel_for_from": "Abrir canal para la cartera {forWalletLabel}, financiado desde {fromWalletLabel}",
"are_you_sure_open_channel": "¿Estás seguro de que quieres abrir este canal?",
"potentialFee": "Comisión estimada: {fee}", "potentialFee": "Comisión estimada: {fee}",
"remote_host": "Host remoto",
"refill": "Recargar", "refill": "Recargar",
"reconnect_peer": "Reconectar a los pares",
"refill_create": "Para continuar, por favor crea una cartera de Bitcoin con la que recargar.", "refill_create": "Para continuar, por favor crea una cartera de Bitcoin con la que recargar.",
"refill_external": "Recargar con una cartera externa", "refill_external": "Recargar con una cartera externa",
"refill_lnd_balance": "Recargar saldo de la cartera Lightning", "refill_lnd_balance": "Recargar saldo de la cartera Lightning",
"sameWalletAsInvoiceError": "No puedes pagar una factura con la misma cartera que usaste para crearla.", "sameWalletAsInvoiceError": "No puedes pagar una factura con la misma cartera que usaste para crearla.",
"title": "Administrar fondos", "title": "Administrar fondos"
"can_send": "Puede enviar",
"can_receive": "Puede recibir",
"view_logs": "Ver registros"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Información adicional", "additional_info": "Información adicional",
@ -414,7 +397,6 @@
"list_tryagain": "Inténtalo otra vez", "list_tryagain": "Inténtalo otra vez",
"no_ln_wallet_error": "Antes de pagar una factura Lightning, primero debe agregar una cartera Lightning.", "no_ln_wallet_error": "Antes de pagar una factura Lightning, primero debe agregar una cartera Lightning.",
"looks_like_bip38": "Parece que esto es una llave privada protegida con contraseña (BIP38).", "looks_like_bip38": "Parece que esto es una llave privada protegida con contraseña (BIP38).",
"reorder_title": "Reorganizar carteras",
"please_continue_scanning": "Por favor, continúa escaneando.", "please_continue_scanning": "Por favor, continúa escaneando.",
"select_no_bitcoin": "No hay carteras de Bitcoin disponibles.", "select_no_bitcoin": "No hay carteras de Bitcoin disponibles.",
"select_no_bitcoin_exp": "Una cartera de Bitcoin es necesaria para recargar una cartera Lightning. Por favor, cree o importe una.", "select_no_bitcoin_exp": "Una cartera de Bitcoin es necesaria para recargar una cartera Lightning. Por favor, cree o importe una.",

View file

@ -52,37 +52,19 @@
"network": "Error de red" "network": "Error de red"
}, },
"lnd": { "lnd": {
"active": "Activo",
"inactive": "Inactivo",
"channels": "Canales",
"no_channels": "Sin canales",
"claim_balance": "Reclamar saldo {balance}",
"close_channel": "Cerrar canal",
"new_channel": "Nuevo canal",
"errorInvoiceExpired": "Factura caducada.", "errorInvoiceExpired": "Factura caducada.",
"force_close_channel": "¿Forzar el cierre del canal?",
"expired": "Expirado", "expired": "Expirado",
"node_alias": "Alias del nodo",
"expiresIn": "Expira en {time} minutos", "expiresIn": "Expira en {time} minutos",
"payButton": "Pagar", "payButton": "Pagar",
"payment": "Pago", "payment": "Pago",
"placeholder": "Factura o dirección", "placeholder": "Factura o dirección",
"open_channel": "Abrir canal",
"funding_amount_placeholder": "Importe de financiación, por ejemplo, 0,001",
"opening_channnel_for_from": "Abrir canal para la billetera {forWalletLabel}, por la financiación de {fromWalletLabel}",
"are_you_sure_open_channel": "¿Estás seguro de que quieres abrir este canal?",
"potentialFee": "Tasas potenciales: {fee}", "potentialFee": "Tasas potenciales: {fee}",
"remote_host": "Host remoto",
"refill": "Recarga", "refill": "Recarga",
"reconnect_peer": "Reconectar a los pares",
"refill_create": "Para continuar, crea una billetera Bitcoin para recargar.", "refill_create": "Para continuar, crea una billetera Bitcoin para recargar.",
"refill_external": "Recarga con billetera externa", "refill_external": "Recarga con billetera externa",
"refill_lnd_balance": "Recargar el saldo de la billetera Lightning", "refill_lnd_balance": "Recargar el saldo de la billetera Lightning",
"sameWalletAsInvoiceError": "No puedes pagar una factura con la misma billetera que usaste para crearla.", "sameWalletAsInvoiceError": "No puedes pagar una factura con la misma billetera que usaste para crearla.",
"title": "Manejar fondos", "title": "Manejar fondos"
"can_send": "Puede enviar",
"can_receive": "Puede recibir",
"view_logs": "Ver registros"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Información adicional", "additional_info": "Información adicional",
@ -484,7 +466,6 @@
"list_tryagain": "Intenta otra vez", "list_tryagain": "Intenta otra vez",
"no_ln_wallet_error": "Antes de pagar una factura Lightning, primero debes agregar una billetera Lightning.", "no_ln_wallet_error": "Antes de pagar una factura Lightning, primero debes agregar una billetera Lightning.",
"looks_like_bip38": "Esto parece una clave privada protegida por contraseña (BIP38).", "looks_like_bip38": "Esto parece una clave privada protegida por contraseña (BIP38).",
"reorder_title": "Reorganizar Billeteras",
"please_continue_scanning": "Por favor continúa escaneando.", "please_continue_scanning": "Por favor continúa escaneando.",
"select_no_bitcoin": "Actualmente no hay billeteras Bitcoin disponibles.", "select_no_bitcoin": "Actualmente no hay billeteras Bitcoin disponibles.",
"select_no_bitcoin_exp": "Se requiere una billetera Bitcoin para recargar las billeteras Lightning. Por favor, crea o importa una.", "select_no_bitcoin_exp": "Se requiere una billetera Bitcoin para recargar las billeteras Lightning. Por favor, crea o importa una.",
@ -494,8 +475,7 @@
"warning_do_not_disclose": "¡Advertencia! No revelar.", "warning_do_not_disclose": "¡Advertencia! No revelar.",
"add_ln_wallet_first": "Primero debes agregar una billetera Lightning.", "add_ln_wallet_first": "Primero debes agregar una billetera Lightning.",
"identity_pubkey": "Identidad Pubkey", "identity_pubkey": "Identidad Pubkey",
"xpub_title": "XPUB de la billetera", "xpub_title": "XPUB de la billetera"
"search_wallets": "Buscar billeteras"
}, },
"multisig": { "multisig": {
"multisig_vault": "Bóveda", "multisig_vault": "Bóveda",

View file

@ -48,35 +48,18 @@
"network": "خطای شبکه" "network": "خطای شبکه"
}, },
"lnd": { "lnd": {
"active": "فعال",
"inactive": "غیرفعال",
"channels": "کانال‌ها",
"no_channels": "بدون کانال",
"claim_balance": "تسویهٔ موجودی {balance}",
"close_channel": "بستن کانال",
"new_channel": "کانال جدید",
"force_close_channel": "بستن اجباری کانال؟",
"expired": "منقضی‌شده", "expired": "منقضی‌شده",
"node_alias": "نام مستعار گره",
"expiresIn": "تا {time} دقیقهٔ دیگر منقضی می‌شود", "expiresIn": "تا {time} دقیقهٔ دیگر منقضی می‌شود",
"payButton": "پرداخت", "payButton": "پرداخت",
"payment": "پرداخت", "payment": "پرداخت",
"placeholder": "صورت‌حساب یا آدرس", "placeholder": "صورت‌حساب یا آدرس",
"open_channel": "بازکردن کانال",
"opening_channnel_for_from": "درحال بازکردن کانال برای کیف پول {forWalletLabel}، با تأمین وجه از {fromWalletLabel}",
"are_you_sure_open_channel": "آیا از بازکردن این کانال اطمینان دارید؟",
"potentialFee": "کارمزد احتمالی: {fee}", "potentialFee": "کارمزد احتمالی: {fee}",
"remote_host": "میزبان راه‌دور",
"refill": "پرکردن", "refill": "پرکردن",
"reconnect_peer": "اتصال مجدد به همتا",
"refill_create": "جهت ادامه، لطفاً یک کیف پول بیت‌کوین جهت پرکردن ایجاد کنید.", "refill_create": "جهت ادامه، لطفاً یک کیف پول بیت‌کوین جهت پرکردن ایجاد کنید.",
"refill_external": "پرکردن با کیف پول خارجی", "refill_external": "پرکردن با کیف پول خارجی",
"refill_lnd_balance": "پرکردن موجودی کیف پول لایتنینگ", "refill_lnd_balance": "پرکردن موجودی کیف پول لایتنینگ",
"sameWalletAsInvoiceError": "شما نمی‌توانید صورت‌حسابی را با همان کیف پولی که برای ایجاد آن استفاده کرده‌اید بپردازید.", "sameWalletAsInvoiceError": "شما نمی‌توانید صورت‌حسابی را با همان کیف پولی که برای ایجاد آن استفاده کرده‌اید بپردازید.",
"title": "مدیریت دارایی", "title": "مدیریت دارایی"
"can_send": "می‌تواند ارسال کند",
"can_receive": "می‌تواند دریافت کند",
"view_logs": "مشاهدهٔ رخدادها"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "اطلاعات بیشتر", "additional_info": "اطلاعات بیشتر",
@ -434,7 +417,6 @@
"list_tryagain": "دوباره امتحان کنید", "list_tryagain": "دوباره امتحان کنید",
"no_ln_wallet_error": "قبل از پرداخت یک صورت‌حساب لایتنینگ، ابتدا باید یک کیف پول لایتنینگ اضافه کنید.", "no_ln_wallet_error": "قبل از پرداخت یک صورت‌حساب لایتنینگ، ابتدا باید یک کیف پول لایتنینگ اضافه کنید.",
"looks_like_bip38": "این به کلید خصوصی محافظت‌شده با گذرواژه (BIP38) شباهت دارد.", "looks_like_bip38": "این به کلید خصوصی محافظت‌شده با گذرواژه (BIP38) شباهت دارد.",
"reorder_title": "بازچینی کیف پول‌ها",
"please_continue_scanning": "لطفاً به اسکن‌کردن ادامه دهید.", "please_continue_scanning": "لطفاً به اسکن‌کردن ادامه دهید.",
"select_no_bitcoin": "هیچ کیف پول بیت‌کوینی درحال‌حاضر دردسترس نیست.", "select_no_bitcoin": "هیچ کیف پول بیت‌کوینی درحال‌حاضر دردسترس نیست.",
"select_no_bitcoin_exp": "یک کیف پول بیت‌کوین برای پرکردن کیف پول‌های لایتنینگ نیاز است. لطفاً یکی بسازید یا وارد کنید.", "select_no_bitcoin_exp": "یک کیف پول بیت‌کوین برای پرکردن کیف پول‌های لایتنینگ نیاز است. لطفاً یکی بسازید یا وارد کنید.",
@ -444,8 +426,7 @@
"warning_do_not_disclose": "هشدار! فاش نکنید.", "warning_do_not_disclose": "هشدار! فاش نکنید.",
"add_ln_wallet_first": "ابتدا باید یک کیف پول لایتنینگ اضافه کنید.", "add_ln_wallet_first": "ابتدا باید یک کیف پول لایتنینگ اضافه کنید.",
"identity_pubkey": "هویت/کلید عمومی", "identity_pubkey": "هویت/کلید عمومی",
"xpub_title": "کلید XPUB کیف پول", "xpub_title": "کلید XPUB کیف پول"
"search_wallets": "جستجوی کیف‌پول‌ها"
}, },
"multisig": { "multisig": {
"multisig_vault": "گاوصندوق", "multisig_vault": "گاوصندوق",

View file

@ -51,37 +51,19 @@
"network": "Verkkovirhe" "network": "Verkkovirhe"
}, },
"lnd": { "lnd": {
"active": "Aktiivinen",
"inactive": "Passiivinen",
"channels": "Kanavat",
"no_channels": "Ei kanavia",
"claim_balance": "Lunasta saldo {balance}",
"close_channel": "Sulje kanava",
"new_channel": "Uusi kanava",
"errorInvoiceExpired": "Lasku vanheni.", "errorInvoiceExpired": "Lasku vanheni.",
"force_close_channel": "Pakota kanavan sulku?",
"expired": "Erääntynyt", "expired": "Erääntynyt",
"node_alias": "Solmun lempinimi",
"expiresIn": "Vanhenee {time} minuutissa", "expiresIn": "Vanhenee {time} minuutissa",
"payButton": "Maksa", "payButton": "Maksa",
"payment": "Maksu", "payment": "Maksu",
"placeholder": "Lasku", "placeholder": "Lasku",
"open_channel": "Avaa kanava",
"funding_amount_placeholder": "Rahoitettava määrä, esimerkiksi 0.001",
"opening_channnel_for_from": "Ota rahoitus {fromWalletLabel}:sta kanavan avaamiseksi lompakkoon {forWalletLabel}",
"are_you_sure_open_channel": "Oletko varma että haluat avata tämän kanavan?",
"potentialFee": "Mahdollinen siirtokulu: {fee}", "potentialFee": "Mahdollinen siirtokulu: {fee}",
"remote_host": "Etäpalvelin",
"refill": "Täytä", "refill": "Täytä",
"reconnect_peer": "Palauta yhteys naapuriin",
"refill_create": "Jatka luomalla Bitcoin-lompakko, jolla voit täyttää sen.", "refill_create": "Jatka luomalla Bitcoin-lompakko, jolla voit täyttää sen.",
"refill_external": "Täytä ulkoisella lompakolla", "refill_external": "Täytä ulkoisella lompakolla",
"refill_lnd_balance": "Täytä Salamalompakon saldoa", "refill_lnd_balance": "Täytä Salamalompakon saldoa",
"sameWalletAsInvoiceError": "Et voi maksaa laskua samalla lompakolla, jolla se on luotu.", "sameWalletAsInvoiceError": "Et voi maksaa laskua samalla lompakolla, jolla se on luotu.",
"title": "hallinnoi varoja", "title": "hallinnoi varoja"
"can_send": "Lähetettävissä",
"can_receive": "Vastaanotettavissa",
"view_logs": "Näytä lokitiedot"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Lisäinformaatio", "additional_info": "Lisäinformaatio",
@ -460,7 +442,6 @@
"list_tryagain": "Yritä uudelleen", "list_tryagain": "Yritä uudelleen",
"no_ln_wallet_error": "Ennen kuin maksat Salamalaskun, sinun on ensin lisättävä Salamalompakko.", "no_ln_wallet_error": "Ennen kuin maksat Salamalaskun, sinun on ensin lisättävä Salamalompakko.",
"looks_like_bip38": "Tämä näyttää salasanalla suojatulta yksityiseltä avaimelta (BIP38)", "looks_like_bip38": "Tämä näyttää salasanalla suojatulta yksityiseltä avaimelta (BIP38)",
"reorder_title": "Järjestele Lompakot",
"please_continue_scanning": "Jatka skannausta", "please_continue_scanning": "Jatka skannausta",
"select_no_bitcoin": "Bitcoin-lompakkoa ei tällä hetkellä ole saatavana.", "select_no_bitcoin": "Bitcoin-lompakkoa ei tällä hetkellä ole saatavana.",
"select_no_bitcoin_exp": "Bitcoin-lompakkoa vaaditaan Salamalompakkojen täyttämiseksi. Luo tai tuo yksi.", "select_no_bitcoin_exp": "Bitcoin-lompakkoa vaaditaan Salamalompakkojen täyttämiseksi. Luo tai tuo yksi.",
@ -470,8 +451,7 @@
"warning_do_not_disclose": "Varoitus! Älä paljasta", "warning_do_not_disclose": "Varoitus! Älä paljasta",
"add_ln_wallet_first": "Sinun on ensin lisättävä Salamalompakko.", "add_ln_wallet_first": "Sinun on ensin lisättävä Salamalompakko.",
"identity_pubkey": "Tunnus Pubkey", "identity_pubkey": "Tunnus Pubkey",
"xpub_title": "lompakon XPUB", "xpub_title": "lompakon XPUB"
"search_wallets": "Etsi lompakoista"
}, },
"multisig": { "multisig": {
"multisig_vault": "Vault", "multisig_vault": "Vault",

View file

@ -43,36 +43,18 @@
"network": "Erreur réseau" "network": "Erreur réseau"
}, },
"lnd": { "lnd": {
"active": "Actif",
"inactive": "Inactif",
"channels": "Canaux",
"no_channels": "Pas de canaux",
"claim_balance": "Réclamer le solde {balance}",
"close_channel": "Fermer le canal",
"new_channel": "Nouveau canal",
"errorInvoiceExpired": "Requête expirée.", "errorInvoiceExpired": "Requête expirée.",
"force_close_channel": "Forcer la fermeture du canal ?",
"expired": "Expiré", "expired": "Expiré",
"node_alias": "Alias du node",
"expiresIn": "Expire dans {time} minutes", "expiresIn": "Expire dans {time} minutes",
"payButton": "Payer", "payButton": "Payer",
"placeholder": "Facture ou adresse", "placeholder": "Facture ou adresse",
"open_channel": "Ouverture canal",
"funding_amount_placeholder": "Montant financement, par exemple 0,001",
"opening_channnel_for_from": "Canal d'ouverture pour le portefeuille {forWalletLabel}, financement depuis {fromWalletLabel}",
"are_you_sure_open_channel": "Etes vous sûre de vouloir ouvrir ce canal?",
"potentialFee": "Frais potentiels : {fee}", "potentialFee": "Frais potentiels : {fee}",
"remote_host": "Hôte distant",
"refill": "Déposer des fonds", "refill": "Déposer des fonds",
"reconnect_peer": "Reconnecter le pair",
"refill_create": "Pour continuer, veuillez créer un portefeuille Bitcoin à partir duquel déposer des fonds.", "refill_create": "Pour continuer, veuillez créer un portefeuille Bitcoin à partir duquel déposer des fonds.",
"refill_external": "Déposer des fonds depuis un portefeuille externe", "refill_external": "Déposer des fonds depuis un portefeuille externe",
"refill_lnd_balance": "Déposer des fonds dans votre portfeuille Lightning", "refill_lnd_balance": "Déposer des fonds dans votre portfeuille Lightning",
"sameWalletAsInvoiceError": "Vous ne pouvez pas payer une facture avec le même portefeuille utilisé pour la créer.", "sameWalletAsInvoiceError": "Vous ne pouvez pas payer une facture avec le même portefeuille utilisé pour la créer.",
"title": "gérer vos fonds", "title": "gérer vos fonds"
"can_send": "Peut envoyer",
"can_receive": "Peut recevoir",
"view_logs": "Voir les logs"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Informations complémentaires", "additional_info": "Informations complémentaires",
@ -438,7 +420,6 @@
"list_tryagain": "Réessayer", "list_tryagain": "Réessayer",
"no_ln_wallet_error": "Avant de payer une facture Ligthning, vous devez créer un portefeuille Ligthning.", "no_ln_wallet_error": "Avant de payer une facture Ligthning, vous devez créer un portefeuille Ligthning.",
"looks_like_bip38": "Ceci ressemble a une clé privée protégée par un mot de passe (BIP38)", "looks_like_bip38": "Ceci ressemble a une clé privée protégée par un mot de passe (BIP38)",
"reorder_title": "Trier vos portefeuilles",
"please_continue_scanning": "Merci de continuer à scaner", "please_continue_scanning": "Merci de continuer à scaner",
"select_no_bitcoin": "Il n'y a aucun portefeuille Bitcoin disponible pour le moment.", "select_no_bitcoin": "Il n'y a aucun portefeuille Bitcoin disponible pour le moment.",
"select_no_bitcoin_exp": "Un portefeuille Bitcoin est nécessaire pour approvisionner les portefeuilles Lightning. Veuillez en créer ou en importer un.", "select_no_bitcoin_exp": "Un portefeuille Bitcoin est nécessaire pour approvisionner les portefeuilles Lightning. Veuillez en créer ou en importer un.",

View file

@ -52,37 +52,19 @@
"network": "שגיאת רשת" "network": "שגיאת רשת"
}, },
"lnd": { "lnd": {
"active": "פעיל",
"inactive": "לא פעיל",
"channels": "ערוצים",
"no_channels": "אין ערוצים",
"claim_balance": "מאזן דרישה {balance}",
"close_channel": "סגירת ערוץ",
"new_channel": "ערוץ חדש",
"errorInvoiceExpired": "חשבונית פגה", "errorInvoiceExpired": "חשבונית פגה",
"force_close_channel": "כפיית סגירת ערוץ?",
"expired": "פג", "expired": "פג",
"node_alias": "כינוי צומת",
"expiresIn": "פג בעוד {time} דקות", "expiresIn": "פג בעוד {time} דקות",
"payButton": "תשלום", "payButton": "תשלום",
"payment": "תשלום", "payment": "תשלום",
"placeholder": "חשבונית או כתובת", "placeholder": "חשבונית או כתובת",
"open_channel": "פתיחת ערוץ",
"funding_amount_placeholder": "סכום מימון, לדוגמה, 0.001",
"opening_channnel_for_from": "פתיחת ערוץ עבור ארנק {forWalletLabel}, בעמצאות מימון מארנק {fromWalletLabel}",
"are_you_sure_open_channel": "האם אתם בטוחים שברצונכם לפתוח ערוץ זה?",
"potentialFee": "עמלה פוטנציאלית: {fee}", "potentialFee": "עמלה פוטנציאלית: {fee}",
"remote_host": "מארח מרוחק",
"refill": "טעינה", "refill": "טעינה",
"reconnect_peer": "התחברות מחדש לעמית",
"refill_create": "כדי להמשיך, אנא צרו ארנק ביטקוין כדי לטעון באמצעותו.", "refill_create": "כדי להמשיך, אנא צרו ארנק ביטקוין כדי לטעון באמצעותו.",
"refill_external": "טעינה בעזרת ארנק חיצוני", "refill_external": "טעינה בעזרת ארנק חיצוני",
"refill_lnd_balance": "מלאו את יתרת ארנק הברק", "refill_lnd_balance": "מלאו את יתרת ארנק הברק",
"sameWalletAsInvoiceError": "לא ניתן לשלם חשבונית עם אותו הארנק שיצר אותה.", "sameWalletAsInvoiceError": "לא ניתן לשלם חשבונית עם אותו הארנק שיצר אותה.",
"title": "ניהול כספים", "title": "ניהול כספים"
"can_send": "ניתן לשלוח",
"can_receive": "ניתן לקבל",
"view_logs": "צפייה ביומנים"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "מידע נוסף", "additional_info": "מידע נוסף",
@ -473,7 +455,6 @@
"list_tryagain": "נסו שוב", "list_tryagain": "נסו שוב",
"no_ln_wallet_error": "לפני תשלום חשבונית ברק, עלייך להוסיף ארנק ברק.", "no_ln_wallet_error": "לפני תשלום חשבונית ברק, עלייך להוסיף ארנק ברק.",
"looks_like_bip38": "זה נראה כמו מפתח פרטי מוגן בסיסמה (BIP38)", "looks_like_bip38": "זה נראה כמו מפתח פרטי מוגן בסיסמה (BIP38)",
"reorder_title": "ארגון ארנקים מחדש ",
"please_continue_scanning": "אנא המשיכו בסריקה.", "please_continue_scanning": "אנא המשיכו בסריקה.",
"select_no_bitcoin": "אין ארנקי ביטקוין זמינים.", "select_no_bitcoin": "אין ארנקי ביטקוין זמינים.",
"select_no_bitcoin_exp": "דרוש ארנק ביטקוין בכדי לטעון את ארנקי הברק. צרו או יבאו אחד.", "select_no_bitcoin_exp": "דרוש ארנק ביטקוין בכדי לטעון את ארנקי הברק. צרו או יבאו אחד.",
@ -483,8 +464,7 @@
"warning_do_not_disclose": "אזהרה! אין לחשוף.", "warning_do_not_disclose": "אזהרה! אין לחשוף.",
"add_ln_wallet_first": "עלייך להוסיף ארנק ברק קודם.", "add_ln_wallet_first": "עלייך להוסיף ארנק ברק קודם.",
"identity_pubkey": "מפתח זהות ציבורי", "identity_pubkey": "מפתח זהות ציבורי",
"xpub_title": "מפתח צפייה של הארנק", "xpub_title": "מפתח צפייה של הארנק"
"search_wallets": "חיפוש ארנקים"
}, },
"multisig": { "multisig": {
"multisig_vault": "כספת", "multisig_vault": "כספת",

View file

@ -123,7 +123,6 @@
"list_empty_txs1": "Vaše transakcije će se pojaviti ovdje", "list_empty_txs1": "Vaše transakcije će se pojaviti ovdje",
"list_latest_transaction": "posljednja transakcija", "list_latest_transaction": "posljednja transakcija",
"list_title": "Voleti", "list_title": "Voleti",
"reorder_title": "Uredi volete",
"select_wallet": "Odaberi volet", "select_wallet": "Odaberi volet",
"xpub_copiedToClipboard": "Kopirano u međuspremnik.", "xpub_copiedToClipboard": "Kopirano u međuspremnik.",
"xpub_title": "volet XPUB" "xpub_title": "volet XPUB"

View file

@ -41,36 +41,18 @@
"network": "Hálózati hiba" "network": "Hálózati hiba"
}, },
"lnd": { "lnd": {
"active": "Aktív",
"inactive": "Inaktív",
"channels": "Csatornák",
"no_channels": "Nincsenek csatornák",
"claim_balance": "Egyenleg lefoglalása {balance}",
"close_channel": "Csatorna zárása",
"new_channel": "Új csatorna",
"errorInvoiceExpired": "A számla lejárt.", "errorInvoiceExpired": "A számla lejárt.",
"force_close_channel": "Csatorna erőltetett zárása?",
"expired": "Lejárt", "expired": "Lejárt",
"node_alias": "Node aliasz",
"expiresIn": "{time} percen belül elévül", "expiresIn": "{time} percen belül elévül",
"payButton": "Fizess", "payButton": "Fizess",
"placeholder": "Számla", "placeholder": "Számla",
"open_channel": "Csatorna nyitása",
"funding_amount_placeholder": "Feltöltési mennyiség, például 0.001",
"opening_channnel_for_from": "Csatornanyitás a {forWalletLabel} tárca számára, {fromWalletLabel} által finanszírozva.",
"are_you_sure_open_channel": "Biztosan meg akarja nyitni ezt a csatornát?",
"potentialFee": "Várható díj: {fee}", "potentialFee": "Várható díj: {fee}",
"remote_host": "Távoli host",
"refill": "Feltölt", "refill": "Feltölt",
"reconnect_peer": "Társ újracsatlakoztatása",
"refill_create": "A folytatáshoz, hozz létre egy Bitcoin tárcát amire feltölthetsz.", "refill_create": "A folytatáshoz, hozz létre egy Bitcoin tárcát amire feltölthetsz.",
"refill_external": "Feltöltés külső tárcáról", "refill_external": "Feltöltés külső tárcáról",
"refill_lnd_balance": "Lightning egyenleg feltöltése", "refill_lnd_balance": "Lightning egyenleg feltöltése",
"sameWalletAsInvoiceError": "Számlát nem fizethesz be ugyanarról a tárcáról, mint amellyel létrehoztad.", "sameWalletAsInvoiceError": "Számlát nem fizethesz be ugyanarról a tárcáról, mint amellyel létrehoztad.",
"title": "kezelés", "title": "kezelés"
"can_send": "Tud küldeni",
"can_receive": "Tud fogadni",
"view_logs": "Eseménynapló Megtekintése"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "További információk", "additional_info": "További információk",
@ -430,7 +412,6 @@
"list_tryagain": "Próbáld újra", "list_tryagain": "Próbáld újra",
"no_ln_wallet_error": "Mielőtt tudnál fizetni a villámhálózaton, először egy Lightning tárcát kell létrehoznod vagy betöltened.", "no_ln_wallet_error": "Mielőtt tudnál fizetni a villámhálózaton, először egy Lightning tárcát kell létrehoznod vagy betöltened.",
"looks_like_bip38": "Ez egy jelszó védett privát kulcsnak (BIP38) tűnik", "looks_like_bip38": "Ez egy jelszó védett privát kulcsnak (BIP38) tűnik",
"reorder_title": "Tárcák rendezése",
"please_continue_scanning": "Kérem szkenneljen folyamatosan.", "please_continue_scanning": "Kérem szkenneljen folyamatosan.",
"select_no_bitcoin": "Jelenleg nincs elérhető Bitcoin tárca.", "select_no_bitcoin": "Jelenleg nincs elérhető Bitcoin tárca.",
"select_no_bitcoin_exp": "A Lightning tárca feltöltéséhez Bitcoin tárcára van szükség. Készíts vagy importálj egy Bitcoin tárcát.", "select_no_bitcoin_exp": "A Lightning tárca feltöltéséhez Bitcoin tárcára van szükség. Készíts vagy importálj egy Bitcoin tárcát.",

View file

@ -48,32 +48,16 @@
"network": "Kesalahan Jaringan" "network": "Kesalahan Jaringan"
}, },
"lnd": { "lnd": {
"active": "Aktif",
"inactive": "Tidak aktif",
"channels": "Kanal",
"no_channels": "Tidak ada kanal",
"claim_balance": "Klaim saldo {saldo}",
"close_channel": "Tutup kanal",
"new_channel": "Kanal baru",
"force_close_channel": "Tutup paksa kanal?",
"expired": "Kadaluarsa", "expired": "Kadaluarsa",
"node_alias": "Alias node",
"expiresIn": "Kadaluwarsa dalam {waktu} menit", "expiresIn": "Kadaluwarsa dalam {waktu} menit",
"payButton": "Bayar", "payButton": "Bayar",
"open_channel": "Buka kanal",
"are_you_sure_open_channel": "Apakah Anda yakin ingin membuka kanal ini?",
"potentialFee": "Potensi biaya: {fee}", "potentialFee": "Potensi biaya: {fee}",
"remote_host": "Host jarak jauh",
"refill": "Isi ulang", "refill": "Isi ulang",
"reconnect_peer": "Sambungkan rekan kembali",
"refill_create": "Untuk melanjutkan, buat dompet Bitcoin untuk diisi ulang.", "refill_create": "Untuk melanjutkan, buat dompet Bitcoin untuk diisi ulang.",
"refill_external": "Isi ulang dengan Dompet Eksternal", "refill_external": "Isi ulang dengan Dompet Eksternal",
"refill_lnd_balance": "Isi ulang saldo Lightning", "refill_lnd_balance": "Isi ulang saldo Lightning",
"sameWalletAsInvoiceError": "Kamu tidak bisa membayar invoice dengan dompet yang sama yang dipakai untuk membuat invoice.", "sameWalletAsInvoiceError": "Kamu tidak bisa membayar invoice dengan dompet yang sama yang dipakai untuk membuat invoice.",
"title": "Atur Dana", "title": "Atur Dana"
"can_send": "Bisa Mengirim",
"can_receive": "Bisa Menerima",
"view_logs": "Lihat Catatan"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Informasi Tambahan", "additional_info": "Informasi Tambahan",
@ -355,7 +339,6 @@
"list_long_scan": "Pindai QR Code", "list_long_scan": "Pindai QR Code",
"list_title": "Dompet", "list_title": "Dompet",
"list_tryagain": "Coba lagi", "list_tryagain": "Coba lagi",
"reorder_title": "Susun Dompet",
"please_continue_scanning": "Harap lanjutkan memindai.", "please_continue_scanning": "Harap lanjutkan memindai.",
"select_wallet": "Pilih dompet", "select_wallet": "Pilih dompet",
"xpub_copiedToClipboard": "Disalin ke clipboard.", "xpub_copiedToClipboard": "Disalin ke clipboard.",

View file

@ -48,34 +48,17 @@
"network": "Errore di rete" "network": "Errore di rete"
}, },
"lnd": { "lnd": {
"active": "Attivo",
"inactive": "Inattivo",
"channels": "Canali",
"no_channels": "Nessun canale",
"claim_balance": "Richiedi il saldo {balance}",
"close_channel": "Chiudi il canale",
"new_channel": "Nuovo canale",
"force_close_channel": "Forza la chiusura del canale?",
"expired": "Scaduto", "expired": "Scaduto",
"node_alias": "Alias del nodo",
"expiresIn": "Scade tra {time} minuti", "expiresIn": "Scade tra {time} minuti",
"payButton": "Paga", "payButton": "Paga",
"placeholder": "Fattura o indirizzo", "placeholder": "Fattura o indirizzo",
"open_channel": "Apri canale",
"opening_channnel_for_from": "Apri canale per il wallet {forWalletLabel}, caricando fondi da {fromWalletLabel}",
"are_you_sure_open_channel": "Sei sicuro di voler aprie questo canale?",
"potentialFee": "Commissioni potenziali: {fee}", "potentialFee": "Commissioni potenziali: {fee}",
"remote_host": "Host remoto",
"refill": "Ricarica", "refill": "Ricarica",
"reconnect_peer": "Riconnetti peer",
"refill_create": "Per continuare, crea un portafoglio Bitcoin dal quale ricaricare.", "refill_create": "Per continuare, crea un portafoglio Bitcoin dal quale ricaricare.",
"refill_external": "Ricarica con un wallet esterno", "refill_external": "Ricarica con un wallet esterno",
"refill_lnd_balance": "Ricarica saldo del portafoglio Lightning", "refill_lnd_balance": "Ricarica saldo del portafoglio Lightning",
"sameWalletAsInvoiceError": "Non puoi pagare una fattura con lo stesso portafoglio utilizzato per crearla.", "sameWalletAsInvoiceError": "Non puoi pagare una fattura con lo stesso portafoglio utilizzato per crearla.",
"title": "Gestisci fondi", "title": "Gestisci fondi"
"can_send": "Puoi inviare",
"can_receive": "Puoi ricevere",
"view_logs": "Visualizza i log"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Ulteriori Informazioni", "additional_info": "Ulteriori Informazioni",
@ -424,7 +407,6 @@
"list_tryagain": "Riprova", "list_tryagain": "Riprova",
"no_ln_wallet_error": "Prima di pagare una fattura Lightning, devi aggiungere un portafoglio Lightning.", "no_ln_wallet_error": "Prima di pagare una fattura Lightning, devi aggiungere un portafoglio Lightning.",
"looks_like_bip38": "Questa sembra essere una chiave privata protetta da password (BIP38).", "looks_like_bip38": "Questa sembra essere una chiave privata protetta da password (BIP38).",
"reorder_title": "Riordina Portafogli",
"please_continue_scanning": "Per favore continua ad effettuare la scansione.", "please_continue_scanning": "Per favore continua ad effettuare la scansione.",
"select_no_bitcoin": "Non è disponibile alcun portafoglio Bitcoin.", "select_no_bitcoin": "Non è disponibile alcun portafoglio Bitcoin.",
"select_no_bitcoin_exp": "È necessario un portafoglio Bitcoin per ricaricare i portafogli Lightning. Per favore creane o importane uno.", "select_no_bitcoin_exp": "È necessario un portafoglio Bitcoin per ricaricare i portafogli Lightning. Per favore creane o importane uno.",

View file

@ -52,37 +52,19 @@
"network": "ネットワークエラー" "network": "ネットワークエラー"
}, },
"lnd": { "lnd": {
"active": "アクティブ",
"inactive": "非アクティブ",
"channels": "チャネル",
"no_channels": "チャネルなし",
"claim_balance": "残高{balance}を請求",
"close_channel": "チャネルを閉じる",
"new_channel": "新規チャネル",
"errorInvoiceExpired": "インボイス失効", "errorInvoiceExpired": "インボイス失効",
"force_close_channel": "チャネルを強制的に閉じますか?",
"expired": "失効", "expired": "失効",
"node_alias": "ノードエイリアス",
"expiresIn": "失効まで{time}分", "expiresIn": "失効まで{time}分",
"payButton": "支払う", "payButton": "支払う",
"payment": "支払い", "payment": "支払い",
"placeholder": "インボイスまたはアドレス", "placeholder": "インボイスまたはアドレス",
"open_channel": "チャネルを開く",
"funding_amount_placeholder": "デポジット額0.001",
"opening_channnel_for_from": "{fromWalletLabel} の資金を使い、ウォレット {forWalletLabel} のチャネルを開きます",
"are_you_sure_open_channel": "本当にこのチャネルを開きますか?",
"potentialFee": "手数料推計: {fee}", "potentialFee": "手数料推計: {fee}",
"remote_host": "リモートホスト",
"refill": "送金", "refill": "送金",
"reconnect_peer": "ピアに再接続",
"refill_create": "先に進むためには、ビットコインウォレットを作成して補充してください。", "refill_create": "先に進むためには、ビットコインウォレットを作成して補充してください。",
"refill_external": "外部ウォレットで補充", "refill_external": "外部ウォレットで補充",
"refill_lnd_balance": "Lightning ウォレットへ送金", "refill_lnd_balance": "Lightning ウォレットへ送金",
"sameWalletAsInvoiceError": "インボイスを作成したのと同じウォレットで支払うことはできません。", "sameWalletAsInvoiceError": "インボイスを作成したのと同じウォレットで支払うことはできません。",
"title": "資金の管理", "title": "資金の管理"
"can_send": "送金可能",
"can_receive": "受取可能",
"view_logs": "ログを見る"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "追加情報", "additional_info": "追加情報",
@ -187,6 +169,7 @@
"fee_1d": "1日", "fee_1d": "1日",
"fee_3h": "3時間", "fee_3h": "3時間",
"fee_custom": "カスタム", "fee_custom": "カスタム",
"insert_custom_fee": "カスタム手数料を入力",
"fee_fast": "高速", "fee_fast": "高速",
"fee_medium": "中速", "fee_medium": "中速",
"fee_replace_minvb": "希望する手数料レートvByteあたりsatoshiは{min} sat/vByteより高くするのが良いです。", "fee_replace_minvb": "希望する手数料レートvByteあたりsatoshiは{min} sat/vByteより高くするのが良いです。",
@ -484,7 +467,8 @@
"list_tryagain": "再度試す", "list_tryagain": "再度試す",
"no_ln_wallet_error": "ライトニングインボイスの支払いを行う前に、ライトニングウォレットを追加する必要があります。", "no_ln_wallet_error": "ライトニングインボイスの支払いを行う前に、ライトニングウォレットを追加する必要があります。",
"looks_like_bip38": "パスワード保護された秘密鍵(BIP38)のようです。", "looks_like_bip38": "パスワード保護された秘密鍵(BIP38)のようです。",
"reorder_title": "ウォレットの並び替え", "manage_title": "ウォレット管理",
"no_results_found": "結果は見つかりませんでした。",
"please_continue_scanning": "スキャンを続けてください。", "please_continue_scanning": "スキャンを続けてください。",
"select_no_bitcoin": "現在利用可能なビットコインウォレットがありません。", "select_no_bitcoin": "現在利用可能なビットコインウォレットがありません。",
"select_no_bitcoin_exp": "ライトニングウォレットのリフィルにはビットコインウォレットが必要です。作成するか、インポートしてください。", "select_no_bitcoin_exp": "ライトニングウォレットのリフィルにはビットコインウォレットが必要です。作成するか、インポートしてください。",
@ -495,7 +479,7 @@
"add_ln_wallet_first": "先にライトニングウォレットを追加する必要があります。", "add_ln_wallet_first": "先にライトニングウォレットを追加する必要があります。",
"identity_pubkey": "識別用公開鍵", "identity_pubkey": "識別用公開鍵",
"xpub_title": "ウォレット XPUB", "xpub_title": "ウォレット XPUB",
"search_wallets": "ウォレットを検索" "manage_wallets_search_placeholder": "ウォレット・メモを検索"
}, },
"multisig": { "multisig": {
"multisig_vault": "金庫", "multisig_vault": "金庫",

View file

@ -24,8 +24,7 @@
"lnd": { "lnd": {
"expiresIn": "Мерзімі {time} минутта аяқталады", "expiresIn": "Мерзімі {time} минутта аяқталады",
"payButton": "Төлем жасау", "payButton": "Төлем жасау",
"refill": "Қайта толтыру", "refill": "Қайта толтыру"
"can_send": "Жібере алу"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"sats": "сат." "sats": "сат."

View file

@ -40,31 +40,14 @@
"network": "네크워크 오류" "network": "네크워크 오류"
}, },
"lnd": { "lnd": {
"active": "활성",
"inactive": "비활성",
"channels": "챈널",
"no_channels": "챈널 없음",
"claim_balance": "현 잔고{balance} 찾아가기",
"close_channel": "챈널 닫기",
"new_channel": "새 챈널",
"force_close_channel": "챈널을 강제로 닫을까요?",
"expired": "만료되었습니다", "expired": "만료되었습니다",
"node_alias": "노드 별칭",
"expiresIn": "{time}분 뒤 무효화됩니다", "expiresIn": "{time}분 뒤 무효화됩니다",
"payButton": "지불하기", "payButton": "지불하기",
"open_channel": "챈널 열기",
"opening_channnel_for_from": "{fromWalletLabel} 지갑의 기금으로 {forWalletLabel} 지갑에 챈널을 개설중",
"are_you_sure_open_channel": "정말 이 챈널을 개설하기 원하십니까?",
"remote_host": "원격 호스트",
"refill": "재충전", "refill": "재충전",
"reconnect_peer": "피어 재연결",
"refill_create": "진행을 위해서 재충전할 수있는 비트코인 지갑을 만들어주세요.", "refill_create": "진행을 위해서 재충전할 수있는 비트코인 지갑을 만들어주세요.",
"refill_external": "외부 지갑으로 재충전합니다.", "refill_external": "외부 지갑으로 재충전합니다.",
"refill_lnd_balance": "라이트닝 월렛잔액 재충전하기", "refill_lnd_balance": "라이트닝 월렛잔액 재충전하기",
"title": "자금 관리하기", "title": "자금 관리하기"
"can_send": "보내기 가능",
"can_receive": "받기가능",
"view_logs": "내역 보기"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "추가적인 정보", "additional_info": "추가적인 정보",
@ -405,7 +388,6 @@
"list_tryagain": "다시 시도하기", "list_tryagain": "다시 시도하기",
"no_ln_wallet_error": "라이트닝 청구서를 지불하기 전 먼저 라이트닝 지갑을 추가해야 합니다.", "no_ln_wallet_error": "라이트닝 청구서를 지불하기 전 먼저 라이트닝 지갑을 추가해야 합니다.",
"looks_like_bip38": "이것은 패스워드 보호된 비밀키(BIP38)로 보입니다.", "looks_like_bip38": "이것은 패스워드 보호된 비밀키(BIP38)로 보입니다.",
"reorder_title": "지갑 재정렬",
"please_continue_scanning": "계속 스캔하세요.", "please_continue_scanning": "계속 스캔하세요.",
"select_no_bitcoin": "현재 사용 가능한 비트코인 월렛이 없습니다.", "select_no_bitcoin": "현재 사용 가능한 비트코인 월렛이 없습니다.",
"select_no_bitcoin_exp": "라이트닝 지갑을 재충전하시려면 비트코인 지갑이 필요합니다. 새로 만들기 또는 들여오기를 하시기바랍니다.", "select_no_bitcoin_exp": "라이트닝 지갑을 재충전하시려면 비트코인 지갑이 필요합니다. 새로 만들기 또는 들여오기를 하시기바랍니다.",

View file

@ -26,27 +26,15 @@
"network": "ختا شبکه" "network": "ختا شبکه"
}, },
"lnd": { "lnd": {
"active": "فعال",
"inactive": "قیر فعال",
"channels": "تورگیا",
"no_channels": "بؽ تورگه",
"claim_balance": "تسویه مۉجۊدی {balance}",
"close_channel": "بستن تورگه",
"new_channel": "تورگه نۊ",
"errorInvoiceExpired": "سۊرت هساو مونقزی بیه.", "errorInvoiceExpired": "سۊرت هساو مونقزی بیه.",
"force_close_channel": "بستن اجباری تورگه؟",
"expired": "مونقزی بیه", "expired": "مونقزی بیه",
"node_alias": "نوم موستعار گره",
"payButton": "پرداخت", "payButton": "پرداخت",
"payment": "پرداخت", "payment": "پرداخت",
"placeholder": "سۊرت هساو یا آدرس", "placeholder": "سۊرت هساو یا آدرس",
"open_channel": "واز کردن تورگه",
"potentialFee": "کارمزد ائتمالی: {fee}", "potentialFee": "کارمزد ائتمالی: {fee}",
"refill": "پور کردن", "refill": "پور کردن",
"refill_external": "پور کردن وا کیف پیلٛ خارجی", "refill_external": "پور کردن وا کیف پیلٛ خارجی",
"refill_lnd_balance": "پور کردن مۉجۊدی کیف پیلٛ لایتنینگ", "refill_lnd_balance": "پور کردن مۉجۊدی کیف پیلٛ لایتنینگ"
"can_send": "مؽتونه کلٛ بکه",
"can_receive": "مؽتونه بگره"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "دونسمنیا بؽشتر", "additional_info": "دونسمنیا بؽشتر",

View file

@ -37,31 +37,14 @@
"network": "Ralat Rangkaian" "network": "Ralat Rangkaian"
}, },
"lnd": { "lnd": {
"active": "Giat",
"inactive": "Tidak Giat",
"channels": "Saluran",
"no_channels": "Tiada saluran",
"claim_balance": "Tebus baki {balance}",
"close_channel": "Tutup saluran",
"new_channel": "Saluran baru",
"force_close_channel": "Tutup saluran secara paksa?",
"expired": "Tamat tempoh", "expired": "Tamat tempoh",
"node_alias": "Surihan nod",
"expiresIn": "Tamat tempoh dalam {time} minit", "expiresIn": "Tamat tempoh dalam {time} minit",
"payButton": "Bayar", "payButton": "Bayar",
"open_channel": "Saluran Terbuka",
"opening_channnel_for_from": "Membuka saluran untuk dompet {forWalletLabel}, atas pembiayaan dari {fromWalletLabel}",
"are_you_sure_open_channel": "Adakah anda pasti anda mahu membuka saluran ini?",
"remote_host": "Host Jauh",
"refill": "Isi semula", "refill": "Isi semula",
"reconnect_peer": "Sambung semula dengan rakan",
"refill_create": "Untuk meneruskan, sila buat dompet Bitcoin untuk diisi semula.", "refill_create": "Untuk meneruskan, sila buat dompet Bitcoin untuk diisi semula.",
"refill_external": "Isi Semula dengan Dompet Luaran", "refill_external": "Isi Semula dengan Dompet Luaran",
"refill_lnd_balance": "Isi Semula Baki Dompet Lightning", "refill_lnd_balance": "Isi Semula Baki Dompet Lightning",
"title": "Uruskan Wang", "title": "Uruskan Wang"
"can_send": "Boleh Menghantar",
"can_receive": "Boleh Menerima",
"view_logs": "Lihat Log"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Maklumat Tambahan", "additional_info": "Maklumat Tambahan",
@ -374,7 +357,6 @@
"list_tryagain": "Cuba lagi", "list_tryagain": "Cuba lagi",
"no_ln_wallet_error": "Sebelum membayar invois Lightning, anda perlu menambah dompet Lightning terlebih dahulu.", "no_ln_wallet_error": "Sebelum membayar invois Lightning, anda perlu menambah dompet Lightning terlebih dahulu.",
"looks_like_bip38": "Ini nampak seperti kunci persendirian yang dilindungi kata laluan (BIP38)", "looks_like_bip38": "Ini nampak seperti kunci persendirian yang dilindungi kata laluan (BIP38)",
"reorder_title": "Ubah Aturan Dompet",
"please_continue_scanning": "Sila teruskan mengimbas.", "please_continue_scanning": "Sila teruskan mengimbas.",
"select_no_bitcoin": "Tiada dompet Bitcoin ketika ini.", "select_no_bitcoin": "Tiada dompet Bitcoin ketika ini.",
"select_no_bitcoin_exp": "Dompet Bitcoin diperlukan untuk mengisi dompet Lightning. Sila cipta atau pindah masuk sebuah dompet.", "select_no_bitcoin_exp": "Dompet Bitcoin diperlukan untuk mengisi dompet Lightning. Sila cipta atau pindah masuk sebuah dompet.",

View file

@ -40,32 +40,15 @@
"network": "Nettverksfeil" "network": "Nettverksfeil"
}, },
"lnd": { "lnd": {
"active": "Aktiv",
"inactive": "Inaktiv",
"channels": "Kanaler",
"no_channels": "Ingen kanaler",
"claim_balance": "Få saldo {balance}",
"close_channel": "Lukk kanal",
"new_channel": "Ny kanal",
"force_close_channel": "Tvinge kanal til å lukke?",
"expired": "Utløpt", "expired": "Utløpt",
"node_alias": "Node alias",
"expiresIn": "Utløper om {time} minutter", "expiresIn": "Utløper om {time} minutter",
"payButton": "Betal", "payButton": "Betal",
"open_channel": "Åpne kanal",
"opening_channnel_for_from": "Åpner kanal for lommebok {forWalletLabel}, med finansiering fra {fromWalletLabel}",
"are_you_sure_open_channel": "Er du sikker på at du vil åpne denne kanalen?",
"remote_host": "Remote host",
"refill": "Fyll på", "refill": "Fyll på",
"reconnect_peer": "Koble til peer på nytt",
"refill_create": "For å fortsette må du lage en Bitcoin-lommebok du kan fylle på med.", "refill_create": "For å fortsette må du lage en Bitcoin-lommebok du kan fylle på med.",
"refill_external": "Fyll på med Ekstern Lommebok", "refill_external": "Fyll på med Ekstern Lommebok",
"refill_lnd_balance": "Fyll på Lightning Wallet-balanse", "refill_lnd_balance": "Fyll på Lightning Wallet-balanse",
"sameWalletAsInvoiceError": "Du kan ikke betale en faktura med samme lommebok som brukes til å lage den.", "sameWalletAsInvoiceError": "Du kan ikke betale en faktura med samme lommebok som brukes til å lage den.",
"title": "Administrer Midler", "title": "Administrer Midler"
"can_send": "Kan Sende",
"can_receive": "Kan Motta",
"view_logs": "Vis Logg"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Tilleggsinformasjon", "additional_info": "Tilleggsinformasjon",
@ -408,7 +391,6 @@
"list_tryagain": "Prøv igjen", "list_tryagain": "Prøv igjen",
"no_ln_wallet_error": "Før du betaler en Lightning-faktura, må du først legge til en Lightning-lommebok.", "no_ln_wallet_error": "Før du betaler en Lightning-faktura, må du først legge til en Lightning-lommebok.",
"looks_like_bip38": "Dette ser ut som en passordbeskyttet privat nøkkel (BIP38).", "looks_like_bip38": "Dette ser ut som en passordbeskyttet privat nøkkel (BIP38).",
"reorder_title": "Omorganisere Lommebøker",
"please_continue_scanning": "Vennligst fortsett å skanne.", "please_continue_scanning": "Vennligst fortsett å skanne.",
"select_no_bitcoin": "Det er for øyeblikket ingen tilgjengelige Bitcoin-lommebøker.", "select_no_bitcoin": "Det er for øyeblikket ingen tilgjengelige Bitcoin-lommebøker.",
"select_no_bitcoin_exp": "En Bitcoin-lommebok kreves for å fylle Lightning-lommebøker. Opprett eller importer en.", "select_no_bitcoin_exp": "En Bitcoin-lommebok kreves for å fylle Lightning-lommebøker. Opprett eller importer en.",

View file

@ -47,31 +47,14 @@
"network": "नेटवर्क एर्रोर" "network": "नेटवर्क एर्रोर"
}, },
"lnd": { "lnd": {
"active": "सक्रिय",
"inactive": "निष्क्रिय",
"channels": "च्यानलहरू",
"no_channels": "च्यानलहरू छैनन्",
"claim_balance": "दावी ब्यालेन्स {balance}",
"close_channel": "च्यानलहरू बन्द गर्नुहोस्",
"new_channel": "नयाँ च्यानल",
"force_close_channel": "जबरजस्ती च्यानल बन्द गर्ने हो?",
"expired": "म्याद सकियो", "expired": "म्याद सकियो",
"node_alias": "नोड को उपनाम",
"expiresIn": "{time} मिनेटमा म्याद सकिन्छ", "expiresIn": "{time} मिनेटमा म्याद सकिन्छ",
"payButton": "तिर्नुहोस्", "payButton": "तिर्नुहोस्",
"open_channel": "च्यानल खोल्नुहोस्",
"opening_channnel_for_from": "वालेट {forWalletLabel} को लागि वालेट {fromWalletLabel} को कोषद्वारा बाट च्यानल खोल्दै",
"are_you_sure_open_channel": "के तपाइँ यो च्यानल खोल्न निश्चित हुनुहुन्छ?",
"remote_host": "रिमोट होस्ट",
"refill": "फेरि भर्नु", "refill": "फेरि भर्नु",
"reconnect_peer": "पियर पुन: जडान गर्नुहोस्",
"refill_create": "अगाडि बढ्नको लागि, कृपया बिटकोइन वालेट सिर्जना गर्नुहोस्।", "refill_create": "अगाडि बढ्नको लागि, कृपया बिटकोइन वालेट सिर्जना गर्नुहोस्।",
"refill_external": "बाहिरको वालेटको साथ रिफिल गर्नुहोस्", "refill_external": "बाहिरको वालेटको साथ रिफिल गर्नुहोस्",
"refill_lnd_balance": "लाइटनिङ वालेट ब्यालेन्स रिफिल गर्नुहोस्", "refill_lnd_balance": "लाइटनिङ वालेट ब्यालेन्स रिफिल गर्नुहोस्",
"title": "कोष प्रबन्ध गर्नुहोस्", "title": "कोष प्रबन्ध गर्नुहोस्"
"can_send": "पठाउन सकिन्छ",
"can_receive": "प्राप्त गर्न सक्छ",
"view_logs": "लगहरू हेर्नुहोस्"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "थप जानकारी", "additional_info": "थप जानकारी",
@ -322,7 +305,6 @@
"list_tryagain": "पुन: प्रयास गर्नुहोस्", "list_tryagain": "पुन: प्रयास गर्नुहोस्",
"no_ln_wallet_error": "लाइटनिङ इनभ्वाइस भुक्तान गर्नु अघि, तपाईंले पहिले लाइटनिङ वालेट थप्नुपर्छ।", "no_ln_wallet_error": "लाइटनिङ इनभ्वाइस भुक्तान गर्नु अघि, तपाईंले पहिले लाइटनिङ वालेट थप्नुपर्छ।",
"looks_like_bip38": "यो पासवर्ड सुरक्षित निजी कुञ्जी जस्तो देखिन्छ (BIP38)।", "looks_like_bip38": "यो पासवर्ड सुरक्षित निजी कुञ्जी जस्तो देखिन्छ (BIP38)।",
"reorder_title": "वालेटहरू पुन: अर्डर गर्नुहोस्",
"please_continue_scanning": "कृपया स्क्यान जारी राख्नुहोस्।", "please_continue_scanning": "कृपया स्क्यान जारी राख्नुहोस्।",
"select_no_bitcoin": "हाल कुनै बिटकोइन वालेटहरू उपलब्ध छैनन्।", "select_no_bitcoin": "हाल कुनै बिटकोइन वालेटहरू उपलब्ध छैनन्।",
"select_no_bitcoin_exp": "लाइटनिङ वालेटहरू पुन: भर्नको लागि बिटकोइन वालेट आवश्यक छ। कृपया बिटकोइन वालेट सिर्जना वा आयात गर्नुहोस्।", "select_no_bitcoin_exp": "लाइटनिङ वालेटहरू पुन: भर्नको लागि बिटकोइन वालेट आवश्यक छ। कृपया बिटकोइन वालेट सिर्जना वा आयात गर्नुहोस्।",

View file

@ -48,37 +48,19 @@
"network": "Netwerkfout" "network": "Netwerkfout"
}, },
"lnd": { "lnd": {
"active": "Actief",
"inactive": "Inactief",
"channels": "Kanalen",
"no_channels": "Geen kanalen",
"claim_balance": "Saldo claimen {balance}",
"close_channel": "Sluit kanaal",
"new_channel": "Nieuw kanaal",
"errorInvoiceExpired": "Factuur verlopen.", "errorInvoiceExpired": "Factuur verlopen.",
"force_close_channel": "Het sluiten van een kanaal forceren?",
"expired": "Verlopen", "expired": "Verlopen",
"node_alias": "Node alias",
"expiresIn": "Verloopt in {time} minuten", "expiresIn": "Verloopt in {time} minuten",
"payButton": "Betalen", "payButton": "Betalen",
"payment": "Betaling", "payment": "Betaling",
"placeholder": "Factuur of adres", "placeholder": "Factuur of adres",
"open_channel": "Open kanaal",
"funding_amount_placeholder": "Stortingsbedrag, bijvoorbeeld 0.001",
"opening_channnel_for_from": "Open kanaal voor wallet {forWalletLabel}, door financiering vanuit {fromWalletLabel}",
"are_you_sure_open_channel": "Weet je het zeker dat je dit kanaal wilt openen?",
"potentialFee": "Mogelijke fee: {fee}", "potentialFee": "Mogelijke fee: {fee}",
"remote_host": "Externe host",
"refill": "Bijvullen", "refill": "Bijvullen",
"reconnect_peer": "Verbind opnieuw",
"refill_create": "Om verder te gaan, moet u een Bitcoin-wallet maken om mee te vullen.", "refill_create": "Om verder te gaan, moet u een Bitcoin-wallet maken om mee te vullen.",
"refill_external": "Aanvullen met externe wallet", "refill_external": "Aanvullen met externe wallet",
"refill_lnd_balance": "Vul Lightning-walletsaldo bij", "refill_lnd_balance": "Vul Lightning-walletsaldo bij",
"sameWalletAsInvoiceError": "U kunt geen factuur betalen met dezelfde wallet die is gebruikt om de factuur te maken.", "sameWalletAsInvoiceError": "U kunt geen factuur betalen met dezelfde wallet die is gebruikt om de factuur te maken.",
"title": "tegoeden beheren", "title": "tegoeden beheren"
"can_send": "Kan verzenden",
"can_receive": "Kan verzenden",
"view_logs": "Bekijk logs"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Extra informatie", "additional_info": "Extra informatie",
@ -412,7 +394,6 @@
"list_tryagain": "Probeer opnieuw", "list_tryagain": "Probeer opnieuw",
"no_ln_wallet_error": "Voordat u een Lightning-factuur betaalt, moet u eerst een Lightning-wallet toevoegen.", "no_ln_wallet_error": "Voordat u een Lightning-factuur betaalt, moet u eerst een Lightning-wallet toevoegen.",
"looks_like_bip38": "Dit lijkt op een met een wachtwoord beveiligde private key (BIP38)", "looks_like_bip38": "Dit lijkt op een met een wachtwoord beveiligde private key (BIP38)",
"reorder_title": "Wallets opnieuw ordenen",
"please_continue_scanning": "Ga door met scannen", "please_continue_scanning": "Ga door met scannen",
"select_no_bitcoin": "Er is momenteel geen Bitcoin-wallet beschikbaar", "select_no_bitcoin": "Er is momenteel geen Bitcoin-wallet beschikbaar",
"select_no_bitcoin_exp": "Een Bitcoin-wallet is vereist om Lightning-wallets opnieuw te vullen. Maak of importeer er een.", "select_no_bitcoin_exp": "Een Bitcoin-wallet is vereist om Lightning-wallets opnieuw te vullen. Maak of importeer er een.",

View file

@ -10,11 +10,7 @@
"success": "You correct" "success": "You correct"
}, },
"lnd": { "lnd": {
"are_you_sure_open_channel": "You sure say you wan open this channel?", "refill_create": "To proceed like this so, abeg create Bitcoin wallet wey you go refill am with"
"refill_create": "To proceed like this so, abeg create Bitcoin wallet wey you go refill am with",
"can_send": "You fit send",
"can_receive": "You fit receive",
"view_logs": "run shadow your logs"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"please_pay_between_and": "Abeg pay between {min} and {max}", "please_pay_between_and": "Abeg pay between {min} and {max}",

View file

@ -52,37 +52,19 @@
"network": "Błąd sieciowy" "network": "Błąd sieciowy"
}, },
"lnd": { "lnd": {
"active": "Aktywny",
"inactive": "Nieaktywny",
"channels": "Kanały",
"no_channels": "Brak kanałów",
"claim_balance": "Zażądaj pozostałej kwoty {balance}",
"close_channel": "Zamknij kanał",
"new_channel": "Nowy kanał",
"errorInvoiceExpired": "Faktura wygasła.", "errorInvoiceExpired": "Faktura wygasła.",
"force_close_channel": "Wymusić zamknięcie kanału?",
"expired": "Przeterminowana", "expired": "Przeterminowana",
"node_alias": "Alias węzła",
"expiresIn": "Traci ważność w ciągu {time} minut", "expiresIn": "Traci ważność w ciągu {time} minut",
"payButton": "Zapłać", "payButton": "Zapłać",
"payment": "Płatność", "payment": "Płatność",
"placeholder": "Faktura lub adres", "placeholder": "Faktura lub adres",
"open_channel": "Otwórz kanał",
"funding_amount_placeholder": "Kwota finansowania, na przykład, 0.001",
"opening_channnel_for_from": "Otwieram kanał dla portfela {forWalletLabel} fundując z {fromWalletLabel}",
"are_you_sure_open_channel": "Na pewno otworzyć ten kanał?",
"potentialFee": "Potencjalna opłata transakcyjna: {fee}", "potentialFee": "Potencjalna opłata transakcyjna: {fee}",
"remote_host": "Zdalny host",
"refill": "Doładuj", "refill": "Doładuj",
"reconnect_peer": "Połącz ponownie",
"refill_create": "Aby kontynuować, utwórz portfel Bitcoinowy który potem doładujesz.", "refill_create": "Aby kontynuować, utwórz portfel Bitcoinowy który potem doładujesz.",
"refill_external": "Doładowanie z zewnętrznego portfela", "refill_external": "Doładowanie z zewnętrznego portfela",
"refill_lnd_balance": "Doładowanie stanu portfela Lightning", "refill_lnd_balance": "Doładowanie stanu portfela Lightning",
"sameWalletAsInvoiceError": "Nie możesz zapłacić wezwania z tego samego portfela, który stworzyłeś.", "sameWalletAsInvoiceError": "Nie możesz zapłacić wezwania z tego samego portfela, który stworzyłeś.",
"title": "Zarządzaj środkami", "title": "Zarządzaj środkami"
"can_send": "Może wysłać",
"can_receive": "Może otrzymać",
"view_logs": "Pokaż dziennik zdarzeń"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Dodatkowe informacje", "additional_info": "Dodatkowe informacje",
@ -123,6 +105,7 @@
"details_setAmount": "Otrzymaj kwotę", "details_setAmount": "Otrzymaj kwotę",
"details_share": "Udostępnij...", "details_share": "Udostępnij...",
"header": "Otrzymaj", "header": "Otrzymaj",
"reset": "Reset",
"maxSats": "Kwota maksymalna to {max} satoshi", "maxSats": "Kwota maksymalna to {max} satoshi",
"maxSatsFull": "Maksymalna kwota to {max} satoshi lub {currency}", "maxSatsFull": "Maksymalna kwota to {max} satoshi lub {currency}",
"minSats": "Kwota minimalna to {min} satoshi", "minSats": "Kwota minimalna to {min} satoshi",
@ -186,6 +169,7 @@
"fee_1d": "1 dzień", "fee_1d": "1 dzień",
"fee_3h": "3 godz.", "fee_3h": "3 godz.",
"fee_custom": "Niestandardowe", "fee_custom": "Niestandardowe",
"insert_custom_fee": "Wprowadź niestandardową opłatę",
"fee_fast": "Szybkie", "fee_fast": "Szybkie",
"fee_medium": "Średnie", "fee_medium": "Średnie",
"fee_replace_minvb": "Opłata całkowita (satoshi za vByte), którą chcesz ponieść powinna być wyższa niż {min} satoshi/vBajt", "fee_replace_minvb": "Opłata całkowita (satoshi za vByte), którą chcesz ponieść powinna być wyższa niż {min} satoshi/vBajt",
@ -362,6 +346,12 @@
"transaction_saved": "Zapisano", "transaction_saved": "Zapisano",
"details_show_in_block_explorer": "Zobacz w eksploratorze bloków", "details_show_in_block_explorer": "Zobacz w eksploratorze bloków",
"details_title": "Transakcja", "details_title": "Transakcja",
"incoming_transaction": "Transakcja przychodząca",
"outgoing_transaction": "Transakcja wychodząca",
"expired_transaction": "Transakcja przeterminowana",
"pending_transaction": "Transakcja w toku",
"offchain": "Offchain",
"onchain": "Onchain",
"details_to": "Wyjście", "details_to": "Wyjście",
"enable_offline_signing": "Ten portfel nie jest używany w połączeniu z podpisem offline. Czy chcesz to teraz włączyć?", "enable_offline_signing": "Ten portfel nie jest używany w połączeniu z podpisem offline. Czy chcesz to teraz włączyć?",
"list_conf": "potwierdzenia: {number}", "list_conf": "potwierdzenia: {number}",
@ -383,7 +373,9 @@
"txid": "ID Transakcji", "txid": "ID Transakcji",
"from": "Od: {counterparty}", "from": "Od: {counterparty}",
"to": "Do: {counterparty}", "to": "Do: {counterparty}",
"updating": "Aktualizuję..." "updating": "Aktualizuję...",
"watchOnlyWarningTitle": "Ostrzeżenie bezpieczeństwa",
"watchOnlyWarningDescription": "Zachowaj ostrożność wobec oszustów, którzy często używają portfeli „tylko do odczytu” do wprowadzania użytkowników w błąd. Te portfele nie pozwalają na kontrolowanie ani wysyłanie środków; umożliwiają jedynie przeglądanie salda."
}, },
"wallets": { "wallets": {
"add_bitcoin": "Bitcoin", "add_bitcoin": "Bitcoin",
@ -475,7 +467,8 @@
"list_tryagain": "Spróbuj ponownie", "list_tryagain": "Spróbuj ponownie",
"no_ln_wallet_error": "Musisz najpierw dodać portfel Lightning, zanim zapłacisz fakturę.", "no_ln_wallet_error": "Musisz najpierw dodać portfel Lightning, zanim zapłacisz fakturę.",
"looks_like_bip38": "To wygląda na klucz prywatny chroniony hasłem (BIP38).", "looks_like_bip38": "To wygląda na klucz prywatny chroniony hasłem (BIP38).",
"reorder_title": "Zmień kolejność portfeli", "manage_title": "Zarządzaj portfelami",
"no_results_found": "Nie znaleziono wyników.",
"please_continue_scanning": "Proszę skanuj dalej.", "please_continue_scanning": "Proszę skanuj dalej.",
"select_no_bitcoin": "Nie ma dostępnych portfeli Bitcoin.", "select_no_bitcoin": "Nie ma dostępnych portfeli Bitcoin.",
"select_no_bitcoin_exp": "Portfel Bitcoin jest wymagany by uzupełnić portfel Lightning. Proszę utwórz lub zaimportuj.", "select_no_bitcoin_exp": "Portfel Bitcoin jest wymagany by uzupełnić portfel Lightning. Proszę utwórz lub zaimportuj.",
@ -486,7 +479,7 @@
"add_ln_wallet_first": "Najpierw musisz dodać portfel Lightning.", "add_ln_wallet_first": "Najpierw musisz dodać portfel Lightning.",
"identity_pubkey": "Klucz publiczny tożsamości", "identity_pubkey": "Klucz publiczny tożsamości",
"xpub_title": "XPUB portfela", "xpub_title": "XPUB portfela",
"search_wallets": "Szukaj portfeli" "manage_wallets_search_placeholder": "Szukaj portfeli, notatek"
}, },
"multisig": { "multisig": {
"multisig_vault": "Skarbiec", "multisig_vault": "Skarbiec",
@ -645,7 +638,7 @@
"notification_tx_unconfirmed": "Transakcja powiadomienia nie została jeszcze potwierdzona, proszę czekać", "notification_tx_unconfirmed": "Transakcja powiadomienia nie została jeszcze potwierdzona, proszę czekać",
"failed_create_notif_tx": "Nie udało się utworzyć transakcji on-chain", "failed_create_notif_tx": "Nie udało się utworzyć transakcji on-chain",
"onchain_tx_needed": "Wymagana transakcja on-chain", "onchain_tx_needed": "Wymagana transakcja on-chain",
"notif_tx_sent": "Transakcja powiadomienia wysłana. Proszę czekać na jej potwierdzenie", "notif_tx_sent" : "Transakcja powiadomienia wysłana. Proszę czekać na jej potwierdzenie",
"notif_tx": "Transakcja powiadomienia", "notif_tx": "Transakcja powiadomienia",
"not_found": "Kod płatności nie znaleziony" "not_found": "Kod płatności nie znaleziony"
} }

View file

@ -52,37 +52,19 @@
"network": "Erro na rede" "network": "Erro na rede"
}, },
"lnd": { "lnd": {
"active": "Ativo",
"inactive": "Inativo",
"channels": "Canais",
"no_channels": "Nenhum canal",
"claim_balance": "Reinvindicar saldo {balance}",
"close_channel": "Fechar canal",
"new_channel": "Novo canal",
"errorInvoiceExpired": "Fatura expirada", "errorInvoiceExpired": "Fatura expirada",
"force_close_channel": "Forçar fechamento do canal?",
"expired": "Expirada", "expired": "Expirada",
"node_alias": "Apelido do nó",
"expiresIn": "Expira em {time} minutos", "expiresIn": "Expira em {time} minutos",
"payButton": "Pagar", "payButton": "Pagar",
"payment": "Pagamento", "payment": "Pagamento",
"placeholder": "Fatura ou endereço", "placeholder": "Fatura ou endereço",
"open_channel": "Abrir canal",
"funding_amount_placeholder": "Quantidade financiamento, exemplo: 0.001",
"opening_channnel_for_from": "Abrindo canal para carteira {forWalletLabel}, com financiamento de {fromWalletLabel}",
"are_you_sure_open_channel": "Tem certeza que deseja abrir esse canal?",
"potentialFee": "Taxa potencial: {fee}", "potentialFee": "Taxa potencial: {fee}",
"remote_host": "Hospedeiro remoto",
"refill": "Recarregar", "refill": "Recarregar",
"reconnect_peer": "Reconectar par",
"refill_create": "Para continuar, por favor, crie uma carteira Bitcoin para recarregar.", "refill_create": "Para continuar, por favor, crie uma carteira Bitcoin para recarregar.",
"refill_external": "Recarregar com uma carteira externa", "refill_external": "Recarregar com uma carteira externa",
"refill_lnd_balance": "Recarregar a carteira Lightning", "refill_lnd_balance": "Recarregar a carteira Lightning",
"sameWalletAsInvoiceError": "Você não pode pagar um boleto com a mesma carteira que o criou.", "sameWalletAsInvoiceError": "Você não pode pagar um boleto com a mesma carteira que o criou.",
"title": "Administrar fundos", "title": "Administrar fundos"
"can_send": "Pode enviar",
"can_receive": "Pode receber",
"view_logs": "Ver logs"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Informação adicional", "additional_info": "Informação adicional",
@ -475,7 +457,6 @@
"list_tryagain": "Tente novamente", "list_tryagain": "Tente novamente",
"no_ln_wallet_error": "Antes de pagar uma fatura Lightning, você deve primeiro adicionar uma carteira Lightning.", "no_ln_wallet_error": "Antes de pagar uma fatura Lightning, você deve primeiro adicionar uma carteira Lightning.",
"looks_like_bip38": "Parece que esta é uma chave privada protegida por senha (BIP38)", "looks_like_bip38": "Parece que esta é uma chave privada protegida por senha (BIP38)",
"reorder_title": "Reordenar Carteiras",
"please_continue_scanning": "Por favor, continue a leitura.", "please_continue_scanning": "Por favor, continue a leitura.",
"select_no_bitcoin": "Não há carteiras Bitcoin disponíveis no momento.", "select_no_bitcoin": "Não há carteiras Bitcoin disponíveis no momento.",
"select_no_bitcoin_exp": "É necessário ter uma carteira Bitcoin para recarregar as carteiras Lightning. Por favor, crie ou importe uma.", "select_no_bitcoin_exp": "É necessário ter uma carteira Bitcoin para recarregar as carteiras Lightning. Por favor, crie ou importe uma.",
@ -485,8 +466,7 @@
"warning_do_not_disclose": "Cuidado! Não divulgue.", "warning_do_not_disclose": "Cuidado! Não divulgue.",
"add_ln_wallet_first": "Primeiro você deve adicionar uma carteira Lightning.", "add_ln_wallet_first": "Primeiro você deve adicionar uma carteira Lightning.",
"identity_pubkey": "Identificar chave pública", "identity_pubkey": "Identificar chave pública",
"xpub_title": "XPUB da Carteira", "xpub_title": "XPUB da Carteira"
"search_wallets": "Procurar Carteiras"
}, },
"multisig": { "multisig": {
"multisig_vault": "Cofre", "multisig_vault": "Cofre",

View file

@ -43,13 +43,10 @@
"network": "Erro da rede" "network": "Erro da rede"
}, },
"lnd": { "lnd": {
"new_channel": "Novo canal",
"expired": "Expirado", "expired": "Expirado",
"expiresIn": "Expira em {time} minutos", "expiresIn": "Expira em {time} minutos",
"payButton": "Paga", "payButton": "Paga",
"placeholder": "Fatura ou endereço", "placeholder": "Fatura ou endereço",
"open_channel": "Abrir canal",
"are_you_sure_open_channel": "Tem a certeza de que quer abrir este canal?",
"potentialFee": "Taxa provável: {fee}", "potentialFee": "Taxa provável: {fee}",
"refill": "Carregar", "refill": "Carregar",
"refill_create": "Para continuar, crie uma carteira Bitcoin para recarregar.", "refill_create": "Para continuar, crie uma carteira Bitcoin para recarregar.",
@ -349,7 +346,6 @@
"list_long_scan": "Leia o código QR", "list_long_scan": "Leia o código QR",
"list_title": "carteiras", "list_title": "carteiras",
"list_tryagain": "Tente novamente", "list_tryagain": "Tente novamente",
"reorder_title": "Reordenar Wallets",
"select_no_bitcoin": "No momento, não há carteiras Bitcoin disponíveis.", "select_no_bitcoin": "No momento, não há carteiras Bitcoin disponíveis.",
"select_no_bitcoin_exp": "Uma carteira Bitcoin é necessária para recarregar as carteiras Lightning. Por favor, crie ou importe uma.", "select_no_bitcoin_exp": "Uma carteira Bitcoin é necessária para recarregar as carteiras Lightning. Por favor, crie ou importe uma.",
"select_wallet": "Seleccione uma Wallet", "select_wallet": "Seleccione uma Wallet",

View file

@ -40,28 +40,14 @@
"network": "Eroare de rețea" "network": "Eroare de rețea"
}, },
"lnd": { "lnd": {
"active": "Activ",
"inactive": "Inactiv",
"channels": "Canale",
"no_channels": "Niciun canal",
"claim_balance": "Revendică sold {balance}",
"close_channel": "Închide canal",
"new_channel": "Canal nou",
"force_close_channel": "Forțează închiderea canalului?",
"expired": "Expirat", "expired": "Expirat",
"node_alias": "Alias nod",
"expiresIn": "Expiră în {time} minute", "expiresIn": "Expiră în {time} minute",
"payButton": "Plătește", "payButton": "Plătește",
"open_channel": "Deschide canal",
"are_you_sure_open_channel": "Sigur vrei să deschizi acest canal?",
"refill": "Reumple", "refill": "Reumple",
"refill_create": "Pentru a continua, creează un portofel Bitcoin cu care să reumpli.", "refill_create": "Pentru a continua, creează un portofel Bitcoin cu care să reumpli.",
"refill_external": "Reumple cu Portofel Extern", "refill_external": "Reumple cu Portofel Extern",
"refill_lnd_balance": "Reumple balanța portofelului Lightning", "refill_lnd_balance": "Reumple balanța portofelului Lightning",
"title": "Administrează fondurile", "title": "Administrează fondurile"
"can_send": "Poate trimite",
"can_receive": "Poate primi",
"view_logs": "Vezi jurnalele"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Informații suplimentare", "additional_info": "Informații suplimentare",
@ -382,7 +368,6 @@
"list_tryagain": "Încearcă din nou", "list_tryagain": "Încearcă din nou",
"no_ln_wallet_error": "Înainte de a plăti o factură Lightning, trebuie mai întîi să adaugi un portofel Lightning.", "no_ln_wallet_error": "Înainte de a plăti o factură Lightning, trebuie mai întîi să adaugi un portofel Lightning.",
"looks_like_bip38": "Aceasta arată ca o cheie privată protejată de o parolă (BIP38).", "looks_like_bip38": "Aceasta arată ca o cheie privată protejată de o parolă (BIP38).",
"reorder_title": "Reordonează portofelele",
"please_continue_scanning": "Continuă scanarea.", "please_continue_scanning": "Continuă scanarea.",
"select_no_bitcoin": "Nu e niciun portofel Bitcoin disponibil.", "select_no_bitcoin": "Nu e niciun portofel Bitcoin disponibil.",
"select_no_bitcoin_exp": "E necesar un portofel Bitcoin pentru a re-umple portofelele Lightning. Creează sau importă unul.", "select_no_bitcoin_exp": "E necesar un portofel Bitcoin pentru a re-umple portofelele Lightning. Creează sau importă unul.",

View file

@ -49,37 +49,19 @@
"network": "Ошибка сети" "network": "Ошибка сети"
}, },
"lnd": { "lnd": {
"active": "Активный",
"inactive": "Неактивный",
"channels": "Каналы",
"no_channels": "Нет каналов",
"claim_balance": "Требовать баланс {balance}",
"close_channel": "Закрыть канал",
"new_channel": "Новый канал",
"errorInvoiceExpired": "Инвойс просрочен.", "errorInvoiceExpired": "Инвойс просрочен.",
"force_close_channel": "Закрыть канал принудительно?",
"expired": "Истекший", "expired": "Истекший",
"node_alias": "Псевдоним ноды",
"expiresIn": "Истекает через {time} мин", "expiresIn": "Истекает через {time} мин",
"payButton": "Оплатить", "payButton": "Оплатить",
"payment": "Платеж", "payment": "Платеж",
"placeholder": "Инвойс", "placeholder": "Инвойс",
"open_channel": "Открыть Канал",
"funding_amount_placeholder": "Количество для пополнения, например 0.001",
"opening_channnel_for_from": "Открытие канала для кошелька {forWalletLabel} средствами из {fromWalletLabel}",
"are_you_sure_open_channel": "Вы уверены, что хотите открыть этот канал?",
"potentialFee": "Примерная комиссия: {fee}", "potentialFee": "Примерная комиссия: {fee}",
"remote_host": "Удалённый хост",
"refill": "Пополнить", "refill": "Пополнить",
"reconnect_peer": "Переподключиться",
"refill_create": "Чтобы продолжить, пожалуйста, создайте биткоин-кошелёк для пополнения.", "refill_create": "Чтобы продолжить, пожалуйста, создайте биткоин-кошелёк для пополнения.",
"refill_external": "Пополнить с помощью внешнего кошелька", "refill_external": "Пополнить с помощью внешнего кошелька",
"refill_lnd_balance": "Пополнить баланс кошелька Lightning", "refill_lnd_balance": "Пополнить баланс кошелька Lightning",
"sameWalletAsInvoiceError": "Ты не можешь оплатить Инвойс тем же кошельком, который ты использовал для его создания.", "sameWalletAsInvoiceError": "Ты не можешь оплатить Инвойс тем же кошельком, который ты использовал для его создания.",
"title": "Мои средства", "title": "Мои средства"
"can_send": "Может Отправлять",
"can_receive": "Может Получать",
"view_logs": "Посмотреть Логи"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Дополнительная информация", "additional_info": "Дополнительная информация",
@ -449,7 +431,6 @@
"list_tryagain": "Попробовать еще раз", "list_tryagain": "Попробовать еще раз",
"no_ln_wallet_error": "Прежде чем оплачивать Лайтнинг-инвойсы, нужно добавить Лайтнинг-кошелёк.", "no_ln_wallet_error": "Прежде чем оплачивать Лайтнинг-инвойсы, нужно добавить Лайтнинг-кошелёк.",
"looks_like_bip38": "Это похоже на закрытый ключ, защищенный паролем (BIP38)", "looks_like_bip38": "Это похоже на закрытый ключ, защищенный паролем (BIP38)",
"reorder_title": "Отсортировать кошельки",
"please_continue_scanning": "Продолжайте сканировать", "please_continue_scanning": "Продолжайте сканировать",
"select_no_bitcoin": "В настоящее время нет доступных кошельков Bitcoin.", "select_no_bitcoin": "В настоящее время нет доступных кошельков Bitcoin.",
"select_no_bitcoin_exp": "Кошелёк Bitcoin необходим для пополнения кошельков Lightning. Пожалуйста, создайте или импортируйте его.", "select_no_bitcoin_exp": "Кошелёк Bitcoin необходим для пополнения кошельков Lightning. Пожалуйста, создайте или импортируйте его.",
@ -459,8 +440,7 @@
"warning_do_not_disclose": "Внимание! Не разглашать", "warning_do_not_disclose": "Внимание! Не разглашать",
"add_ln_wallet_first": "Сначала добавьте Лайтнинг-кошелёк.", "add_ln_wallet_first": "Сначала добавьте Лайтнинг-кошелёк.",
"identity_pubkey": "Identity Pubkey", "identity_pubkey": "Identity Pubkey",
"xpub_title": "XPUB кошелька", "xpub_title": "XPUB кошелька"
"search_wallets": "Поиск Кошельков"
}, },
"multisig": { "multisig": {
"multisig_vault": "Хранилище", "multisig_vault": "Хранилище",

View file

@ -40,31 +40,14 @@
"network": "ජාලකරණ දෝෂයකි" "network": "ජාලකරණ දෝෂයකි"
}, },
"lnd": { "lnd": {
"active": "ක්‍රියාකාරී",
"inactive": "අක්‍රීය",
"channels": "නාලිකා",
"no_channels": "නාලිකා කිසිවක් නැත",
"claim_balance": "ශේෂය ඉල්ලන්න {balance}",
"close_channel": "නාලිකාව වසන්න",
"new_channel": "නව නාලිකාව",
"force_close_channel": "කෙසේ හෝ නාලිකාව වසා දමන්නද?",
"expired": "කල් ඉකුත් වී ඇත", "expired": "කල් ඉකුත් වී ඇත",
"node_alias": "නෝඩ් අන්වර්ථ නාමය",
"expiresIn": "මිනිත්තුවලින් {time} කල් ඉකුත් වේ", "expiresIn": "මිනිත්තුවලින් {time} කල් ඉකුත් වේ",
"payButton": "ගෙවන්න", "payButton": "ගෙවන්න",
"open_channel": "විවෘත නාලිකාව",
"opening_channnel_for_from": "මුදල් පසුම්බිය සඳහා {forWalletLabel}, {fromWalletLabel} අරමුදල් මඟින් නාලිකාව විවෘත කිරීම",
"are_you_sure_open_channel": "ඔබට මෙම නාලිකාව විවෘත කිරීමට අවශ්‍ය බව විශ්වාසද?",
"remote_host": "දුරස්ථ ධාරකයා",
"refill": "නැවත පුරවන්න", "refill": "නැවත පුරවන්න",
"reconnect_peer": "මිතුරා නැවත සම්බන්ධ කරන්න",
"refill_create": "ඉදිරියට යාමට, කරුණාකර නැවත පිරවීම සඳහා බිට්කොයින් පසුම්බියක් සාදන්න.", "refill_create": "ඉදිරියට යාමට, කරුණාකර නැවත පිරවීම සඳහා බිට්කොයින් පසුම්බියක් සාදන්න.",
"refill_external": "බාහිර පසුම්බිය සමඟ නැවත පුරවන්න", "refill_external": "බාහිර පසුම්බිය සමඟ නැවත පුරවන්න",
"refill_lnd_balance": "ලයිට්නින් පසුම්බියේ ශේෂය නැවත පුරවන්න", "refill_lnd_balance": "ලයිට්නින් පසුම්බියේ ශේෂය නැවත පුරවන්න",
"title": "අරමුදල් කළමනාකරණය කරන්න", "title": "අරමුදල් කළමනාකරණය කරන්න"
"can_send": "යැවිය හැක",
"can_receive": "ලබා ගත හැක",
"view_logs": "ලොග් බලන්න"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "අමතර තොරතුරු", "additional_info": "අමතර තොරතුරු",
@ -403,7 +386,6 @@
"list_tryagain": "නැවත උත්සාහ කරන්න", "list_tryagain": "නැවත උත්සාහ කරන්න",
"no_ln_wallet_error": "අකුණු ඉන්වොයිසියක් ගෙවීමට පෙර, ඔබ මුලින්ම අකුණු පසුම්බියක් එකතු කළ යුතුය.", "no_ln_wallet_error": "අකුණු ඉන්වොයිසියක් ගෙවීමට පෙර, ඔබ මුලින්ම අකුණු පසුම්බියක් එකතු කළ යුතුය.",
"looks_like_bip38": "මෙය මුරපදයකින් ආරක්‍ෂිත පුද්ගලික යතුරක් ලෙස පෙනේ (BIP38).", "looks_like_bip38": "මෙය මුරපදයකින් ආරක්‍ෂිත පුද්ගලික යතුරක් ලෙස පෙනේ (BIP38).",
"reorder_title": "පසුම්බි නැවත ඇණවුම් කරන්න",
"please_continue_scanning": "කරුණාකර ස්කෑන් කිරීම දිගටම කරගෙන යන්න.", "please_continue_scanning": "කරුණාකර ස්කෑන් කිරීම දිගටම කරගෙන යන්න.",
"select_no_bitcoin": "දැනට බිට්කොයින් පසුම්බි නොමැත.", "select_no_bitcoin": "දැනට බිට්කොයින් පසුම්බි නොමැත.",
"select_no_bitcoin_exp": "ලයිට්නින් පසුම්බි නැවත පිරවීම සඳහා බිට්කොයින් පසුම්බියක් අවශ්‍ය වේ. කරුණාකර එකක් සාදා හෝ ආයාත කරන්න.", "select_no_bitcoin_exp": "ලයිට්නින් පසුම්බි නැවත පිරවීම සඳහා බිට්කොයින් පසුම්බියක් අවශ්‍ය වේ. කරුණාකර එකක් සාදා හෝ ආයාත කරන්න.",

View file

@ -33,22 +33,15 @@
"network": "Sieťová chyba" "network": "Sieťová chyba"
}, },
"lnd": { "lnd": {
"active": "Aktívne",
"inactive": "Neaktívne",
"channels": "Kanály",
"close_channel": "Zatvoriť kanál",
"new_channel": "Nový kanál",
"expired": "Expirovaná", "expired": "Expirovaná",
"expiresIn": "Vyprší za {time} minút", "expiresIn": "Vyprší za {time} minút",
"payButton": "Zaplatiť", "payButton": "Zaplatiť",
"open_channel": "Otvoriť kanál",
"refill": "Doplniť", "refill": "Doplniť",
"refill_create": "Pre pokračovanie, prosím, vytvorte si Bitcoinovú peňaženku", "refill_create": "Pre pokračovanie, prosím, vytvorte si Bitcoinovú peňaženku",
"refill_external": "Doplniť z externej peňaženky", "refill_external": "Doplniť z externej peňaženky",
"refill_lnd_balance": "Doplniť zostatok na Lightning peňaženke", "refill_lnd_balance": "Doplniť zostatok na Lightning peňaženke",
"sameWalletAsInvoiceError": "Faktúra sa nedá uhradiť s rovnakou peňaženkou ako tá, ktorá ju vytvorila.", "sameWalletAsInvoiceError": "Faktúra sa nedá uhradiť s rovnakou peňaženkou ako tá, ktorá ju vytvorila.",
"title": "spravovať zostatok", "title": "spravovať zostatok"
"can_send": "Môže poslať"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Doplňujúce informácie", "additional_info": "Doplňujúce informácie",
@ -236,7 +229,6 @@
"list_long_scan": "Skenovať QR kód", "list_long_scan": "Skenovať QR kód",
"list_title": "peňaženky", "list_title": "peňaženky",
"list_tryagain": "Skúste znovu", "list_tryagain": "Skúste znovu",
"reorder_title": "Zoradiť peňaženky",
"select_no_bitcoin": "Žiadne Bitcoinové peňaženky nie sú k dispozícii.", "select_no_bitcoin": "Žiadne Bitcoinové peňaženky nie sú k dispozícii.",
"select_wallet": "Vyberte peňaženku", "select_wallet": "Vyberte peňaženku",
"xpub_copiedToClipboard": "Skopírované do schránky.", "xpub_copiedToClipboard": "Skopírované do schránky.",

View file

@ -40,32 +40,16 @@
"network": "Omrežna napaka" "network": "Omrežna napaka"
}, },
"lnd": { "lnd": {
"active": "Aktivno",
"inactive": "Neaktivno",
"channels": "Kanali",
"no_channels": "Ni odprtih kanalov",
"close_channel": "Zapri kanal",
"new_channel": "Nov kanal",
"force_close_channel": "Prisilno zapri kanal?",
"expired": "Potekel", "expired": "Potekel",
"node_alias": "Vzdevek vozlišča",
"expiresIn": "Poteče čez {time} min", "expiresIn": "Poteče čez {time} min",
"payButton": "Plačaj", "payButton": "Plačaj",
"open_channel": "Odpri kanal",
"opening_channnel_for_from": "Odpiranje kanala denarnice {forWalletLabel}, z uporabo sredstev iz {fromWalletLabel}",
"are_you_sure_open_channel": "Ali ste prepričani, da želite odpreti ta kanal?",
"potentialFee": "Morebitna omrežnina: {fee}", "potentialFee": "Morebitna omrežnina: {fee}",
"remote_host": "Oddaljeni gostitelj",
"refill": "Napolni", "refill": "Napolni",
"reconnect_peer": "Ponovna vzpostavitev povezave",
"refill_create": "Če želite nadaljevati, ustvarite Bitcoin denarnico, s katero boste napolnili.", "refill_create": "Če želite nadaljevati, ustvarite Bitcoin denarnico, s katero boste napolnili.",
"refill_external": "Napolni z zunanjo denarnico", "refill_external": "Napolni z zunanjo denarnico",
"refill_lnd_balance": "Napolni stanje Lightning denarnice", "refill_lnd_balance": "Napolni stanje Lightning denarnice",
"sameWalletAsInvoiceError": "Plačilo računa ni mogoče z denarnico, s katero je bil ustvarjen.", "sameWalletAsInvoiceError": "Plačilo računa ni mogoče z denarnico, s katero je bil ustvarjen.",
"title": "Uredi sredstva", "title": "Uredi sredstva"
"can_send": "Mogoče poslati",
"can_receive": "Mogoče prejeti",
"view_logs": "Prikaži dnevnik"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Dodatne Informacije", "additional_info": "Dodatne Informacije",
@ -412,7 +396,6 @@
"list_tryagain": "Poskusi ponovno", "list_tryagain": "Poskusi ponovno",
"no_ln_wallet_error": "Za plačilo Lightning računa, morate najprej dodati Lightning denarnico.", "no_ln_wallet_error": "Za plačilo Lightning računa, morate najprej dodati Lightning denarnico.",
"looks_like_bip38": "Zasebni ključ je verjetno zaščiten z geslom (BIP38)", "looks_like_bip38": "Zasebni ključ je verjetno zaščiten z geslom (BIP38)",
"reorder_title": "Preureditev Denarnic",
"please_continue_scanning": "Nadaljujte s skeniranjem", "please_continue_scanning": "Nadaljujte s skeniranjem",
"select_no_bitcoin": "Trenutno ni na voljo nobena Bitcoin denarnica.", "select_no_bitcoin": "Trenutno ni na voljo nobena Bitcoin denarnica.",
"select_no_bitcoin_exp": "Za napolnitev Lightning denarnic je potrebna Bitcoin denarnica. Ustvarite ali uvozite denarnico.", "select_no_bitcoin_exp": "Za napolnitev Lightning denarnic je potrebna Bitcoin denarnica. Ustvarite ali uvozite denarnico.",

View file

@ -47,35 +47,18 @@
"network": "Nätverks fel" "network": "Nätverks fel"
}, },
"lnd": { "lnd": {
"active": "Aktiva",
"inactive": "Inaktiv",
"channels": "Kanaler",
"no_channels": "Inga kanaler",
"claim_balance": "Begär saldo {saldo}",
"close_channel": "Säng kanal",
"new_channel": "Ny kanal",
"force_close_channel": "Tvinga stänga kanal",
"expired": "Förfallen", "expired": "Förfallen",
"node_alias": "Node alias",
"expiresIn": "Går ut om {time} minuter", "expiresIn": "Går ut om {time} minuter",
"payButton": "Betala", "payButton": "Betala",
"payment": "Betalning", "payment": "Betalning",
"placeholder": "Faktura eller adress", "placeholder": "Faktura eller adress",
"open_channel": "Öppna kanal",
"opening_channnel_for_from": "Öppnande kanal för plånbok {forWalletLabel}, genom insättning från {fromWalletLabel}",
"are_you_sure_open_channel": "Är du säker på att du vill öppna den här kanalen? ",
"potentialFee": "Potentiell avgift: {avgift}", "potentialFee": "Potentiell avgift: {avgift}",
"remote_host": "Fjärrvärd",
"refill": "Sätt in", "refill": "Sätt in",
"reconnect_peer": "Återanslut peer",
"refill_create": "För att fortsätta, vänligen skapa en Bitcoin plånbok att fylla på med", "refill_create": "För att fortsätta, vänligen skapa en Bitcoin plånbok att fylla på med",
"refill_external": "Fyll på från extern plånbok", "refill_external": "Fyll på från extern plånbok",
"refill_lnd_balance": "Fyll på Lightning-plånbok", "refill_lnd_balance": "Fyll på Lightning-plånbok",
"sameWalletAsInvoiceError": "Du kan inte betala en faktura från samma plånbok som användes för att skapa den.", "sameWalletAsInvoiceError": "Du kan inte betala en faktura från samma plånbok som användes för att skapa den.",
"title": "sätt in / ta ut", "title": "sätt in / ta ut"
"can_send": "Kan skicka",
"can_receive": "Kan ta emot",
"view_logs": "Visa loggar"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Ytterligare information", "additional_info": "Ytterligare information",
@ -426,7 +409,6 @@
"list_tryagain": "Försök igen", "list_tryagain": "Försök igen",
"no_ln_wallet_error": "Innan du betalar en Lightning-faktura måste du först lägga till en Lightning-plånbok.", "no_ln_wallet_error": "Innan du betalar en Lightning-faktura måste du först lägga till en Lightning-plånbok.",
"looks_like_bip38": "Detta ser ut som en lösenordsskyddad privat nyckel (BIP38).", "looks_like_bip38": "Detta ser ut som en lösenordsskyddad privat nyckel (BIP38).",
"reorder_title": "Sortera plånböcker",
"please_continue_scanning": "Fortsätt att skanna.", "please_continue_scanning": "Fortsätt att skanna.",
"select_no_bitcoin": "Det finns för närvarande inga tillgängliga Bitcoin-plånböcker.", "select_no_bitcoin": "Det finns för närvarande inga tillgängliga Bitcoin-plånböcker.",
"select_no_bitcoin_exp": "En Bitcoin-plånbok krävs för att fylla på Lightning-plånböcker. Vänligen skapa eller importera en.", "select_no_bitcoin_exp": "En Bitcoin-plånbok krävs för att fylla på Lightning-plånböcker. Vänligen skapa eller importera en.",

View file

@ -273,7 +273,6 @@
"list_long_scan": "สแกนคิวอาร์โค้ด", "list_long_scan": "สแกนคิวอาร์โค้ด",
"list_title": "กระเป๋าสตางค์", "list_title": "กระเป๋าสตางค์",
"list_tryagain": "พยายามอีกครั้ง", "list_tryagain": "พยายามอีกครั้ง",
"reorder_title": "เปลี่ยนลำดับกระเป๋าสตางค์",
"select_no_bitcoin": "ขณะนี้ไม่มีกระเป๋าสตางค์บิตคอยน์", "select_no_bitcoin": "ขณะนี้ไม่มีกระเป๋าสตางค์บิตคอยน์",
"select_no_bitcoin_exp": "ก่อนที่จะเติมเงินเข้ากระเป๋าสตางค์ไลท์นิง ท่านต้องมีกระเป๋าสตางค์บิตคอยน์", "select_no_bitcoin_exp": "ก่อนที่จะเติมเงินเข้ากระเป๋าสตางค์ไลท์นิง ท่านต้องมีกระเป๋าสตางค์บิตคอยน์",
"select_wallet": "เลือกกระเป๋าสตางค์", "select_wallet": "เลือกกระเป๋าสตางค์",

View file

@ -40,29 +40,13 @@
"network": "Ağ Hatası" "network": "Ağ Hatası"
}, },
"lnd": { "lnd": {
"active": "Aktif",
"inactive": "Inaktif",
"channels": "Kanallar",
"no_channels": "Kanal yok",
"claim_balance": "Talep balansı (balans)",
"close_channel": "Kanalı kapa",
"new_channel": "Yeni kanal",
"force_close_channel": "Kanalı kapamaya zorla",
"expired": "Süresi doldu", "expired": "Süresi doldu",
"node_alias": "Node mahlası",
"expiresIn": "{time} dakika içerisinde sona erer", "expiresIn": "{time} dakika içerisinde sona erer",
"payButton": "Öde", "payButton": "Öde",
"open_channel": "Kanal aç",
"opening_channnel_for_from": "{fromWalletLabel} tarafından fonlanan kanal {forWalletLabel} için aılıyor",
"are_you_sure_open_channel": "Bu kanalı açmak istediğinizden emin misiniz?",
"refill": "Yükle", "refill": "Yükle",
"reconnect_peer": "Eş'e tekrar bağlan",
"refill_lnd_balance": "Lightning cüzdana bakiye yükle", "refill_lnd_balance": "Lightning cüzdana bakiye yükle",
"sameWalletAsInvoiceError": "Bir faturayı, oluştururken kullandığınız cüzdan ile ödeyemezsiniz.", "sameWalletAsInvoiceError": "Bir faturayı, oluştururken kullandığınız cüzdan ile ödeyemezsiniz.",
"title": "Bakiyeleri Yönet", "title": "Bakiyeleri Yönet"
"can_send": "Gönderebilir",
"can_receive": "Alabilir",
"view_logs": "Logları gör"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Ek Bilgi", "additional_info": "Ek Bilgi",
@ -225,7 +209,6 @@
"list_empty_txs1": "İşlemleriniz burada görünür,", "list_empty_txs1": "İşlemleriniz burada görünür,",
"list_latest_transaction": "en son işlem", "list_latest_transaction": "en son işlem",
"list_title": "cüzdanlar", "list_title": "cüzdanlar",
"reorder_title": "Cüzdanları Sırala",
"select_wallet": "Cüzdan Seç", "select_wallet": "Cüzdan Seç",
"xpub_copiedToClipboard": "Panoya kopyalandı", "xpub_copiedToClipboard": "Panoya kopyalandı",
"xpub_title": "cüzdan XPUB" "xpub_title": "cüzdan XPUB"

View file

@ -48,32 +48,15 @@
"network": "Помилка Мережі" "network": "Помилка Мережі"
}, },
"lnd": { "lnd": {
"active": "Активний",
"inactive": "Неактивний",
"channels": "Канали",
"no_channels": "Немає каналів",
"claim_balance": "Баланс вимоги {баланс}",
"close_channel": "Закрити канал",
"new_channel": "Новий канал",
"force_close_channel": "Примусово закрити канал?",
"expired": "Термін дії закінчився", "expired": "Термін дії закінчився",
"node_alias": "Псевдонім вузла",
"expiresIn": "Закінчується через {час} хвилин", "expiresIn": "Закінчується через {час} хвилин",
"payButton": "Оплатити", "payButton": "Оплатити",
"placeholder": "Рахунок або адреса", "placeholder": "Рахунок або адреса",
"open_channel": "Відкрити Канал",
"opening_channnel_for_from": "Відкриття каналу для гаманця {forWalletLabel}, за рахунок фінансування з {fromWalletLabel}",
"are_you_sure_open_channel": "Ви впевнені, що хочете відкрити цей канал?",
"remote_host": "Віддалений хост",
"refill": "Поповнити", "refill": "Поповнити",
"reconnect_peer": "Перепідключити одноранговий",
"refill_create": "Щоб продовжити, будь ласка, створіть біткоїн-гаманець для поповнення.", "refill_create": "Щоб продовжити, будь ласка, створіть біткоїн-гаманець для поповнення.",
"refill_external": "Поповнити з зовнішнього гаманця", "refill_external": "Поповнити з зовнішнього гаманця",
"refill_lnd_balance": "Збільшити баланс Lightning гаманця", "refill_lnd_balance": "Збільшити баланс Lightning гаманця",
"title": "Мої Кошти", "title": "Мої Кошти"
"can_send": "Можна Надіслати",
"can_receive": "Можна Отримати",
"view_logs": "Переглянути Логи"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Додаткова Інформація", "additional_info": "Додаткова Інформація",

View file

@ -47,32 +47,15 @@
"network": "Lỗi mạng" "network": "Lỗi mạng"
}, },
"lnd": { "lnd": {
"active": "Kích hoạt",
"inactive": "Không kích hoạt",
"channels": "Các kênh",
"no_channels": "Không có kênh",
"claim_balance": "Yêu cầu số dư {balance}",
"close_channel": "Đóng kênh",
"new_channel": "Kênh mới",
"force_close_channel": "Buộc đóng kênh",
"expired": "Hết hạn", "expired": "Hết hạn",
"node_alias": "Bí danh node",
"expiresIn": "Hết hạn sau {time} phút", "expiresIn": "Hết hạn sau {time} phút",
"payButton": "Thanh toán", "payButton": "Thanh toán",
"placeholder": "Hóa đơn hoặc địa chỉ", "placeholder": "Hóa đơn hoặc địa chỉ",
"open_channel": "Mở kênh",
"opening_channnel_for_from": "Đang mở kênh cho ví {forWalletLabel} bằng cách tài trợ từ {fromWalletLabel}",
"are_you_sure_open_channel": "Bạn có chắc muốn mở kênh này không?",
"remote_host": "Máy chủ từ xa",
"refill": "Đổ đầy", "refill": "Đổ đầy",
"reconnect_peer": "Kết nối lại với peer",
"refill_create": "Để tiếp tục, vui lòng tạo một ví Bitcoin để nạp tiền. ", "refill_create": "Để tiếp tục, vui lòng tạo một ví Bitcoin để nạp tiền. ",
"refill_external": "Nạp lại với ví bên ngoài", "refill_external": "Nạp lại với ví bên ngoài",
"refill_lnd_balance": "Nạp lại số dư ví Lightning", "refill_lnd_balance": "Nạp lại số dư ví Lightning",
"title": "Quản lý quỹ", "title": "Quản lý quỹ"
"can_send": "Gửi được",
"can_receive": "Nhận được",
"view_logs": "Xem các bản ghi"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Thông tin thêm", "additional_info": "Thông tin thêm",
@ -419,7 +402,6 @@
"list_tryagain": "Thử lại", "list_tryagain": "Thử lại",
"no_ln_wallet_error": "Trước khi thanh toán hoá đơn Lightning, đầu tiên bạn phải thêm một ví Lightning.", "no_ln_wallet_error": "Trước khi thanh toán hoá đơn Lightning, đầu tiên bạn phải thêm một ví Lightning.",
"looks_like_bip38": "Cái này trông giống một khoá cá nhân được bảo vệ bằng mật khẩu (BIP38).", "looks_like_bip38": "Cái này trông giống một khoá cá nhân được bảo vệ bằng mật khẩu (BIP38).",
"reorder_title": "Sắp xếp lại các vị",
"please_continue_scanning": "Vui lòng quét tiếp.", "please_continue_scanning": "Vui lòng quét tiếp.",
"select_no_bitcoin": "Hiện tại không có ví Bitcoin có sẵn.", "select_no_bitcoin": "Hiện tại không có ví Bitcoin có sẵn.",
"select_no_bitcoin_exp": "Bạn phải sử dụng ví Bitcoin đễ nạp tiền vào ví Lightning. Hãy tạo hoặc nhập một ví Bitcoin.", "select_no_bitcoin_exp": "Bạn phải sử dụng ví Bitcoin đễ nạp tiền vào ví Lightning. Hãy tạo hoặc nhập một ví Bitcoin.",

View file

@ -44,33 +44,18 @@
"network": "Netwerk Vout" "network": "Netwerk Vout"
}, },
"lnd": { "lnd": {
"active": "Aktief",
"inactive": "Onaktief",
"channels": "Kanale",
"no_channels": "Geen kanale",
"claim_balance": "Eis balaans {balance}",
"close_channel": "Sluit kanaal",
"new_channel": "Nuwe kanaal",
"errorInvoiceExpired": "Faktuur het verval.", "errorInvoiceExpired": "Faktuur het verval.",
"force_close_channel": "Dwing kanaal sluiting?",
"expired": "Verval", "expired": "Verval",
"node_alias": "Knoop-punt noem naam",
"expiresIn": "Verval in {time} minute", "expiresIn": "Verval in {time} minute",
"payButton": "Betaal", "payButton": "Betaal",
"payment": "Betaling", "payment": "Betaling",
"placeholder": "Faktuur of adres", "placeholder": "Faktuur of adres",
"open_channel": "Open Kanaal",
"opening_channnel_for_from": "Skep kanaal vir beursie {forWalletLabel}, deur befondsing vanaf {fromWalletLabel}",
"are_you_sure_open_channel": "Is jy seker jy wil hierdie kanaal oop maak?",
"refill": "Herlaai", "refill": "Herlaai",
"refill_create": "Om voort te gaan, skep asb 'n Bitcoin beursie om vondse mee aan te vul.", "refill_create": "Om voort te gaan, skep asb 'n Bitcoin beursie om vondse mee aan te vul.",
"refill_external": "Vul aan met Eksterne Beursie", "refill_external": "Vul aan met Eksterne Beursie",
"refill_lnd_balance": "Herlaai Lightning beursie", "refill_lnd_balance": "Herlaai Lightning beursie",
"sameWalletAsInvoiceError": "U kan nie n faktuur betaal met die selfde beursie waarmee die faktuur geksep is nie.", "sameWalletAsInvoiceError": "U kan nie n faktuur betaal met die selfde beursie waarmee die faktuur geksep is nie.",
"title": "bestuur fondse", "title": "bestuur fondse"
"can_send": "Kan Stuur",
"can_receive": "Kan Ontvang",
"view_logs": "Sien Aktiwiteits Register"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "Bykomende Inligting", "additional_info": "Bykomende Inligting",
@ -222,7 +207,6 @@
"list_latest_transaction": "laaste transaksie", "list_latest_transaction": "laaste transaksie",
"list_title": "beursies", "list_title": "beursies",
"no_ln_wallet_error": "Voordat jy 'n Lightning faktuur betaal moet jy eers 'n Lightning beursie aanwys.", "no_ln_wallet_error": "Voordat jy 'n Lightning faktuur betaal moet jy eers 'n Lightning beursie aanwys.",
"reorder_title": "Herorganiseer Beursies",
"select_wallet": "Kies Beursie", "select_wallet": "Kies Beursie",
"xpub_copiedToClipboard": "Gestuur na klipbord.", "xpub_copiedToClipboard": "Gestuur na klipbord.",
"add_ln_wallet_first": "Jy moet eers 'n Lightning beursie byvoeg.", "add_ln_wallet_first": "Jy moet eers 'n Lightning beursie byvoeg.",

View file

@ -142,7 +142,6 @@
"list_empty_txs1": "Intengiso yakho iya kubonakala apha,", "list_empty_txs1": "Intengiso yakho iya kubonakala apha,",
"list_latest_transaction": "Utshintsho olutsha", "list_latest_transaction": "Utshintsho olutsha",
"list_title": "Ingxowa", "list_title": "Ingxowa",
"reorder_title": "Yenza kwakhona ingxowa",
"select_wallet": "Khetha ingxowa", "select_wallet": "Khetha ingxowa",
"xpub_copiedToClipboard": "Ikopishwe kwi-clipboard", "xpub_copiedToClipboard": "Ikopishwe kwi-clipboard",
"xpub_title": "ingxowa XPUB" "xpub_title": "ingxowa XPUB"

View file

@ -40,8 +40,6 @@
"network": "网络错误" "network": "网络错误"
}, },
"lnd": { "lnd": {
"active": "激活",
"inactive": "无效",
"expired": "已过期", "expired": "已过期",
"payButton": "支付", "payButton": "支付",
"refill": "充值", "refill": "充值",
@ -340,7 +338,6 @@
"list_tryagain": "再试一次", "list_tryagain": "再试一次",
"no_ln_wallet_error": "在支付闪电账单之前,必须先添加一个闪电钱包。", "no_ln_wallet_error": "在支付闪电账单之前,必须先添加一个闪电钱包。",
"looks_like_bip38": "这看起来像是受密码保护的私钥BIP38。", "looks_like_bip38": "这看起来像是受密码保护的私钥BIP38。",
"reorder_title": "重新排列钱包",
"please_continue_scanning": "请继续扫描。", "please_continue_scanning": "请继续扫描。",
"select_no_bitcoin": "当前没有可用的比特币钱包。", "select_no_bitcoin": "当前没有可用的比特币钱包。",
"select_no_bitcoin_exp": "需要一个比特币钱包来为闪电钱包充值。 请创建或导入一个。", "select_no_bitcoin_exp": "需要一个比特币钱包来为闪电钱包充值。 请创建或导入一个。",

View file

@ -44,9 +44,7 @@
"refill_external": "用外部錢包增值", "refill_external": "用外部錢包增值",
"refill_lnd_balance": "給閃電錢包增值", "refill_lnd_balance": "給閃電錢包增值",
"sameWalletAsInvoiceError": "你不能用建立賬單的錢包去支付該賬單", "sameWalletAsInvoiceError": "你不能用建立賬單的錢包去支付該賬單",
"title": "管理資金", "title": "管理資金"
"can_send": "能傳送",
"can_receive": "能接收"
}, },
"lndViewInvoice": { "lndViewInvoice": {
"additional_info": "附加信息", "additional_info": "附加信息",
@ -333,7 +331,6 @@
"list_tryagain": "再試一次", "list_tryagain": "再試一次",
"no_ln_wallet_error": "在繳付閃電賬單之前,必須先添加一個閃電錢包。", "no_ln_wallet_error": "在繳付閃電賬單之前,必須先添加一個閃電錢包。",
"looks_like_bip38": "這看起來像是受密碼保護的私鑰BIP38。", "looks_like_bip38": "這看起來像是受密碼保護的私鑰BIP38。",
"reorder_title": "重新排列錢包",
"please_continue_scanning": "請繼續掃描。", "please_continue_scanning": "請繼續掃描。",
"select_no_bitcoin": "當前沒有可用的比特幣錢包。", "select_no_bitcoin": "當前沒有可用的比特幣錢包。",
"select_no_bitcoin_exp": "需要一個比特幣錢包來為閃電錢包增值,請建立或導入一個。", "select_no_bitcoin_exp": "需要一個比特幣錢包來為閃電錢包增值,請建立或導入一個。",

View file

@ -11,7 +11,6 @@ import {
ImportWalletComponent, ImportWalletComponent,
ImportWalletDiscoveryComponent, ImportWalletDiscoveryComponent,
PleaseBackupComponent, PleaseBackupComponent,
PleaseBackupLdkComponent,
PleaseBackupLNDHubComponent, PleaseBackupLNDHubComponent,
ProvideEntropyComponent, ProvideEntropyComponent,
WalletsAddMultisigComponent, WalletsAddMultisigComponent,
@ -27,7 +26,6 @@ export type AddWalletStackParamList = {
ImportCustomDerivationPath: undefined; ImportCustomDerivationPath: undefined;
PleaseBackup: undefined; PleaseBackup: undefined;
PleaseBackupLNDHub: undefined; PleaseBackupLNDHub: undefined;
PleaseBackupLdk: undefined;
ProvideEntropy: undefined; ProvideEntropy: undefined;
WalletsAddMultisig: { WalletsAddMultisig: {
walletLabel: string; walletLabel: string;
@ -87,15 +85,6 @@ const AddWalletStack = () => {
component={PleaseBackupLNDHubComponent} component={PleaseBackupLNDHubComponent}
options={navigationStyle({ gestureEnabled: false, headerBackVisible: false, title: loc.pleasebackup.title })(theme)} options={navigationStyle({ gestureEnabled: false, headerBackVisible: false, title: loc.pleasebackup.title })(theme)}
/> />
<Stack.Screen
name="PleaseBackupLdk"
component={PleaseBackupLdkComponent}
options={navigationStyle({
title: loc.pleasebackup.title,
gestureEnabled: false,
headerBackVisible: false,
})(theme)}
/>
<Stack.Screen <Stack.Screen
name="ProvideEntropy" name="ProvideEntropy"
component={ProvideEntropyComponent} component={ProvideEntropyComponent}

View file

@ -7,7 +7,6 @@ import navigationStyle, { CloseButtonPosition } from '../components/navigationSt
import { useTheme } from '../components/themes'; import { useTheme } from '../components/themes';
import { useExtendedNavigation } from '../hooks/useExtendedNavigation'; import { useExtendedNavigation } from '../hooks/useExtendedNavigation';
import loc from '../loc'; import loc from '../loc';
import LdkInfo from '../screen/lnd/ldkInfo';
import LNDViewAdditionalInvoiceInformation from '../screen/lnd/lndViewAdditionalInvoiceInformation'; import LNDViewAdditionalInvoiceInformation from '../screen/lnd/lndViewAdditionalInvoiceInformation';
import LNDViewAdditionalInvoicePreImage from '../screen/lnd/lndViewAdditionalInvoicePreImage'; import LNDViewAdditionalInvoicePreImage from '../screen/lnd/lndViewAdditionalInvoicePreImage';
import LNDViewInvoice from '../screen/lnd/lndViewInvoice'; import LNDViewInvoice from '../screen/lnd/lndViewInvoice';
@ -25,7 +24,6 @@ import TransactionStatus from '../screen/transactions/TransactionStatus';
import WalletAddresses from '../screen/wallets/WalletAddresses'; import WalletAddresses from '../screen/wallets/WalletAddresses';
import WalletDetails from '../screen/wallets/details'; import WalletDetails from '../screen/wallets/details';
import GenerateWord from '../screen/wallets/generateWord'; import GenerateWord from '../screen/wallets/generateWord';
import LdkViewLogs from '../screen/wallets/ldkViewLogs';
import SelectWallet from '../screen/wallets/SelectWallet'; import SelectWallet from '../screen/wallets/SelectWallet';
import WalletTransactions from '../screen/wallets/transactions'; import WalletTransactions from '../screen/wallets/transactions';
import WalletsList from '../screen/wallets/WalletsList'; import WalletsList from '../screen/wallets/WalletsList';
@ -52,10 +50,8 @@ import {
ToolsComponent, ToolsComponent,
} from './LazyLoadSettingsStack'; } from './LazyLoadSettingsStack';
import PaymentCodesListComponent from './LazyLoadPaymentCodeStack'; import PaymentCodesListComponent from './LazyLoadPaymentCodeStack';
import LDKOpenChannelRoot from './LDKOpenChannelStack';
import LNDCreateInvoiceRoot from './LNDCreateInvoiceStack'; import LNDCreateInvoiceRoot from './LNDCreateInvoiceStack';
import ReceiveDetailsStackRoot from './ReceiveDetailsStack'; import ReceiveDetailsStackRoot from './ReceiveDetailsStack';
import ReorderWalletsStackRoot from './ReorderWalletsStack';
import ScanLndInvoiceRoot from './ScanLndInvoiceStack'; import ScanLndInvoiceRoot from './ScanLndInvoiceStack';
import ScanQRCodeStackRoot from './ScanQRCodeStack'; import ScanQRCodeStackRoot from './ScanQRCodeStack';
import SendDetailsStack from './SendDetailsStack'; import SendDetailsStack from './SendDetailsStack';
@ -66,6 +62,7 @@ import WalletXpubStackRoot from './WalletXpubStack';
import PlusIcon from '../components/icons/PlusIcon'; import PlusIcon from '../components/icons/PlusIcon';
import SettingsButton from '../components/icons/SettingsButton'; import SettingsButton from '../components/icons/SettingsButton';
import ExportMultisigCoordinationSetupStack from './ExportMultisigCoordinationSetupStack'; import ExportMultisigCoordinationSetupStack from './ExportMultisigCoordinationSetupStack';
import ManageWallets from '../screen/wallets/ManageWallets';
const DetailViewStackScreensStack = () => { const DetailViewStackScreensStack = () => {
const theme = useTheme(); const theme = useTheme();
@ -116,19 +113,6 @@ const DetailViewStackScreensStack = () => {
component={WalletTransactions} component={WalletTransactions}
options={WalletTransactions.navigationOptions(theme)} options={WalletTransactions.navigationOptions(theme)}
/> />
<DetailViewStack.Screen
name="LDKOpenChannelRoot"
component={LDKOpenChannelRoot}
options={navigationStyle({
title: loc.lnd.new_channel,
headerLargeTitle: true,
statusBarStyle: 'auto',
closeButtonPosition: CloseButtonPosition.Right,
headerBackVisible: false,
gestureEnabled: false,
})(theme)}
/>
<DetailViewStack.Screen name="LdkInfo" component={LdkInfo} options={LdkInfo.navigationOptions(theme)} />
<DetailViewStack.Screen <DetailViewStack.Screen
name="WalletDetails" name="WalletDetails"
component={WalletDetails} component={WalletDetails}
@ -138,7 +122,6 @@ const DetailViewStackScreensStack = () => {
headerRight: () => SaveButton, headerRight: () => SaveButton,
})(theme)} })(theme)}
/> />
<DetailViewStack.Screen name="LdkViewLogs" component={LdkViewLogs} options={LdkViewLogs.navigationOptions(theme)} />
<DetailViewStack.Screen <DetailViewStack.Screen
name="TransactionDetails" name="TransactionDetails"
component={TransactionDetails} component={TransactionDetails}
@ -247,11 +230,7 @@ const DetailViewStackScreensStack = () => {
/> />
<DetailViewStack.Screen name="AddWalletRoot" component={AddWalletStack} options={NavigationFormModalOptions} /> <DetailViewStack.Screen name="AddWalletRoot" component={AddWalletStack} options={NavigationFormModalOptions} />
<DetailViewStack.Screen <DetailViewStack.Screen name="SendDetailsRoot" component={SendDetailsStack} options={NavigationDefaultOptions} />
name="SendDetailsRoot"
component={SendDetailsStack}
options={navigationStyle({ headerShown: false, presentation: isDesktop ? 'fullScreenModal' : 'modal' })(theme)}
/>
<DetailViewStack.Screen name="LNDCreateInvoiceRoot" component={LNDCreateInvoiceRoot} options={NavigationDefaultOptions} /> <DetailViewStack.Screen name="LNDCreateInvoiceRoot" component={LNDCreateInvoiceRoot} options={NavigationDefaultOptions} />
<DetailViewStack.Screen name="ScanLndInvoiceRoot" component={ScanLndInvoiceRoot} options={NavigationDefaultOptions} /> <DetailViewStack.Screen name="ScanLndInvoiceRoot" component={ScanLndInvoiceRoot} options={NavigationDefaultOptions} />
<DetailViewStack.Screen name="AztecoRedeemRoot" component={AztecoRedeemStackRoot} options={NavigationDefaultOptions} /> <DetailViewStack.Screen name="AztecoRedeemRoot" component={AztecoRedeemStackRoot} options={NavigationDefaultOptions} />
@ -379,13 +358,15 @@ const DetailViewStackScreensStack = () => {
}} }}
/> />
<DetailViewStack.Screen <DetailViewStack.Screen
name="ReorderWallets" name="ManageWallets"
component={ReorderWalletsStackRoot} component={ManageWallets}
options={{ options={navigationStyle({
headerShown: false, headerBackVisible: false,
headerLargeTitle: true,
gestureEnabled: false, gestureEnabled: false,
presentation: 'modal', presentation: 'modal',
}} title: loc.wallets.manage_title,
})(theme)}
/> />
</DetailViewStack.Navigator> </DetailViewStack.Navigator>
); );

View file

@ -5,10 +5,7 @@ export type DetailViewStackParamList = {
UnlockWithScreen: undefined; UnlockWithScreen: undefined;
WalletsList: { scannedData?: string }; WalletsList: { scannedData?: string };
WalletTransactions: { walletID: string; walletType: string }; WalletTransactions: { walletID: string; walletType: string };
LDKOpenChannelRoot: undefined;
LdkInfo: undefined;
WalletDetails: { walletID: string }; WalletDetails: { walletID: string };
LdkViewLogs: undefined;
TransactionDetails: { transactionId: string }; TransactionDetails: { transactionId: string };
TransactionStatus: { hash?: string; walletID?: string }; TransactionStatus: { hash?: string; walletID?: string };
CPFP: { transactionId: string }; CPFP: { transactionId: string };
@ -103,5 +100,5 @@ export type DetailViewStackParamList = {
paymentCode: string; paymentCode: string;
walletID: string; walletID: string;
}; };
ReorderWallets: undefined; ManageWallets: undefined;
}; };

View file

@ -1,27 +0,0 @@
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import React from 'react';
import navigationStyle from '../components/navigationStyle';
import { useTheme } from '../components/themes';
import loc from '../loc';
import { LdkOpenChannelComponent, SelectWalletComponent, SuccessComponent } from './LazyLoadLDKOpenChannelStack';
const Stack = createNativeStackNavigator();
const LDKOpenChannelRoot = () => {
const theme = useTheme();
return (
<Stack.Navigator screenOptions={{ headerShadowVisible: false }} initialRouteName="SelectWallet">
<Stack.Screen
name="SelectWallet"
component={SelectWalletComponent}
options={navigationStyle({ title: loc.wallets.select_wallet })(theme)}
/>
<Stack.Screen name="LDKOpenChannelSetAmount" component={LdkOpenChannelComponent} />
<Stack.Screen name="Success" component={SuccessComponent} options={{ headerShown: false, gestureEnabled: false }} />
</Stack.Navigator>
);
};
export default LDKOpenChannelRoot;

View file

@ -10,7 +10,6 @@ const ImportSpeed = lazy(() => import('../screen/wallets/importSpeed'));
const ImportWallet = lazy(() => import('../screen/wallets/import')); const ImportWallet = lazy(() => import('../screen/wallets/import'));
const PleaseBackup = lazy(() => import('../screen/wallets/PleaseBackup')); const PleaseBackup = lazy(() => import('../screen/wallets/PleaseBackup'));
const PleaseBackupLNDHub = lazy(() => import('../screen/wallets/pleaseBackupLNDHub')); const PleaseBackupLNDHub = lazy(() => import('../screen/wallets/pleaseBackupLNDHub'));
const PleaseBackupLdk = lazy(() => import('../screen/wallets/pleaseBackupLdk'));
const ProvideEntropy = lazy(() => import('../screen/wallets/ProvideEntropy')); const ProvideEntropy = lazy(() => import('../screen/wallets/ProvideEntropy'));
const WalletsAddMultisig = lazy(() => import('../screen/wallets/WalletsAddMultisig')); const WalletsAddMultisig = lazy(() => import('../screen/wallets/WalletsAddMultisig'));
const WalletsAddMultisigStep2 = lazy(() => import('../screen/wallets/addMultisigStep2')); const WalletsAddMultisigStep2 = lazy(() => import('../screen/wallets/addMultisigStep2'));
@ -58,12 +57,6 @@ export const PleaseBackupLNDHubComponent = () => (
</Suspense> </Suspense>
); );
export const PleaseBackupLdkComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}>
<PleaseBackupLdk />
</Suspense>
);
export const ProvideEntropyComponent = () => ( export const ProvideEntropyComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}> <Suspense fallback={<LazyLoadingIndicator />}>
<ProvideEntropy /> <ProvideEntropy />

View file

@ -1,25 +0,0 @@
import React, { lazy, Suspense } from 'react';
import { LazyLoadingIndicator } from './LazyLoadingIndicator';
const SelectWallet = lazy(() => import('../screen/wallets/SelectWallet'));
const LdkOpenChannel = lazy(() => import('../screen/lnd/ldkOpenChannel'));
const Success = lazy(() => import('../screen/send/success'));
export const SelectWalletComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}>
<SelectWallet />
</Suspense>
);
export const LdkOpenChannelComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}>
<LdkOpenChannel />
</Suspense>
);
export const SuccessComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}>
<Success />
</Suspense>
);

View file

@ -3,7 +3,7 @@ import React, { lazy, Suspense } from 'react';
import { LazyLoadingIndicator } from './LazyLoadingIndicator'; import { LazyLoadingIndicator } from './LazyLoadingIndicator';
// Define lazy imports // Define lazy imports
const WalletExport = lazy(() => import('../screen/wallets/export')); const WalletExport = lazy(() => import('../screen/wallets/WalletExport'));
export const WalletExportComponent = () => ( export const WalletExportComponent = () => (
<Suspense fallback={<LazyLoadingIndicator />}> <Suspense fallback={<LazyLoadingIndicator />}>

View file

@ -1,30 +0,0 @@
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import React from 'react';
import navigationStyle from '../components/navigationStyle';
import { useTheme } from '../components/themes';
import loc from '../loc';
import ReorderWallets from '../screen/wallets/ReorderWallets';
const Stack = createNativeStackNavigator();
const ReorderWalletsStackRoot = () => {
const theme = useTheme();
return (
<Stack.Navigator screenOptions={{ headerShadowVisible: false }}>
<Stack.Screen
name="ReorderWalletsScreen"
component={ReorderWallets}
options={navigationStyle({
headerBackVisible: false,
headerLargeTitle: true,
headerTitle: loc.wallets.reorder_title,
})(theme)}
/>
</Stack.Navigator>
);
};
export default ReorderWalletsStackRoot;

View file

@ -99,10 +99,7 @@ export type DetailViewStackParamList = {
UnlockWithScreen: undefined; UnlockWithScreen: undefined;
WalletsList: undefined; WalletsList: undefined;
WalletTransactions: { walletID: string; walletType: string }; WalletTransactions: { walletID: string; walletType: string };
LDKOpenChannelRoot: undefined;
LdkInfo: undefined;
WalletDetails: { walletID: string }; WalletDetails: { walletID: string };
LdkViewLogs: undefined;
TransactionDetails: { transactionId: string }; TransactionDetails: { transactionId: string };
TransactionStatus: { hash?: string; walletID?: string }; TransactionStatus: { hash?: string; walletID?: string };
CPFP: { transactionId: string }; CPFP: { transactionId: string };
@ -213,5 +210,5 @@ export type DetailViewStackParamList = {
paymentCode: string; paymentCode: string;
walletID: string; walletID: string;
}; };
ReorderWallets: undefined; ManageWallets: undefined;
}; };

15306
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -29,6 +29,7 @@
"eslint-config-standard-jsx": "^11.0.0", "eslint-config-standard-jsx": "^11.0.0",
"eslint-config-standard-react": "^13.0.0", "eslint-config-standard-react": "^13.0.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^28.7.0",
"eslint-plugin-n": "^16.6.2", "eslint-plugin-n": "^16.6.2",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1", "eslint-plugin-promise": "^6.1.1",
@ -43,30 +44,29 @@
"typescript": "^5.1.6" "typescript": "^5.1.6"
}, },
"engines": { "engines": {
"node": ">=16", "node": ">=20"
"npm": ">=6.9.0"
}, },
"scripts": { "scripts": {
"clean": "cd android/; ./gradlew clean; cd ..; rm -r -f /tmp/metro-cache/; rm -r -f node_modules/; yarn cache clean; yarn install; yarn start --reset-cache", "clean": "cd android/; ./gradlew clean; cd ..; rm -r -f /tmp/metro-cache/; rm -r -f node_modules/; npm cache clean --force; npm i; npm start -- --reset-cache",
"clean:ios": "rm -fr node_modules && rm -fr ios/Pods && yarn && cd ios && pod update && cd ..; yarn start --reset-cache", "clean:ios": "rm -fr node_modules && rm -fr ios/Pods && npm i && cd ios && pod update && cd ..; npm start -- --reset-cache",
"releasenotes2json": "./scripts/release-notes.sh > release-notes.txt; node -e 'console.log(JSON.stringify(require(\"fs\").readFileSync(\"release-notes.txt\", \"utf8\")));' > release-notes.json", "releasenotes2json": "./scripts/release-notes.sh > release-notes.txt; node -e 'console.log(JSON.stringify(require(\"fs\").readFileSync(\"release-notes.txt\", \"utf8\")));' > release-notes.json",
"branch2json": "./scripts/current-branch.sh > current-branch.json", "branch2json": "./scripts/current-branch.sh > current-branch.json",
"start": "react-native start", "start": "node node_modules/react-native/local-cli/cli.js start",
"android": "react-native run-android", "android": "react-native run-android",
"android:clean": "cd android; ./gradlew clean; cd .. ;yarn android", "android:clean": "cd android; ./gradlew clean ; cd .. ; npm run android",
"ios": "react-native run-ios", "ios": "react-native run-ios",
"postinstall": "rn-nodeify --install buffer,events,process,stream,inherits,path,assert,crypto --hack; yarn releasenotes2json; yarn branch2json; yarn patches", "postinstall": "rn-nodeify --install buffer,events,process,stream,inherits,path,assert,crypto --hack; npm run releasenotes2json; npm run branch2json; npm run patches",
"patches": "patch -p1 < scripts/rn-ldk.patch; patch -p1 < scripts/react-native-camera-kit.patch;", "patches": "patch -p1 < scripts/react-native-camera-kit.patch;",
"test": "yarn tslint && yarn lint && yarn unit && yarn jest", "test": "npm run tslint && npm run lint && npm run unit && npm run jest",
"jest": "jest tests/integration/*", "jest": "jest tests/integration/*",
"e2e:debug-build": "detox build -c android.debug", "e2e:debug-build": "detox build -c android.debug",
"e2e:debug-test": "detox test -c android.debug -d 200000 -l info", "e2e:debug-test": "detox test -c android.debug -d 200000 -l info",
"e2e:debug": "(test -f android/app/build/outputs/apk/debug/app-debug.apk && test -f android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk) || yarn e2e:debug-build; yarn e2e:debug-test", "e2e:debug": "(test -f android/app/build/outputs/apk/debug/app-debug.apk && test -f android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk) || npm run e2e:debug-build; npm run e2e:debug-test",
"e2e:release-build": "detox build -c android.release", "e2e:release-build": "detox build -c android.release",
"e2e:release-test": "detox test -c android.release", "e2e:release-test": "detox test -c android.release",
"tslint": "tsc", "tslint": "tsc",
"lint": " yarn tslint && node scripts/find-unused-loc.js && eslint --ext .js,.ts,.tsx '*.@(js|ts|tsx)' screen 'blue_modules/*.@(js|ts|tsx)' class models loc tests components navigation typings", "lint": " npm run tslint && node scripts/find-unused-loc.js && eslint --ext .js,.ts,.tsx '*.@(js|ts|tsx)' screen 'blue_modules/*.@(js|ts|tsx)' class models loc tests components navigation typings",
"lint:fix": "yarn lint --fix", "lint:fix": "npm run lint -- --fix",
"lint:quickfix": "git status --porcelain | grep -v '\\.json' | grep -E '\\.js|\\.ts' --color=never | awk '{print $2}' | xargs eslint --fix; exit 0", "lint:quickfix": "git status --porcelain | grep -v '\\.json' | grep -E '\\.js|\\.ts' --color=never | awk '{print $2}' | xargs eslint --fix; exit 0",
"unit": "jest -b -w tests/unit/*" "unit": "jest -b -w tests/unit/*"
}, },
@ -103,25 +103,24 @@
] ]
}, },
"dependencies": { "dependencies": {
"@babel/preset-env": "^7.20.0", "@babel/preset-env": "7.25.3",
"@bugsnag/react-native": "7.25.0", "@bugsnag/react-native": "7.25.0",
"@bugsnag/source-maps": "2.3.3", "@bugsnag/source-maps": "2.3.3",
"@keystonehq/bc-ur-registry": "0.6.4", "@keystonehq/bc-ur-registry": "0.6.4",
"@lodev09/react-native-true-sheet": "0.12.4", "@lodev09/react-native-true-sheet": "github:BlueWallet/react-native-true-sheet#730a84b0261ef2dd2e7e9adadba7f260c7f76726",
"@ngraveio/bc-ur": "1.1.12", "@ngraveio/bc-ur": "1.1.12",
"@remobile/react-native-qrcode-local-image": "github:BlueWallet/react-native-qrcode-local-image#31b0113110fbafcf5a5f3ca4183a563550f5c352",
"@noble/secp256k1": "1.6.3", "@noble/secp256k1": "1.6.3",
"@react-native-async-storage/async-storage": "1.24.0", "@react-native-async-storage/async-storage": "1.24.0",
"@react-native-clipboard/clipboard": "1.14.1", "@react-native-clipboard/clipboard": "1.14.1",
"@react-native-community/push-notification-ios": "1.11.0", "@react-native-community/push-notification-ios": "1.11.0",
"@react-native-menu/menu": "1.1.2", "@react-native-menu/menu": "1.1.2",
"@react-native/metro-config": "0.74.84",
"@react-navigation/drawer": "6.7.2", "@react-navigation/drawer": "6.7.2",
"@react-navigation/native": "6.1.18", "@react-navigation/native": "6.1.18",
"@react-navigation/native-stack": "6.11.0", "@react-navigation/native-stack": "6.11.0",
"@remobile/react-native-qrcode-local-image": "github:BlueWallet/react-native-qrcode-local-image#31b0113110fbafcf5a5f3ca4183a563550f5c352",
"@rneui/base": "4.0.0-rc.8", "@rneui/base": "4.0.0-rc.8",
"@rneui/themed": "4.0.0-rc.8", "@rneui/themed": "4.0.0-rc.8",
"@spsina/bip47": "github:BlueWallet/bip47#f4b8047c7efbe382c268b3074a4956698087f984", "@spsina/bip47": "github:BlueWallet/bip47#f4b8047",
"aezeed": "0.0.5", "aezeed": "0.0.5",
"assert": "2.1.0", "assert": "2.1.0",
"base-x": "4.0.0", "base-x": "4.0.0",
@ -130,7 +129,7 @@
"bignumber.js": "9.1.1", "bignumber.js": "9.1.1",
"bip21": "2.0.3", "bip21": "2.0.3",
"bip32": "3.0.1", "bip32": "3.0.1",
"bip38": "github:BlueWallet/bip38#7ec4b1932b98eaaff16c5a26765a26466958e6b4", "bip38": "github:BlueWallet/bip38",
"bip39": "3.1.0", "bip39": "3.1.0",
"bitcoinjs-lib": "6.1.6", "bitcoinjs-lib": "6.1.6",
"bitcoinjs-message": "2.2.0", "bitcoinjs-message": "2.2.0",
@ -142,7 +141,7 @@
"detox": "20.25.1", "detox": "20.25.1",
"ecpair": "2.0.1", "ecpair": "2.0.1",
"ecurve": "1.0.6", "ecurve": "1.0.6",
"electrum-client": "github:BlueWallet/rn-electrum-client#1bfe3cc4249d5440b816baac942b0cfa921eebf9", "electrum-client": "github:BlueWallet/rn-electrum-client#1bfe3cc",
"electrum-mnemonic": "2.0.0", "electrum-mnemonic": "2.0.0",
"events": "3.3.0", "events": "3.3.0",
"frisbee": "3.1.4", "frisbee": "3.1.4",
@ -154,38 +153,39 @@
"process": "0.11.10", "process": "0.11.10",
"prop-types": "15.8.1", "prop-types": "15.8.1",
"react": "18.2.0", "react": "18.2.0",
"react-localization": "github:BlueWallet/react-localization#ae7969a8998128aebf1169f931fb22587dc5f874", "react-localization": "github:BlueWallet/react-localization#ae7969a",
"react-native": "0.72.14", "react-native": "0.72.14",
"react-native-biometrics": "3.0.1", "react-native-biometrics": "3.0.1",
"react-native-blue-crypto": "github:BlueWallet/react-native-blue-crypto#3cb5442425bd835e185284fbc62e84b7155bc441", "react-native-blue-crypto": "github:BlueWallet/react-native-blue-crypto#3cb5442",
"react-native-camera-kit": "13.0.0", "react-native-camera-kit": "13.0.0",
"react-native-crypto": "2.2.0", "react-native-crypto": "2.2.0",
"react-native-default-preference": "1.4.4", "react-native-default-preference": "1.4.4",
"react-native-device-info": "11.1.0", "react-native-device-info": "11.1.0",
"react-native-document-picker": "github:BlueWallet/react-native-document-picker#ba9299e01be6d0ddaa5f1b491406481a5ad0f315", "react-native-document-picker": "9.3.0",
"react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#3061e3055cbe0a9c7665b9c4b90912c30f668a3d", "react-native-draggable-flatlist": "github:BlueWallet/react-native-draggable-flatlist#v4.0.1",
"react-native-fs": "2.20.0", "react-native-fs": "2.20.0",
"react-native-gesture-handler": "2.17.1", "react-native-gesture-handler": "2.18.1",
"react-native-handoff": "github:BlueWallet/react-native-handoff#31d005f93d31099d0e564590a3bbd052b8a02b39", "react-native-handoff": "github:BlueWallet/react-native-handoff#v0.0.4",
"react-native-haptic-feedback": "2.2.0", "react-native-haptic-feedback": "2.3.0",
"react-native-idle-timer": "github:BlueWallet/react-native-idle-timer#7300b637c465c86e8db874c442e687950111da40", "react-native-idle-timer": "github:BlueWallet/react-native-idle-timer#v2.2.3",
"react-native-image-picker": "7.1.2", "react-native-image-picker": "7.1.2",
"react-native-ios-context-menu": "github:BlueWallet/react-native-ios-context-menu#v1.15.3", "react-native-ios-context-menu": "github:BlueWallet/react-native-ios-context-menu#e5c1217cd220bfab6e6d9a7c65838545082e3f8e",
"react-native-keychain": "8.2.0", "react-native-keychain": "8.2.0",
"react-native-linear-gradient": "2.8.3", "react-native-linear-gradient": "2.8.3",
"react-native-localize": "3.2.0", "react-native-localize": "3.2.1",
"react-native-obscure": "github:BlueWallet/react-native-obscure#f4b83b4a261e39b1f5ed4a45ac5bcabc8a59eadb", "react-native-obscure": "github:BlueWallet/react-native-obscure#f4b83b4a261e39b1f5ed4a45ac5bcabc8a59eadb",
"react-native-permissions": "4.1.5", "react-native-permissions": "4.1.5",
"react-native-privacy-snapshot": "github:BlueWallet/react-native-privacy-snapshot#529e4627d93f67752a27e82a040ff7b64dca0783",
"react-native-prompt-android": "github:BlueWallet/react-native-prompt-android#ed168d66fed556bc2ed07cf498770f058b78a376", "react-native-prompt-android": "github:BlueWallet/react-native-prompt-android#ed168d66fed556bc2ed07cf498770f058b78a376",
"react-native-privacy-snapshot": "github:BlueWallet/react-native-privacy-snapshot#529e4627d93f67752a27e82a040ff7b64dca0783",
"react-native-push-notification": "8.1.1", "react-native-push-notification": "8.1.1",
"react-native-qrcode-svg": "6.3.1", "react-native-qrcode-svg": "6.3.1",
"react-native-quick-actions": "0.3.13", "react-native-quick-actions": "0.3.13",
"react-native-randombytes": "3.6.1", "react-native-randombytes": "3.6.1",
"react-native-rate": "1.2.12", "react-native-rate": "1.2.12",
"react-native-reanimated": "3.14.0", "react-native-reanimated": "3.14.0",
"@react-native/metro-config": "0.74.84",
"react-native-safe-area-context": "4.10.8", "react-native-safe-area-context": "4.10.8",
"react-native-screens": "3.32.0", "react-native-screens": "3.33.0",
"react-native-secure-key-store": "github:BlueWallet/react-native-secure-key-store#2076b4849e88aa0a78e08bfbb4ce3923e0925cbc", "react-native-secure-key-store": "github:BlueWallet/react-native-secure-key-store#2076b4849e88aa0a78e08bfbb4ce3923e0925cbc",
"react-native-share": "10.2.1", "react-native-share": "10.2.1",
"react-native-svg": "13.14.1", "react-native-svg": "13.14.1",
@ -194,13 +194,12 @@
"react-native-watch-connectivity": "1.1.0", "react-native-watch-connectivity": "1.1.0",
"readable-stream": "3.6.2", "readable-stream": "3.6.2",
"realm": "12.12.1", "realm": "12.12.1",
"rn-ldk": "github:BlueWallet/rn-ldk#v0.8.4",
"rn-nodeify": "10.3.0", "rn-nodeify": "10.3.0",
"scryptsy": "2.1.0", "scryptsy": "2.1.0",
"silent-payments": "github:BlueWallet/SilentPayments#7ac4d17b85dc875a3ebb072883dd1d92ac286d98", "silent-payments": "github:BlueWallet/SilentPayments#7ac4d17",
"slip39": "github:BlueWallet/slip39-js#d316ee6a929ab645fe5462ef1c91720eb66889c8", "slip39": "https://github.com/BlueWallet/slip39-js#d316ee6",
"stream-browserify": "3.0.0", "stream-browserify": "3.0.0",
"url": "0.11.3", "url": "0.11.4",
"wif": "2.0.6" "wif": "2.0.6"
}, },
"react-native": { "react-native": {
@ -216,14 +215,13 @@
"stream": "stream-browserify" "stream": "stream-browserify"
}, },
"browser": { "browser": {
"_stream_duplex": "readable-stream/duplex",
"_stream_passthrough": "readable-stream/passthrough",
"_stream_readable": "readable-stream/readable",
"_stream_transform": "readable-stream/transform",
"_stream_writable": "readable-stream/writable",
"crypto": "react-native-crypto", "crypto": "react-native-crypto",
"path": "path-browserify", "path": "path-browserify",
"_stream_transform": "readable-stream/transform",
"_stream_readable": "readable-stream/readable",
"_stream_writable": "readable-stream/writable",
"_stream_duplex": "readable-stream/duplex",
"_stream_passthrough": "readable-stream/passthrough",
"stream": "stream-browserify" "stream": "stream-browserify"
}, }
"packageManager": "yarn@3.6.4"
} }

Some files were not shown because too many files have changed in this diff Show more