Flutter uniFFI (#510)
* Flutter uniffi * Set on-demand resources * Do not build non-uniffi libraries * Change iosLibName * Add BreezSDKLiquid as on demand resources * Use downloaded framework * Add Sources to published flutter package * Set OTHER_LDFLAGS * Add logging * Refactor library initialization logic and throw an error if initialization fails * Do not statically link framework on production * Use uniFFI headers to generate FlutterBreezLiquidBindings * Re add frb header * Correct the library name * Remove static_framework * Move source header files * Copy iOS podspecs to macOS folder * Update version of macOS podspecs * Remove Windows & Linux support * Remove CMake scripts * Remove breez_sdk_liquid.podspec from version script * Cleanup older build scripts used by melos & just recipes * Remove softlink & copy recipes Add recipe descriptions * Rename link-uniffi recipe to link-headers Make sure headers are linked after uniffi is built - Remove just gen recipe Add recipe descriptions * Set package versions on production files as well when publishing * Include bindings project on melos script hooks * Flutter uniffi * Set on-demand resources * Do not build non-uniffi libraries * Change iosLibName * Add BreezSDKLiquid as on demand resources * Use downloaded framework * Add Sources to published flutter package * Set OTHER_LDFLAGS * Add logging * Refactor library initialization logic and throw an error if initialization fails * Do not statically link framework on production * Use uniFFI headers to generate FlutterBreezLiquidBindings * Re add frb header * Correct the library name * Remove static_framework * Move source header files * Copy iOS podspecs to macOS folder * Update version of macOS podspecs * Remove Windows & Linux support * Remove CMake scripts * Remove breez_sdk_liquid.podspec from version script * Cleanup older build scripts used by melos & just recipes * Remove softlink & copy recipes Add recipe descriptions * Rename link-uniffi recipe to link-headers Make sure headers are linked after uniffi is built - Remove just gen recipe Add recipe descriptions * Set package versions on production files as well when publishing * Include bindings project on melos script hooks * chore: just version * fix: remove unused files on "Set package version" step * copy FFI header files * [WIP] Add macOS support * remove example app on Flutter plugin * Link headers before running ffigen on CI workflow * macOS: add macos/Sources folder to .gitignore . * macOS: Copy iOS sources to macOS sources after downloading bindings * macOS: copy sources & framework file to macos folder on build-uniffi-swift script * import breez_sdk_liquidFFI header on plugin file Update flutter_breez_liquid.c * cleanup header file artifacts --------- Co-authored-by: Ross Savage <hello@satimoto.com>
133
.github/workflows/build-bindings-flutter.yml
vendored
@@ -1,133 +0,0 @@
|
|||||||
name: Build bindings for Flutter
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
ref:
|
|
||||||
description: 'commit/tag/branch reference'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
repository:
|
|
||||||
description: 'sdk repository, defaults to current repository'
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
ref:
|
|
||||||
description: 'commit/tag/branch reference'
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
use-dummy-binaries:
|
|
||||||
description: 'If true, creates dummy binaries rather than real binaries'
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
setup:
|
|
||||||
if: ${{ !inputs.use-dummy-binaries }}
|
|
||||||
runs-on: macOS-latest
|
|
||||||
name: Setup
|
|
||||||
steps:
|
|
||||||
- name: Disk Cleanup
|
|
||||||
run: |
|
|
||||||
echo "::group::Free space before cleanup"
|
|
||||||
df -hI
|
|
||||||
echo "::endgroup::"
|
|
||||||
echo "::group::Cleaned Files"
|
|
||||||
sudo rm -rf /Applications/Xcode_14.3.1.app
|
|
||||||
sudo rm -rf /Applications/Xcode_15.0.1.app
|
|
||||||
sudo rm -rf /Applications/Xcode_15.1.app
|
|
||||||
sudo rm -rf /Applications/Xcode_15.2.app
|
|
||||||
sudo rm -rf /Applications/Xcode_15.3.app
|
|
||||||
echo "::endgroup::"
|
|
||||||
echo "::group::Free space after cleanup"
|
|
||||||
df -hI
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
build:
|
|
||||||
if: ${{ !inputs.use-dummy-binaries }}
|
|
||||||
needs: setup
|
|
||||||
runs-on: macOS-latest
|
|
||||||
name: Build Flutter bindings
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{ inputs.ref }}
|
|
||||||
repository: ${{ inputs.repository || github.repository }}
|
|
||||||
|
|
||||||
- name: Install Protoc
|
|
||||||
uses: arduino/setup-protoc@v3
|
|
||||||
with:
|
|
||||||
version: "27.2"
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Install Zig
|
|
||||||
uses: goto-bus-stop/setup-zig@v2
|
|
||||||
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
|
||||||
with:
|
|
||||||
workspaces: lib
|
|
||||||
|
|
||||||
- name: Set up Flutter
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: stable
|
|
||||||
flutter-version: 3.22.3 # Pinned until resource linking issues on Android is resolved with 3.24
|
|
||||||
- run: flutter --version
|
|
||||||
|
|
||||||
- name: Set up just
|
|
||||||
uses: extractions/setup-just@v2
|
|
||||||
|
|
||||||
- name: Set up Melos
|
|
||||||
uses: bluefireteam/melos-action@v3
|
|
||||||
with:
|
|
||||||
run-bootstrap: false
|
|
||||||
|
|
||||||
- name: Initialize the workspace
|
|
||||||
working-directory: lib/bindings/langs/flutter/
|
|
||||||
run: |
|
|
||||||
just clean
|
|
||||||
just init
|
|
||||||
|
|
||||||
- name: Install flutter_rust_bridge_codegen dependencies
|
|
||||||
working-directory: lib/bindings/langs/flutter/
|
|
||||||
run: just frb
|
|
||||||
|
|
||||||
- name: Build bindings
|
|
||||||
working-directory: lib/bindings/langs/flutter/
|
|
||||||
run: just build
|
|
||||||
|
|
||||||
- name: Build language packages
|
|
||||||
working-directory: lib/bindings/langs/flutter/
|
|
||||||
run: |
|
|
||||||
melos build-apple
|
|
||||||
melos build-android
|
|
||||||
|
|
||||||
- name: Copy build output
|
|
||||||
run: |
|
|
||||||
mkdir -p dist
|
|
||||||
cp lib/bindings/langs/flutter/platform-build/android.tar.gz dist
|
|
||||||
cp lib/bindings/langs/flutter/platform-build/breez_sdk_liquid.xcframework.zip dist
|
|
||||||
|
|
||||||
- name: Archive Flutter bindings
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: bindings-flutter
|
|
||||||
path: dist/*
|
|
||||||
|
|
||||||
build-dummies:
|
|
||||||
if: ${{ inputs.use-dummy-binaries }}
|
|
||||||
runs-on: macOS-latest
|
|
||||||
name: Build Flutter dummy bindings
|
|
||||||
steps:
|
|
||||||
- name: Create dummy files
|
|
||||||
run: |
|
|
||||||
touch android.tar.gz
|
|
||||||
touch breez_sdk_liquid.xcframework.zip
|
|
||||||
|
|
||||||
- name: Archive Flutter dummy bindings
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: bindings-flutter
|
|
||||||
path: ./*
|
|
||||||
5
.github/workflows/main.yml
vendored
@@ -200,6 +200,11 @@ jobs:
|
|||||||
working-directory: lib/bindings/langs/flutter/
|
working-directory: lib/bindings/langs/flutter/
|
||||||
run: just codegen
|
run: just codegen
|
||||||
|
|
||||||
|
- name: Link C Headers
|
||||||
|
working-directory: lib/bindings/langs/flutter/
|
||||||
|
if: ${{ success() || failure() }}
|
||||||
|
run: just link-headers
|
||||||
|
|
||||||
- name: Generate FFI bindings
|
- name: Generate FFI bindings
|
||||||
working-directory: lib/bindings/langs/flutter/
|
working-directory: lib/bindings/langs/flutter/
|
||||||
if: ${{ success() || failure() }}
|
if: ${{ success() || failure() }}
|
||||||
|
|||||||
14
.github/workflows/publish-all-platforms.yml
vendored
@@ -98,11 +98,10 @@ jobs:
|
|||||||
bindings-windows: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version }}
|
bindings-windows: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version }}
|
||||||
bindings-darwin: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version || !!needs.pre-setup.outputs.swift-package-version }}
|
bindings-darwin: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version || !!needs.pre-setup.outputs.swift-package-version }}
|
||||||
bindings-linux: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version }}
|
bindings-linux: ${{ !!needs.pre-setup.outputs.csharp-package-version || !!needs.pre-setup.outputs.golang-package-version || !!needs.pre-setup.outputs.python-package-version }}
|
||||||
bindings-flutter: ${{ !!needs.pre-setup.outputs.flutter-package-version }}
|
|
||||||
bindings-android: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version || !!needs.pre-setup.outputs.golang-package-version }}
|
bindings-android: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version || !!needs.pre-setup.outputs.golang-package-version }}
|
||||||
bindings-ios: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version || !!needs.pre-setup.outputs.swift-package-version }}
|
bindings-ios: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version || !!needs.pre-setup.outputs.swift-package-version }}
|
||||||
kotlin: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version }}
|
kotlin: ${{ !!needs.pre-setup.outputs.kotlin-multiplatform-package-version || !!needs.pre-setup.outputs.maven-package-version }}
|
||||||
swift: ${{ !!needs.pre-setup.outputs.swift-package-version }}
|
swift: ${{ !!needs.pre-setup.outputs.swift-package-version || !!needs.pre-setup.outputs.flutter-package-version }}
|
||||||
python: ${{ !!needs.pre-setup.outputs.python-package-version }}
|
python: ${{ !!needs.pre-setup.outputs.python-package-version }}
|
||||||
csharp: ${{ !!needs.pre-setup.outputs.csharp-package-version }}
|
csharp: ${{ !!needs.pre-setup.outputs.csharp-package-version }}
|
||||||
golang: ${{ !!needs.pre-setup.outputs.golang-package-version }}
|
golang: ${{ !!needs.pre-setup.outputs.golang-package-version }}
|
||||||
@@ -152,15 +151,6 @@ jobs:
|
|||||||
ref: ${{ needs.setup.outputs.ref }}
|
ref: ${{ needs.setup.outputs.ref }}
|
||||||
use-dummy-binaries: ${{ needs.setup.outputs.use-dummy-binaries == 'true' }}
|
use-dummy-binaries: ${{ needs.setup.outputs.use-dummy-binaries == 'true' }}
|
||||||
|
|
||||||
build-bindings-flutter:
|
|
||||||
needs: setup
|
|
||||||
if: ${{ needs.setup.outputs.bindings-flutter == 'true' }}
|
|
||||||
uses: ./.github/workflows/build-bindings-flutter.yml
|
|
||||||
with:
|
|
||||||
repository: ${{ needs.setup.outputs.repository }}
|
|
||||||
ref: ${{ needs.setup.outputs.ref }}
|
|
||||||
use-dummy-binaries: ${{ needs.setup.outputs.use-dummy-binaries == 'true' }}
|
|
||||||
|
|
||||||
build-bindings-android:
|
build-bindings-android:
|
||||||
needs: setup
|
needs: setup
|
||||||
if: ${{ needs.setup.outputs.bindings-android == 'true' }}
|
if: ${{ needs.setup.outputs.bindings-android == 'true' }}
|
||||||
@@ -275,7 +265,7 @@ jobs:
|
|||||||
publish-flutter:
|
publish-flutter:
|
||||||
needs:
|
needs:
|
||||||
- setup
|
- setup
|
||||||
- build-bindings-flutter
|
- build-language-bindings
|
||||||
- publish-dart
|
- publish-dart
|
||||||
if: ${{ needs.setup.outputs.flutter == 'true' }}
|
if: ${{ needs.setup.outputs.flutter == 'true' }}
|
||||||
uses: ./.github/workflows/publish-flutter.yml
|
uses: ./.github/workflows/publish-flutter.yml
|
||||||
|
|||||||
41
.github/workflows/publish-flutter.yml
vendored
@@ -57,14 +57,19 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
rm -rf android
|
rm -rf android
|
||||||
rm -rf ios
|
rm -rf ios
|
||||||
|
rm -rf macos
|
||||||
rm -rf lib
|
rm -rf lib
|
||||||
cp -r ../build/packages/flutter/android .
|
cp -r ../build/packages/flutter/android .
|
||||||
cp -r ../build/packages/flutter/ios .
|
cp -r ../build/packages/flutter/ios .
|
||||||
|
cp -r ../build/packages/flutter/macos .
|
||||||
mv android/build.gradle.production android/build.gradle
|
mv android/build.gradle.production android/build.gradle
|
||||||
mv ios/flutter_breez_liquid.podspec.production ios/flutter_breez_liquid.podspec
|
mv ios/flutter_breez_liquid.podspec.production ios/flutter_breez_liquid.podspec
|
||||||
rm ios/breez_sdk_liquid.podspec
|
mv macos/flutter_breez_liquid.podspec.production macos/flutter_breez_liquid.podspec
|
||||||
cp -r ../build/packages/flutter/lib .
|
cp -r ../build/packages/flutter/lib .
|
||||||
cp -r ../build/lib/bindings/langs/flutter/breez_sdk_liquid/include/breez_sdk_liquid.h ios/Classes
|
cp -r ../build/lib/bindings/langs/flutter/breez_sdk_liquid/include/breez_sdk_liquid.h ios/Classes
|
||||||
|
cp -r ../build/lib/bindings/langs/flutter/breez_sdk_liquid/include/breez_sdk_liquid.h macos/Classes
|
||||||
|
cp -r ../build/lib/bindings/langs/flutter/breez_sdk_liquidFFI/include/breez_sdk_liquidFFI.h ios/Classes
|
||||||
|
cp -r ../build/lib/bindings/langs/flutter/breez_sdk_liquidFFI/include/breez_sdk_liquidFFI.h macos/Classes
|
||||||
cp ../build/packages/flutter/analysis_options.yaml .
|
cp ../build/packages/flutter/analysis_options.yaml .
|
||||||
cp ../build/packages/flutter/pubspec.yaml .
|
cp ../build/packages/flutter/pubspec.yaml .
|
||||||
cp ../build/packages/flutter/pubspec_overrides.yaml .
|
cp ../build/packages/flutter/pubspec_overrides.yaml .
|
||||||
@@ -78,8 +83,19 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: bindings-flutter
|
name: bindings-swift
|
||||||
path: bindings/
|
path: dist/ios/Sources/BreezSDKLiquid/
|
||||||
|
|
||||||
|
- name: Cleanup header file artifacts
|
||||||
|
working-directory: dist/ios/Sources/BreezSDKLiquid/
|
||||||
|
run: |
|
||||||
|
rm breez_sdk_liquidFFI.h
|
||||||
|
rm breez_sdk_liquidFFI.modulemap
|
||||||
|
|
||||||
|
- name: Copy iOS sources to macOS sources
|
||||||
|
working-directory: dist
|
||||||
|
run: |
|
||||||
|
cp -r ios/Sources/ macos/Sources/
|
||||||
|
|
||||||
- name: Set package version
|
- name: Set package version
|
||||||
working-directory: dist
|
working-directory: dist
|
||||||
@@ -87,15 +103,15 @@ jobs:
|
|||||||
sed -i.bak -e 's/version:.*/version: ${{ inputs.package-version }}/' pubspec.yaml
|
sed -i.bak -e 's/version:.*/version: ${{ inputs.package-version }}/' pubspec.yaml
|
||||||
sed -i.bak -e 's/path:.*/git:\n url: git@github.com:breez\/breez-sdk-liquid-dart.git\n ref: ${{ inputs.package-version }}/' pubspec_overrides.yaml
|
sed -i.bak -e 's/path:.*/git:\n url: git@github.com:breez\/breez-sdk-liquid-dart.git\n ref: ${{ inputs.package-version }}/' pubspec_overrides.yaml
|
||||||
sed -i.bak -e "s/^version .*/version '${{ inputs.package-version }}'/" android/build.gradle
|
sed -i.bak -e "s/^version .*/version '${{ inputs.package-version }}'/" android/build.gradle
|
||||||
sed -i.bak -e 's/set(TagName.*/set(TagName "v${{ inputs.package-version }}")/' android/CMakeLists.txt
|
|
||||||
sed -i.bak -e "s/^version = .*/version = '${{ inputs.package-version }}'/" ios/flutter_breez_liquid.podspec
|
sed -i.bak -e "s/^version = .*/version = '${{ inputs.package-version }}'/" ios/flutter_breez_liquid.podspec
|
||||||
|
sed -i.bak -e "s/^version = .*/version = '${{ inputs.package-version }}'/" macos/flutter_breez_liquid.podspec
|
||||||
rm pubspec.yaml.bak
|
rm pubspec.yaml.bak
|
||||||
rm pubspec_overrides.yaml.bak
|
rm pubspec_overrides.yaml.bak
|
||||||
rm android/build.gradle.bak
|
rm android/build.gradle.bak
|
||||||
rm android/CMakeLists.txt.bak
|
|
||||||
rm ios/flutter_breez_liquid.podspec.bak
|
rm ios/flutter_breez_liquid.podspec.bak
|
||||||
|
rm macos/flutter_breez_liquid.podspec.bak
|
||||||
|
|
||||||
- name: Update version number on podspec files & CMake scripts
|
- name: Update version number on podspec & gradle files
|
||||||
working-directory: build/lib/bindings/langs/flutter/
|
working-directory: build/lib/bindings/langs/flutter/
|
||||||
run: bash scripts/version.sh
|
run: bash scripts/version.sh
|
||||||
|
|
||||||
@@ -118,16 +134,3 @@ jobs:
|
|||||||
git push
|
git push
|
||||||
git tag v${{ inputs.package-version }} -m "v${{ inputs.package-version }}"
|
git tag v${{ inputs.package-version }} -m "v${{ inputs.package-version }}"
|
||||||
git push --tags
|
git push --tags
|
||||||
|
|
||||||
- name: Release and attach binary artifacts
|
|
||||||
if: ${{ inputs.publish }}
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
repository: breez/breez-sdk-liquid-flutter
|
|
||||||
files: |
|
|
||||||
bindings/android.tar.gz
|
|
||||||
bindings/breez_sdk_liquid.xcframework.zip
|
|
||||||
tag_name: v${{ inputs.package-version || '0.0.1' }}
|
|
||||||
generate_release_notes: false
|
|
||||||
token: ${{ secrets.SWIFT_RELEASE_TOKEN }}
|
|
||||||
prerelease: true
|
|
||||||
|
|||||||
2
.gitignore
vendored
@@ -5,6 +5,8 @@
|
|||||||
# symlink headers
|
# symlink headers
|
||||||
packages/flutter/ios/Classes/breez_sdk_liquid.h
|
packages/flutter/ios/Classes/breez_sdk_liquid.h
|
||||||
packages/flutter/macos/Classes/breez_sdk_liquid.h
|
packages/flutter/macos/Classes/breez_sdk_liquid.h
|
||||||
|
packages/flutter/ios/Classes/breez_sdk_liquidFFI.h
|
||||||
|
packages/flutter/macos/Classes/breez_sdk_liquidFFI.h
|
||||||
# Miscellaneous
|
# Miscellaneous
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.idea/
|
.idea/
|
||||||
|
|||||||
4
cli/Cargo.lock
generated
@@ -586,9 +586,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytemuck"
|
name = "bytemuck"
|
||||||
version = "1.17.0"
|
version = "1.18.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31"
|
checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "byteorder"
|
name = "byteorder"
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ abstract class ForegroundService : SdkForegroundService, EventListener, Service(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
fun setLogger(logger: Logger) {
|
fun setServiceLogger(logger: Logger) {
|
||||||
this.logger = ServiceLogger(logger)
|
this.logger = ServiceLogger(logger)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,380 @@
|
|||||||
|
// This file was autogenerated by some hot garbage in the `uniffi` crate.
|
||||||
|
// Trust me, you don't want to mess with it!
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// The following structs are used to implement the lowest level
|
||||||
|
// of the FFI, and thus useful to multiple uniffied crates.
|
||||||
|
// We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H.
|
||||||
|
#ifdef UNIFFI_SHARED_H
|
||||||
|
// We also try to prevent mixing versions of shared uniffi header structs.
|
||||||
|
// If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4
|
||||||
|
#ifndef UNIFFI_SHARED_HEADER_V4
|
||||||
|
#error Combining helper code from multiple versions of uniffi is not supported
|
||||||
|
#endif // ndef UNIFFI_SHARED_HEADER_V4
|
||||||
|
#else
|
||||||
|
#define UNIFFI_SHARED_H
|
||||||
|
#define UNIFFI_SHARED_HEADER_V4
|
||||||
|
// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
|
||||||
|
// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
|
||||||
|
|
||||||
|
typedef struct RustBuffer
|
||||||
|
{
|
||||||
|
int32_t capacity;
|
||||||
|
int32_t len;
|
||||||
|
uint8_t *_Nullable data;
|
||||||
|
} RustBuffer;
|
||||||
|
|
||||||
|
typedef int32_t (*ForeignCallback)(uint64_t, int32_t, const uint8_t *_Nonnull, int32_t, RustBuffer *_Nonnull);
|
||||||
|
|
||||||
|
// Task defined in Rust that Swift executes
|
||||||
|
typedef void (*UniFfiRustTaskCallback)(const void * _Nullable, int8_t);
|
||||||
|
|
||||||
|
// Callback to execute Rust tasks using a Swift Task
|
||||||
|
//
|
||||||
|
// Args:
|
||||||
|
// executor: ForeignExecutor lowered into a size_t value
|
||||||
|
// delay: Delay in MS
|
||||||
|
// task: UniFfiRustTaskCallback to call
|
||||||
|
// task_data: data to pass the task callback
|
||||||
|
typedef int8_t (*UniFfiForeignExecutorCallback)(size_t, uint32_t, UniFfiRustTaskCallback _Nullable, const void * _Nullable);
|
||||||
|
|
||||||
|
typedef struct ForeignBytes
|
||||||
|
{
|
||||||
|
int32_t len;
|
||||||
|
const uint8_t *_Nullable data;
|
||||||
|
} ForeignBytes;
|
||||||
|
|
||||||
|
// Error definitions
|
||||||
|
typedef struct RustCallStatus {
|
||||||
|
int8_t code;
|
||||||
|
RustBuffer errorBuf;
|
||||||
|
} RustCallStatus;
|
||||||
|
|
||||||
|
// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️
|
||||||
|
// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️
|
||||||
|
#endif // def UNIFFI_SHARED_H
|
||||||
|
|
||||||
|
// Continuation callback for UniFFI Futures
|
||||||
|
typedef void (*UniFfiRustFutureContinuation)(void * _Nonnull, int8_t);
|
||||||
|
|
||||||
|
// Scaffolding functions
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_free_bindingliquidsdk(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_add_event_listener(void*_Nonnull ptr, uint64_t listener, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_backup(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_buy_bitcoin(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_check_message(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_disconnect(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_fetch_fiat_rates(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_fetch_lightning_limits(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_fetch_onchain_limits(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_get_info(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_list_fiat_currencies(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_list_payments(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_list_refundables(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_lnurl_auth(void*_Nonnull ptr, RustBuffer req_data, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_lnurl_pay(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_lnurl_withdraw(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_pay_onchain(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_prepare_buy_bitcoin(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_prepare_pay_onchain(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_prepare_receive_payment(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_prepare_refund(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_prepare_send_payment(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_receive_payment(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_recommended_fees(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_refund(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_register_webhook(void*_Nonnull ptr, RustBuffer webhook_url, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_remove_event_listener(void*_Nonnull ptr, RustBuffer id, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_rescan_onchain_swaps(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_restore(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_send_payment(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_sign_message(void*_Nonnull ptr, RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_sync(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_method_bindingliquidsdk_unregister_webhook(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_init_callback_eventlistener(ForeignCallback _Nonnull callback_stub, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_init_callback_logger(ForeignCallback _Nonnull callback_stub, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void*_Nonnull uniffi_breez_sdk_liquid_bindings_fn_func_connect(RustBuffer req, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_func_default_config(RustBuffer network, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_func_parse(RustBuffer input, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer uniffi_breez_sdk_liquid_bindings_fn_func_parse_invoice(RustBuffer input, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void uniffi_breez_sdk_liquid_bindings_fn_func_set_logger(uint64_t logger, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer ffi_breez_sdk_liquid_bindings_rustbuffer_alloc(int32_t size, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer ffi_breez_sdk_liquid_bindings_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
RustBuffer ffi_breez_sdk_liquid_bindings_rustbuffer_reserve(RustBuffer buf, int32_t additional, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_continuation_callback_set(UniFfiRustFutureContinuation _Nonnull callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_u8(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_u8(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_u8(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
uint8_t ffi_breez_sdk_liquid_bindings_rust_future_complete_u8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_i8(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_i8(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_i8(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
int8_t ffi_breez_sdk_liquid_bindings_rust_future_complete_i8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_u16(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_u16(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_u16(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
uint16_t ffi_breez_sdk_liquid_bindings_rust_future_complete_u16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_i16(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_i16(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_i16(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
int16_t ffi_breez_sdk_liquid_bindings_rust_future_complete_i16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_u32(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_u32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_u32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
uint32_t ffi_breez_sdk_liquid_bindings_rust_future_complete_u32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_i32(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_i32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_i32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
int32_t ffi_breez_sdk_liquid_bindings_rust_future_complete_i32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_u64(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_u64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_u64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
uint64_t ffi_breez_sdk_liquid_bindings_rust_future_complete_u64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_i64(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_i64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_i64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
int64_t ffi_breez_sdk_liquid_bindings_rust_future_complete_i64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_f32(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_f32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_f32(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
float ffi_breez_sdk_liquid_bindings_rust_future_complete_f32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_f64(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_f64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_f64(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
double ffi_breez_sdk_liquid_bindings_rust_future_complete_f64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_pointer(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_pointer(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_pointer(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void*_Nonnull ffi_breez_sdk_liquid_bindings_rust_future_complete_pointer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_rust_buffer(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_rust_buffer(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_rust_buffer(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
RustBuffer ffi_breez_sdk_liquid_bindings_rust_future_complete_rust_buffer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_poll_void(void* _Nonnull handle, void* _Nonnull uniffi_callback
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_cancel_void(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_free_void(void* _Nonnull handle
|
||||||
|
);
|
||||||
|
void ffi_breez_sdk_liquid_bindings_rust_future_complete_void(void* _Nonnull handle, RustCallStatus *_Nonnull out_status
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_func_connect(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_func_default_config(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_func_parse(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_func_parse_invoice(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_func_set_logger(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_add_event_listener(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_backup(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_buy_bitcoin(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_check_message(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_disconnect(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_fetch_fiat_rates(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_fetch_lightning_limits(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_fetch_onchain_limits(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_get_info(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_list_fiat_currencies(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_list_payments(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_list_refundables(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_lnurl_auth(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_lnurl_pay(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_lnurl_withdraw(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_pay_onchain(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_prepare_buy_bitcoin(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_prepare_pay_onchain(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_prepare_receive_payment(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_prepare_refund(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_prepare_send_payment(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_receive_payment(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_recommended_fees(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_refund(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_register_webhook(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_remove_event_listener(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_rescan_onchain_swaps(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_restore(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_send_payment(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_sign_message(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_sync(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_bindingliquidsdk_unregister_webhook(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_eventlistener_on_event(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint16_t uniffi_breez_sdk_liquid_bindings_checksum_method_logger_log(void
|
||||||
|
|
||||||
|
);
|
||||||
|
uint32_t ffi_breez_sdk_liquid_bindings_uniffi_contract_version(void
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@ frb_bin := "flutter_rust_bridge_codegen generate"
|
|||||||
|
|
||||||
export CARGO_TERM_COLOR := "always"
|
export CARGO_TERM_COLOR := "always"
|
||||||
|
|
||||||
|
# Lists available recipes
|
||||||
default:
|
default:
|
||||||
just --list --unsorted
|
just --list --unsorted
|
||||||
|
|
||||||
@@ -12,11 +13,10 @@ bootstrap frb='true' build='false':
|
|||||||
@if {{frb}} == true; then just frb; fi
|
@if {{frb}} == true; then just frb; fi
|
||||||
just init
|
just init
|
||||||
just init-sdk
|
just init-sdk
|
||||||
just gen
|
just codegen
|
||||||
@if {{build}} == true; then just build; fi
|
@if {{build}} == true; then just build-uniffi; fi
|
||||||
@if {{build}} == true; then melos build; fi
|
just link-headers
|
||||||
@if {{build}} == true; then just link; fi
|
just ffigen
|
||||||
@if {{build}} == true; then just build-uniffi; fi
|
|
||||||
just check
|
just check
|
||||||
|
|
||||||
# Install flutter_rust_bridge_codegen dependencies
|
# Install flutter_rust_bridge_codegen dependencies
|
||||||
@@ -27,41 +27,26 @@ frb:
|
|||||||
dart pub global activate ffi
|
dart pub global activate ffi
|
||||||
cargo install cargo-xcode
|
cargo install cargo-xcode
|
||||||
|
|
||||||
# Generate bindings
|
|
||||||
gen: codegen && ffigen
|
|
||||||
|
|
||||||
# Generate Dart/Flutter bindings && softlink C headers
|
# Generate Dart/Flutter bindings && softlink C headers
|
||||||
codegen:
|
codegen:
|
||||||
mkdir -p ../../../../packages/dart/lib/src
|
mkdir -p ../../../../packages/dart/lib/src
|
||||||
{{frb_bin}}
|
{{frb_bin}}
|
||||||
cd ../../../../packages/dart/lib/src && dart format -l 110 .
|
cd ../../../../packages/dart/lib/src && dart format -l 110 .
|
||||||
-ln -sf $(pwd)/breez_sdk_liquid/include/breez_sdk_liquid.h ../../../../packages/flutter/ios/Classes/breez_sdk_liquid.h
|
|
||||||
-ln -sf $(pwd)/breez_sdk_liquid/include/breez_sdk_liquid.h ../../../../packages/flutter/macos/Classes/breez_sdk_liquid.h
|
|
||||||
|
|
||||||
# Generate FFI bindings
|
# Generate FFI bindings
|
||||||
ffigen:
|
ffigen:
|
||||||
cd ../../../../packages/flutter/ && flutter pub run ffigen --config ffigen.yaml && dart format -l 110 ./lib/flutter_breez_liquid_bindings_generated.dart
|
cd ../../../../packages/flutter/ && flutter pub run ffigen --config ffigen.yaml && dart format -l 110 ./lib/flutter_breez_liquid_bindings_generated.dart
|
||||||
|
|
||||||
# Builds the local library for testing
|
# Builds the uniFFI library
|
||||||
build *args:
|
|
||||||
cargo build --package breez-sdk-liquid --manifest-path ../../../core/Cargo.toml --features frb {{args}}
|
|
||||||
|
|
||||||
build-apple profile='frb-min':
|
|
||||||
dart scripts/build_apple.dart --profile {{profile}}
|
|
||||||
|
|
||||||
build-android profile='frb-min':
|
|
||||||
bash scripts/build-android.sh --profile {{profile}}
|
|
||||||
|
|
||||||
build-other profile='frb-min':
|
|
||||||
dart scripts/build_other.dart --profile {{profile}}
|
|
||||||
|
|
||||||
build-uniffi:
|
build-uniffi:
|
||||||
just build-uniffi-android
|
just build-uniffi-android
|
||||||
just build-uniffi-swift
|
just build-uniffi-swift
|
||||||
|
|
||||||
|
# Builds the uniFFI library for Android
|
||||||
build-uniffi-android:
|
build-uniffi-android:
|
||||||
bash scripts/build_uniffi_android.sh
|
bash scripts/build_uniffi_android.sh
|
||||||
|
|
||||||
|
# Builds the uniFFI library for Swift
|
||||||
build-uniffi-swift:
|
build-uniffi-swift:
|
||||||
bash scripts/build_uniffi_swift.sh
|
bash scripts/build_uniffi_swift.sh
|
||||||
|
|
||||||
@@ -72,7 +57,7 @@ test build='false':
|
|||||||
|
|
||||||
# (melos) Run tests on Dart packages in workspace
|
# (melos) Run tests on Dart packages in workspace
|
||||||
test-dart build='true':
|
test-dart build='true':
|
||||||
@if {{build}} == true; then just build; fi
|
@if {{build}} == true; then just build-uniffi; fi
|
||||||
melos test-dart
|
melos test-dart
|
||||||
|
|
||||||
# (melos) Run integration tests on Flutter packages in workspace
|
# (melos) Run integration tests on Flutter packages in workspace
|
||||||
@@ -80,39 +65,12 @@ test-dart build='true':
|
|||||||
# @if {{build}} == true; then build; fi
|
# @if {{build}} == true; then build; fi
|
||||||
# melos test-flutter
|
# melos test-flutter
|
||||||
|
|
||||||
# Softlinks library archives from platform-build to their expected locations
|
# Softlinks library headers to ther expected locations
|
||||||
link:
|
link-headers:
|
||||||
just link-apple
|
-ln -sf $(pwd)/breez_sdk_liquid/include/breez_sdk_liquid.h ../../../../packages/flutter/ios/Classes/breez_sdk_liquid.h
|
||||||
just link-android
|
-ln -sf $(pwd)/breez_sdk_liquid/include/breez_sdk_liquid.h ../../../../packages/flutter/macos/Classes/breez_sdk_liquid.h
|
||||||
just link-other
|
-ln -sf $(pwd)/breez_sdk_liquidFFI/include/breez_sdk_liquidFFI.h ../../../../packages/flutter/ios/Classes/breez_sdk_liquidFFI.h
|
||||||
|
-ln -sf $(pwd)/breez_sdk_liquidFFI/include/breez_sdk_liquidFFI.h ../../../../packages/flutter/macos/Classes/breez_sdk_liquidFFI.h
|
||||||
link-apple:
|
|
||||||
-ln -sf $(pwd)/platform-build/breez_sdk_liquid.xcframework.zip ../../../../packages/flutter/macos/Frameworks/{{curr_version}}.zip
|
|
||||||
-ln -sf $(pwd)/platform-build/breez_sdk_liquid.xcframework.zip ../../../../packages/flutter/ios/Frameworks/{{curr_version}}.zip
|
|
||||||
|
|
||||||
link-android:
|
|
||||||
-ln -sf $(pwd)/platform-build/android.tar.gz ../../../../packages/flutter/android/{{curr_version}}.tar.gz
|
|
||||||
|
|
||||||
link-other:
|
|
||||||
-ln -sf $(pwd)/platform-build/other.tar.gz ../../../../packages/flutter/linux/{{curr_version}}.tar.gz
|
|
||||||
-ln -sf $(pwd)/platform-build/other.tar.gz ../../../../packages/flutter/windows/{{curr_version}}.tar.gz
|
|
||||||
|
|
||||||
# Copies library archives from platform-build to their expected locations
|
|
||||||
copy:
|
|
||||||
just copy-apple
|
|
||||||
just copy-android
|
|
||||||
just copy-other
|
|
||||||
|
|
||||||
copy-apple:
|
|
||||||
cp $(pwd)/platform-build/breez_sdk_liquid.xcframework.zip ../../../../packages/flutter/macos/Frameworks/{{curr_version}}.zip
|
|
||||||
cp $(pwd)/platform-build/breez_sdk_liquid.xcframework.zip ../../../../packages/flutter/ios/Frameworks/{{curr_version}}.zip
|
|
||||||
|
|
||||||
copy-android:
|
|
||||||
cp $(pwd)/platform-build/android.tar.gz ../../../../packages/flutter/android/{{curr_version}}.tar.gz
|
|
||||||
|
|
||||||
copy-other:
|
|
||||||
cp $(pwd)/platform-build/other.tar.gz ../../../../packages/flutter/linux/{{curr_version}}.tar.gz
|
|
||||||
cp $(pwd)/platform-build/other.tar.gz ../../../../packages/flutter/windows/{{curr_version}}.tar.gz
|
|
||||||
|
|
||||||
# (melos) use instead of flutter pub get
|
# (melos) use instead of flutter pub get
|
||||||
init *args:
|
init *args:
|
||||||
|
|||||||
@@ -2,44 +2,27 @@ name: breez_sdk_liquid
|
|||||||
repository: https://github.com/breez/breez-sdk-liquid
|
repository: https://github.com/breez/breez-sdk-liquid
|
||||||
packages:
|
packages:
|
||||||
- ../../../../packages/**
|
- ../../../../packages/**
|
||||||
- scripts
|
|
||||||
ignore:
|
ignore:
|
||||||
# e.g. ignore example apps of dependencies
|
# e.g. ignore example apps of dependencies
|
||||||
- ../../../../packages/**/example/**
|
- ../../../../packages/**/example/**
|
||||||
# e.g. ignore Flutter example app
|
|
||||||
- '../../../../packages/**/example'
|
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
bootstrap:
|
bootstrap:
|
||||||
hooks:
|
hooks:
|
||||||
post: cargo check --manifest-path ../../../core/Cargo.toml --features frb
|
post:
|
||||||
|
cargo check --manifest-path ../../../bindings/Cargo.toml
|
||||||
|
cargo check --manifest-path ../../../core/Cargo.toml --features frb
|
||||||
clean:
|
clean:
|
||||||
hooks:
|
hooks:
|
||||||
pre: cargo clean --manifest-path ../../../core/Cargo.toml --features frb
|
pre:
|
||||||
|
cargo clean --manifest-path ../../../bindings/Cargo.toml
|
||||||
|
cargo clean --manifest-path ../../../core/Cargo.toml --features frb
|
||||||
version:
|
version:
|
||||||
hooks:
|
hooks:
|
||||||
preCommit: bash scripts/version.sh
|
preCommit: bash scripts/version.sh
|
||||||
|
|
||||||
scripts:
|
scripts:
|
||||||
# only MacOS machines (CI or otherwise) can realistically invoke this.
|
|
||||||
build:
|
|
||||||
melos run build-apple &&
|
|
||||||
melos run build-android &&
|
|
||||||
melos run build-other
|
|
||||||
|
|
||||||
# the only time 'melos run build-*' is called is to prepare
|
|
||||||
# for distribution, so use the 'frb-min' profile.
|
|
||||||
build-apple: dart scripts/build_apple.dart --profile frb-min
|
|
||||||
build-android: bash scripts/build-android.sh --profile frb-min
|
|
||||||
build-other: dart scripts/build_other.dart --profile frb-min
|
|
||||||
|
|
||||||
# Platform-specific builds, mainly for testing
|
|
||||||
build-ios: dart scripts/build_apple.dart --ios
|
|
||||||
build-macos: dart scripts/build_apple.dart --local
|
|
||||||
build-other-local: dart scripts/build_other.dart --local
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
cargo build --package breez-sdk-liquid --profile=frb &&
|
|
||||||
melos run test-dart &&
|
melos run test-dart &&
|
||||||
melos run test-flutter
|
melos run test-flutter
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Setup
|
|
||||||
BUILD_DIR=platform-build
|
|
||||||
mkdir -p $BUILD_DIR
|
|
||||||
cd $BUILD_DIR
|
|
||||||
|
|
||||||
# Create the jniLibs build directory
|
|
||||||
JNI_DIR=jniLibs
|
|
||||||
mkdir -p $JNI_DIR
|
|
||||||
|
|
||||||
# Set up cargo-ndk
|
|
||||||
cargo install cargo-ndk
|
|
||||||
rustup target add \
|
|
||||||
aarch64-linux-android \
|
|
||||||
armv7-linux-androideabi \
|
|
||||||
x86_64-linux-android \
|
|
||||||
i686-linux-android
|
|
||||||
|
|
||||||
# Build the android libraries in the jniLibs directory
|
|
||||||
cargo ndk -o $JNI_DIR \
|
|
||||||
--manifest-path ../../../../core/Cargo.toml \
|
|
||||||
-t aarch64-linux-android \
|
|
||||||
-t armv7-linux-androideabi \
|
|
||||||
-t i686-linux-android \
|
|
||||||
-t x86_64-linux-android \
|
|
||||||
build "$@"
|
|
||||||
|
|
||||||
# Archive the dynamic libs
|
|
||||||
cd $JNI_DIR
|
|
||||||
tar -czvf ../android.tar.gz *
|
|
||||||
cd -
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -rf $JNI_DIR
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
#!/usr/bin/env dart
|
|
||||||
|
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:args/args.dart';
|
|
||||||
import 'package:cli_script/cli_script.dart';
|
|
||||||
|
|
||||||
import 'utils.dart';
|
|
||||||
|
|
||||||
const framework = 'breez_sdk_liquid.xcframework';
|
|
||||||
const frameworkZip = '$framework.zip';
|
|
||||||
const libName = 'libbreez_sdk_liquid.a';
|
|
||||||
const iosSimLipo = 'ios-sim-lipo/$libName';
|
|
||||||
const macLipo = 'mac-lipo/$libName';
|
|
||||||
const headers = '../breez_sdk_liquid/include';
|
|
||||||
const buildDir = 'platform-build';
|
|
||||||
|
|
||||||
Future<void> mainImpl(List<String> args) async {
|
|
||||||
final parser = ArgParser()
|
|
||||||
..addFlag('debug', negatable: false)
|
|
||||||
..addFlag('local')
|
|
||||||
..addFlag('ios')
|
|
||||||
..addOption('profile');
|
|
||||||
final opts = parser.parse(args);
|
|
||||||
final observer = Observer();
|
|
||||||
|
|
||||||
final String profile, profileArg;
|
|
||||||
if (opts.wasParsed('profile')) {
|
|
||||||
profile = opts['profile'];
|
|
||||||
profileArg = '--profile=$profile';
|
|
||||||
} else if (opts['debug']) {
|
|
||||||
profile = 'debug';
|
|
||||||
profileArg = '--profile=dev';
|
|
||||||
} else if (opts['local']) {
|
|
||||||
profile = 'frb';
|
|
||||||
profileArg = '--profile=frb';
|
|
||||||
} else {
|
|
||||||
profile = 'frb-min';
|
|
||||||
profileArg = '--profile=frb-min';
|
|
||||||
}
|
|
||||||
|
|
||||||
print(' Building profile: $profile');
|
|
||||||
|
|
||||||
final List<String> targets;
|
|
||||||
if (opts['local']) {
|
|
||||||
targets = [hostTarget];
|
|
||||||
} else if (opts['ios']) {
|
|
||||||
targets = const [
|
|
||||||
'aarch64-apple-ios',
|
|
||||||
'x86_64-apple-ios',
|
|
||||||
'aarch64-apple-ios-sim',
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
targets = const [
|
|
||||||
'aarch64-apple-ios',
|
|
||||||
'x86_64-apple-ios',
|
|
||||||
'aarch64-apple-ios-sim',
|
|
||||||
'x86_64-apple-darwin',
|
|
||||||
'aarch64-apple-darwin',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
print('for targets:\n- ${targets.join('\n- ')}');
|
|
||||||
|
|
||||||
// -- Begin --
|
|
||||||
|
|
||||||
await run('mkdir -p $buildDir');
|
|
||||||
Directory.current = buildDir;
|
|
||||||
|
|
||||||
final outputs = targets.map((target) {
|
|
||||||
return observer.mark('../../../../target/$target/$profile/$libName');
|
|
||||||
}).toList();
|
|
||||||
|
|
||||||
for (final target in targets) {
|
|
||||||
print(' Building target $target');
|
|
||||||
await run('rustup target add $target');
|
|
||||||
await run('cargo build --package breez-sdk-liquid --target=$target $profileArg');
|
|
||||||
}
|
|
||||||
|
|
||||||
await run('mkdir -p mac-lipo ios-sim-lipo');
|
|
||||||
if (opts['local']) {
|
|
||||||
final output = outputs.single;
|
|
||||||
final isIos = output.contains('ios');
|
|
||||||
final shouldBuildFramework = observer.hasChanged(output) || !fileExists(frameworkZip);
|
|
||||||
|
|
||||||
String lipoOut;
|
|
||||||
if (shouldBuildFramework) {
|
|
||||||
lipoOut = isIos ? iosSimLipo : macLipo;
|
|
||||||
} else {
|
|
||||||
print('Nothing changed, exiting...');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await run('lipo -create -output $lipoOut $output');
|
|
||||||
await run('xcodebuild -create-xcframework '
|
|
||||||
'-library $lipoOut -headers $headers '
|
|
||||||
'-output $framework');
|
|
||||||
} else {
|
|
||||||
final armIos = '../../../../target/aarch64-apple-ios/$profile/$libName';
|
|
||||||
var shouldBuildFramework = !fileExists(frameworkZip) || observer.hasChanged(armIos);
|
|
||||||
if (!fileExists(iosSimLipo) ||
|
|
||||||
outputs.where((output) => output.contains('ios')).any(observer.hasChanged)) {
|
|
||||||
shouldBuildFramework = true;
|
|
||||||
await run('lipo -create -output $iosSimLipo '
|
|
||||||
'../../../../target/aarch64-apple-ios-sim/$profile/$libName '
|
|
||||||
'../../../../target/x86_64-apple-ios/$profile/$libName ');
|
|
||||||
}
|
|
||||||
if (!fileExists(macLipo) ||
|
|
||||||
outputs.where((output) => output.contains('darwin')).any(observer.hasChanged)) {
|
|
||||||
shouldBuildFramework = true;
|
|
||||||
await run('lipo -create -output $macLipo '
|
|
||||||
'../../../../target/aarch64-apple-darwin/$profile/$libName '
|
|
||||||
'../../../../target/x86_64-apple-darwin/$profile/$libName');
|
|
||||||
}
|
|
||||||
if (shouldBuildFramework) {
|
|
||||||
await run('xcodebuild -create-xcframework '
|
|
||||||
'-library $iosSimLipo -headers $headers '
|
|
||||||
'-library $macLipo -headers $headers '
|
|
||||||
'-library $armIos -headers $headers '
|
|
||||||
'-output $framework');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print(' Creating $frameworkZip');
|
|
||||||
await run('zip -ry $frameworkZip $framework');
|
|
||||||
|
|
||||||
print('✅ Done!');
|
|
||||||
}
|
|
||||||
|
|
||||||
void main(List<String> args) {
|
|
||||||
wrapMain(() async {
|
|
||||||
try {
|
|
||||||
await mainImpl(args);
|
|
||||||
} finally {
|
|
||||||
await check('rm -rf ios-sim-lipo mac-lipo $framework');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
#!/usr/bin/env dart
|
|
||||||
|
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:args/args.dart';
|
|
||||||
import 'package:cli_script/cli_script.dart';
|
|
||||||
|
|
||||||
import 'utils.dart';
|
|
||||||
|
|
||||||
const libName = 'breez_sdk_liquid';
|
|
||||||
const linuxLibName = 'lib$libName.so';
|
|
||||||
const windowsLibName = '$libName.dll';
|
|
||||||
const buildDir = 'platform-build';
|
|
||||||
|
|
||||||
Future<void> mainImpl(List<String> args) async {
|
|
||||||
final parser = ArgParser()
|
|
||||||
..addFlag('debug')
|
|
||||||
..addFlag('local')
|
|
||||||
..addOption('profile');
|
|
||||||
final opts = parser.parse(args);
|
|
||||||
|
|
||||||
String profile, profileArg;
|
|
||||||
if (opts.wasParsed('profile')) {
|
|
||||||
profile = opts['profile'];
|
|
||||||
profileArg = '--profile=$profile';
|
|
||||||
} else if (opts['debug']) {
|
|
||||||
profile = 'debug';
|
|
||||||
profileArg = '--profile=dev';
|
|
||||||
} else if (opts['local']) {
|
|
||||||
profile = 'frb';
|
|
||||||
profileArg = '--profile=frb';
|
|
||||||
} else {
|
|
||||||
profile = 'frb-min';
|
|
||||||
profileArg = '--profile=frb-min';
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- Begin --
|
|
||||||
await run('mkdir -p $buildDir');
|
|
||||||
Directory.current = buildDir;
|
|
||||||
|
|
||||||
await run('cargo install cargo-zigbuild cargo-xwin');
|
|
||||||
|
|
||||||
final targets = opts['local'] ? [Targets.host] : Targets.values;
|
|
||||||
final compilerOpts = opts.rest;
|
|
||||||
for (final target in targets) {
|
|
||||||
final triple = target.triple;
|
|
||||||
final flutterIdentifier = target.flutterIdentifier;
|
|
||||||
await run('rustup target add $triple');
|
|
||||||
await run('${target.compiler} --package breez-sdk-liquid --target $triple $profileArg',
|
|
||||||
args: compilerOpts);
|
|
||||||
await run('mkdir -p $flutterIdentifier');
|
|
||||||
await run('cp ../../../../target/$triple/$profile/${target.libName} $flutterIdentifier/');
|
|
||||||
}
|
|
||||||
|
|
||||||
final hasLinux = targets.any((target) => !target.isWindows);
|
|
||||||
final hasWindows = targets.any((target) => target.isWindows);
|
|
||||||
await run('tar -czvf other.tar.gz', args: [
|
|
||||||
if (hasLinux) ...'linux-*'.glob,
|
|
||||||
if (hasWindows) ...'windows-*'.glob,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main(List<String> args) {
|
|
||||||
wrapMain(() async {
|
|
||||||
try {
|
|
||||||
await mainImpl(args);
|
|
||||||
} finally {
|
|
||||||
await check('rm -rf linux-* windows-*');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Targets {
|
|
||||||
linuxArm64('aarch64-unknown-linux-gnu', 'linux-arm64'),
|
|
||||||
linuxX64('x86_64-unknown-linux-gnu', 'linux-x64');
|
|
||||||
// TODO: Enable builds for Windows targets
|
|
||||||
//windowsArm64('aarch64-pc-windows-msvc', 'windows-arm64', isWindows: true),
|
|
||||||
//windowsX64('x86_64-pc-windows-msvc', 'windows-x64', isWindows: true);
|
|
||||||
|
|
||||||
final String triple;
|
|
||||||
final String flutterIdentifier;
|
|
||||||
final bool isWindows;
|
|
||||||
// ignore: unused_element
|
|
||||||
const Targets(this.triple, this.flutterIdentifier, {this.isWindows = false});
|
|
||||||
|
|
||||||
static Targets get host {
|
|
||||||
final host = hostTarget;
|
|
||||||
return values.firstWhere((target) => target.triple == host);
|
|
||||||
}
|
|
||||||
|
|
||||||
String get compiler =>
|
|
||||||
isWindows ? 'cargo xwin build --package breez-sdk-liquid' : 'cargo zigbuild --package breez-sdk-liquid';
|
|
||||||
String get libName => isWindows ? windowsLibName : linuxLibName;
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# ! This script is not being used by Melos and is added for local testing !
|
|
||||||
|
|
||||||
# Setup
|
|
||||||
BUILD_DIR=platform-build
|
|
||||||
mkdir -p $BUILD_DIR
|
|
||||||
cd $BUILD_DIR
|
|
||||||
|
|
||||||
# Install build dependencies
|
|
||||||
cargo install cargo-zigbuild
|
|
||||||
cargo install cargo-xwin
|
|
||||||
|
|
||||||
zig_build () {
|
|
||||||
local TARGET="$1"
|
|
||||||
local PLATFORM_NAME="$2"
|
|
||||||
local LIBNAME="$3"
|
|
||||||
local PROFILE="$4"
|
|
||||||
rustup target add "$TARGET"
|
|
||||||
cargo zigbuild --package breez-sdk-liquid --target "$TARGET" --profile $PROFILE
|
|
||||||
mkdir -p "$PLATFORM_NAME"
|
|
||||||
cp "../../../../target/$TARGET/$PROFILE/$LIBNAME" "$PLATFORM_NAME/"
|
|
||||||
}
|
|
||||||
|
|
||||||
win_build () {
|
|
||||||
local TARGET="$1"
|
|
||||||
local PLATFORM_NAME="$2"
|
|
||||||
local LIBNAME="$3"
|
|
||||||
local PROFILE="$4"
|
|
||||||
rustup target add "$TARGET"
|
|
||||||
cargo xwin build --package breez-sdk-liquid --target "$TARGET" --profile $PROFILE
|
|
||||||
mkdir -p "$PLATFORM_NAME"
|
|
||||||
cp "../../../../target/$TARGET/$PROFILE/$LIBNAME" "$PLATFORM_NAME/"
|
|
||||||
}
|
|
||||||
|
|
||||||
PROFILE=frb-min
|
|
||||||
# Build all the dynamic libraries
|
|
||||||
LIBNAME=breez_sdk_liquid
|
|
||||||
LINUX_LIBNAME=lib$LIBNAME.so
|
|
||||||
zig_build aarch64-unknown-linux-gnu linux-arm64 $LINUX_LIBNAME $PROFILE
|
|
||||||
zig_build x86_64-unknown-linux-gnu linux-x64 $LINUX_LIBNAME $PROFILE
|
|
||||||
WINDOWS_LIBNAME=$LIBNAME.dll
|
|
||||||
win_build aarch64-pc-windows-msvc windows-arm64 $WINDOWS_LIBNAME $PROFILE
|
|
||||||
win_build x86_64-pc-windows-msvc windows-x64 $WINDOWS_LIBNAME $PROFILE
|
|
||||||
|
|
||||||
# Archive the dynamic libs
|
|
||||||
tar -czvf other.tar.gz linux-* windows-*
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -rf linux-* windows-*
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
cd ../..
|
cd ../..
|
||||||
make android
|
make init android
|
||||||
rm -r ../../packages/flutter/android/src/main/kotlin
|
rm -r ../../packages/flutter/android/src/main/kotlin/breez_sdk_liquid*
|
||||||
mkdir -p ../../packages/flutter/android/src/main/jniLibs/arm64-v8a
|
mkdir -p ../../packages/flutter/android/src/main/jniLibs/arm64-v8a
|
||||||
mkdir -p ../../packages/flutter/android/src/main/jniLibs/armeabi-v7a
|
mkdir -p ../../packages/flutter/android/src/main/jniLibs/armeabi-v7a
|
||||||
mkdir -p ../../packages/flutter/android/src/main/jniLibs/x86
|
mkdir -p ../../packages/flutter/android/src/main/jniLibs/x86
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
cd ../..
|
cd ../..
|
||||||
make bindings-swift
|
make init bindings-swift
|
||||||
rm -rf ../../packages/flutter/ios/bindings-swift
|
rm -rf ../../packages/flutter/ios/Frameworks/breez_sdk_liquidFFI.xcframework ../../packages/flutter/ios/Sources
|
||||||
cp -r langs/swift ../../packages/flutter/ios/bindings-swift
|
rm -rf ../../packages/flutter/ios/Frameworks/breez_sdk_liquidFFI.xcframework ../../packages/flutter/macos/Sources
|
||||||
rm -f ../../packages/flutter/ios/bindings-swift/Package.swift
|
cp -r langs/swift/breez_sdk_liquidFFI.xcframework ../../packages/flutter/ios/Frameworks/breez_sdk_liquidFFI.xcframework
|
||||||
|
cp -r langs/swift/breez_sdk_liquidFFI.xcframework ../../packages/flutter/macos/Frameworks/breez_sdk_liquidFFI.xcframework
|
||||||
|
cp -r langs/swift/Sources ../../packages/flutter/ios/Sources
|
||||||
|
cp -r langs/swift/Sources ../../packages/flutter/macos/Sources
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="WEB_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.pub" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" name="Dart SDK" level="project" />
|
|
||||||
<orderEntry type="library" name="Dart Packages" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
# Generated by pub
|
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
|
||||||
packages:
|
|
||||||
args:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: args
|
|
||||||
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.0"
|
|
||||||
async:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: async
|
|
||||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.11.0"
|
|
||||||
charcode:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: charcode
|
|
||||||
sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.1"
|
|
||||||
cli_script:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: cli_script
|
|
||||||
sha256: "3463c6e8e57271faaf557eee56cb455522f1ab1ebe618bbfb7454f74fc793967"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.1"
|
|
||||||
collection:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: collection
|
|
||||||
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.19.0"
|
|
||||||
file:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: file
|
|
||||||
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "7.0.0"
|
|
||||||
glob:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: glob
|
|
||||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.2"
|
|
||||||
meta:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: meta
|
|
||||||
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.16.0"
|
|
||||||
path:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path
|
|
||||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.9.0"
|
|
||||||
source_span:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_span
|
|
||||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.10.0"
|
|
||||||
stack_trace:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: stack_trace
|
|
||||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.11.1"
|
|
||||||
string_scanner:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: string_scanner
|
|
||||||
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.0"
|
|
||||||
term_glyph:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: term_glyph
|
|
||||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.1"
|
|
||||||
tuple:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: tuple
|
|
||||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
sdks:
|
|
||||||
dart: ">=3.4.0 <4.0.0"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
name: scripts
|
|
||||||
description: Supporting scripts
|
|
||||||
version: 0.3.4
|
|
||||||
homepage: https://breez.technology
|
|
||||||
repository: https://github.com/breez/breez-sdk-liquid
|
|
||||||
publish_to: none
|
|
||||||
|
|
||||||
environment:
|
|
||||||
sdk: '>=3.4.0 <4.0.0'
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
args:
|
|
||||||
cli_script: ^0.3.0
|
|
||||||
glob: ^2.1.1
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:glob/glob.dart';
|
|
||||||
import 'package:glob/list_local_fs.dart';
|
|
||||||
|
|
||||||
extension Globber on String {
|
|
||||||
Iterable<String> get glob sync* {
|
|
||||||
for (final entity in Glob(this).listSync()) {
|
|
||||||
yield entity.path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String get hostTarget {
|
|
||||||
final res = Process.runSync('rustc', const ['-vV']);
|
|
||||||
return (res.stdout as String)
|
|
||||||
.split('\n')
|
|
||||||
.firstWhere((line) => line.startsWith('host:'))
|
|
||||||
.split(':')
|
|
||||||
.last
|
|
||||||
.trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool fileExists(String path) => File(path).existsSync();
|
|
||||||
|
|
||||||
class Observer {
|
|
||||||
var fileMap = <String, DateTime?>{};
|
|
||||||
|
|
||||||
String mark(String file) {
|
|
||||||
final path = Uri.base.resolve(file).toFilePath();
|
|
||||||
final f = File(path);
|
|
||||||
fileMap[path] = f.existsSync() ? f.lastModifiedSync() : null;
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasChanged(String file) {
|
|
||||||
final path = Uri.base.resolve(file).toFilePath();
|
|
||||||
|
|
||||||
if (!fileMap.containsKey(path)) {
|
|
||||||
print('❌ Path not marked yet: $path');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
final lastModified = fileMap[path];
|
|
||||||
if (lastModified == null) {
|
|
||||||
print(' Path nonexistent: $path');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return File(path).lastModifiedSync().isAfter(lastModified);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,20 +5,12 @@ TAG_NAME=`awk '/^version: /{print $2}' $ROOT/packages/flutter/pubspec.yaml`
|
|||||||
|
|
||||||
# iOS & macOS
|
# iOS & macOS
|
||||||
APPLE_HEADER="version = '$TAG_NAME' # generated; do not edit"
|
APPLE_HEADER="version = '$TAG_NAME' # generated; do not edit"
|
||||||
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/ios/breez_sdk_liquid.podspec
|
|
||||||
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/ios/flutter_breez_liquid.podspec
|
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/ios/flutter_breez_liquid.podspec
|
||||||
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/ios/flutter_breez_liquid.podspec.production
|
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/ios/flutter_breez_liquid.podspec.production
|
||||||
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/macos/flutter_breez_liquid.podspec
|
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/macos/flutter_breez_liquid.podspec
|
||||||
|
sed -i.bak "1 s/.*/$APPLE_HEADER/" $ROOT/packages/flutter/macos/flutter_breez_liquid.podspec.production
|
||||||
rm $ROOT/packages/flutter/macos/*.bak $ROOT/packages/flutter/ios/*.bak
|
rm $ROOT/packages/flutter/macos/*.bak $ROOT/packages/flutter/ios/*.bak
|
||||||
|
|
||||||
# CMake platforms (Linux, Windows, and Android)
|
|
||||||
CMAKE_HEADER="set(TagName \"v$TAG_NAME\") # generated; do not edit"
|
|
||||||
for CMAKE_PLATFORM in android linux windows
|
|
||||||
do
|
|
||||||
sed -i.bak "1 s/.*/$CMAKE_HEADER/" $ROOT/packages/flutter/$CMAKE_PLATFORM/CMakeLists.txt
|
|
||||||
rm $ROOT/packages/flutter/$CMAKE_PLATFORM/*.bak
|
|
||||||
done
|
|
||||||
|
|
||||||
GRADLE_HEADER="version '$TAG_NAME' \/\/ generated; do not edit"
|
GRADLE_HEADER="version '$TAG_NAME' \/\/ generated; do not edit"
|
||||||
sed -i.bak "1 s/.*/$GRADLE_HEADER/" $ROOT/packages/flutter/android/build.gradle
|
sed -i.bak "1 s/.*/$GRADLE_HEADER/" $ROOT/packages/flutter/android/build.gradle
|
||||||
sed -i.bak "1 s/.*/$GRADLE_HEADER/" $ROOT/packages/flutter/android/build.gradle.production
|
sed -i.bak "1 s/.*/$GRADLE_HEADER/" $ROOT/packages/flutter/android/build.gradle.production
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ open class SDKNotificationService: UNNotificationServiceExtension {
|
|||||||
self.currentTask?.onShutdown()
|
self.currentTask?.onShutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
public func setLogger(logger: Logger) {
|
public func setServiceLogger(logger: Logger) {
|
||||||
self.logger = ServiceLogger(logStream: logger)
|
self.logger = ServiceLogger(logStream: logger)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ bindings-swift: ios-universal darwin-universal
|
|||||||
cp ../target/aarch64-apple-ios/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
cp ../target/aarch64-apple-ios/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
||||||
cp ../target/ios-universal-sim/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64_x86_64-simulator/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
cp ../target/ios-universal-sim/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64_x86_64-simulator/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
||||||
cp ../target/darwin-universal/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/macos-arm64_x86_64/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
cp ../target/darwin-universal/release/libbreez_sdk_liquid_bindings.a langs/swift/breez_sdk_liquidFFI.xcframework/macos-arm64_x86_64/breez_sdk_liquidFFI.framework/breez_sdk_liquidFFI
|
||||||
|
cp langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h langs/flutter/breez_sdk_liquidFFI/include/
|
||||||
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h
|
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h
|
||||||
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.modulemap
|
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.modulemap
|
||||||
|
|
||||||
|
|||||||
@@ -9,20 +9,69 @@ export 'src/bindings/duplicates.dart';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
import 'src/frb_generated.dart';
|
import 'src/frb_generated.dart';
|
||||||
|
|
||||||
typedef BreezLiquid = RustLibApi;
|
typedef BreezLiquid = RustLibApi;
|
||||||
typedef BreezLiquidImpl = RustLibApiImpl;
|
typedef BreezLiquidImpl = RustLibApiImpl;
|
||||||
|
|
||||||
const libName = 'breez_sdk_liquid';
|
const libName = 'libbreez_sdk_liquid_bindings.so';
|
||||||
|
const iosLibName = "breez_sdk_liquidFFI";
|
||||||
|
|
||||||
Future<void> initialize({ExternalLibrary? dylib}) {
|
final _log = Logger('breez_liquid');
|
||||||
if (dylib == null && (Platform.isIOS || Platform.isMacOS)) {
|
|
||||||
|
class UnsupportedPlatform implements Exception {
|
||||||
|
UnsupportedPlatform(String s);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> initialize({ExternalLibrary? dylib}) async {
|
||||||
|
try {
|
||||||
|
dylib ??= await _loadPlatformSpecificLibrary();
|
||||||
|
_log.info(dylib != null
|
||||||
|
? 'Initializing RustLib with the provided library'
|
||||||
|
: 'Initializing RustLib with the default ExternalLibrary');
|
||||||
|
await RustLib.init(externalLibrary: dylib);
|
||||||
|
} catch (e, stacktrace) {
|
||||||
|
_log.severe('Initialization failed: $e', e, stacktrace);
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ExternalLibrary?> _loadPlatformSpecificLibrary() async {
|
||||||
|
switch (Platform.operatingSystem) {
|
||||||
|
case 'android':
|
||||||
|
case 'linux':
|
||||||
|
return _loadAndroidLinuxLibrary();
|
||||||
|
case 'ios':
|
||||||
|
case 'macos':
|
||||||
|
return _loadIOSMacOSLibrary();
|
||||||
|
default:
|
||||||
|
_log.severe('${Platform.operatingSystem} is not yet supported!');
|
||||||
|
throw UnsupportedPlatform('${Platform.operatingSystem} is not supported!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ExternalLibrary?> _loadAndroidLinuxLibrary() async {
|
||||||
|
try {
|
||||||
|
_log.info('Attempting to load $libName for Android/Linux');
|
||||||
|
return ExternalLibrary.open(libName);
|
||||||
|
} catch (e) {
|
||||||
|
_log.warning('Failed to load $libName for Android/Linux: $e');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<ExternalLibrary?> _loadIOSMacOSLibrary() async {
|
||||||
|
try {
|
||||||
|
_log.info('Attempting to use iOS/MacOS framework');
|
||||||
|
return ExternalLibrary.open("$iosLibName.framework/$iosLibName");
|
||||||
|
} catch (e) {
|
||||||
|
_log.warning('iOS/MacOS framework not found, attempting fallback to ExternalLibrary.process: $e');
|
||||||
try {
|
try {
|
||||||
dylib = ExternalLibrary.open("$libName.framework/$libName");
|
return ExternalLibrary.process(iKnowHowToUseIt: true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
dylib = ExternalLibrary.process(iKnowHowToUseIt: true);
|
_log.warning('Failed to initialize ExternalLibrary.process for iOS/MacOS: $e');
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return RustLib.init(externalLibrary: dylib);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,9 @@ repository: https://github.com/breez/breez-sdk-liquid-dart
|
|||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
platforms:
|
platforms:
|
||||||
macos:
|
|
||||||
linux:
|
|
||||||
windows:
|
|
||||||
android:
|
android:
|
||||||
ios:
|
ios:
|
||||||
|
macos:
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.4.0 <4.0.0'
|
sdk: '>=3.4.0 <4.0.0'
|
||||||
@@ -26,4 +24,5 @@ dependencies:
|
|||||||
ffi: ^2.1.2
|
ffi: ^2.1.2
|
||||||
flutter_rust_bridge: 2.3.0
|
flutter_rust_bridge: 2.3.0
|
||||||
freezed_annotation: ^2.4.1
|
freezed_annotation: ^2.4.1
|
||||||
|
logging: ^1.2.0
|
||||||
meta: ^1.12.0 # meta is pinned to version 1.12.0 by integration_test from the flutter SDK.
|
meta: ^1.12.0 # meta is pinned to version 1.12.0 by integration_test from the flutter SDK.
|
||||||
|
|||||||
2
packages/flutter/android/.gitignore
vendored
@@ -10,6 +10,6 @@
|
|||||||
|
|
||||||
# Ignore Rust binaries
|
# Ignore Rust binaries
|
||||||
src/main/jniLibs/
|
src/main/jniLibs/
|
||||||
src/main/kotlin/
|
src/main/kotlin/breez_sdk_liquid*
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
set(TagName "v0.3.4") # generated; do not edit
|
|
||||||
set(LibraryVersion "breez_liquid-${TagName}")
|
|
||||||
|
|
||||||
# Unlike the Windows & Linux CMakeLists.txt, this Android equivalent is just here
|
|
||||||
# to download the Android binaries into src/main/jniLibs/ and does not build anything.
|
|
||||||
# The binary download/extraction is difficult to do concisely in Groovy/Gradle,
|
|
||||||
# at least across host platforms, so we are just reusing our Linux/Windows logic.
|
|
||||||
|
|
||||||
# The Flutter tooling requires that developers have CMake 3.10 or later
|
|
||||||
# installed. You should not increase this version, as doing so will cause
|
|
||||||
# the plugin to fail to compile for some customers of the plugin.
|
|
||||||
cmake_minimum_required(VERSION 3.10)
|
|
||||||
|
|
||||||
# Download the binaries if they are not already present.
|
|
||||||
set(LibRoot "${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs")
|
|
||||||
set(ArchivePath "${CMAKE_CURRENT_SOURCE_DIR}/${LibraryVersion}.tar.gz")
|
|
||||||
if(NOT EXISTS ${ArchivePath})
|
|
||||||
file(DOWNLOAD
|
|
||||||
"https://github.com/breez/breez-sdk-liquid-flutter/releases/download/${TagName}/android.tar.gz"
|
|
||||||
${ArchivePath}
|
|
||||||
TLS_VERIFY ON
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Extract the binaries, overriding any already present.
|
|
||||||
file(MAKE_DIRECTORY ${LibRoot})
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E tar xzf ${ArchivePath}
|
|
||||||
WORKING_DIRECTORY ${LibRoot}
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -36,21 +36,6 @@ android {
|
|||||||
// the version in their app and to download a newer version of the NDK.
|
// the version in their app and to download a newer version of the NDK.
|
||||||
ndkVersion "21.1.6352462"
|
ndkVersion "21.1.6352462"
|
||||||
|
|
||||||
// Invoke the shared CMake build with the Android Gradle Plugin.
|
|
||||||
externalNativeBuild {
|
|
||||||
cmake {
|
|
||||||
path "CMakeLists.txt"
|
|
||||||
|
|
||||||
// The default CMake version for the Android Gradle Plugin is 3.10.2.
|
|
||||||
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
|
|
||||||
//
|
|
||||||
// The Flutter tooling requires that developers have CMake 3.10 or later
|
|
||||||
// installed. You should not increase this version, as doing so will cause
|
|
||||||
// the plugin to fail to compile for some customers of the plugin.
|
|
||||||
// version "3.10.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ version '0.3.4' // generated; do not edit
|
|||||||
group 'com.example.flutter_breez_liquid'
|
group 'com.example.flutter_breez_liquid'
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
|
ext.kotlin_version = '1.8.20'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -10,6 +11,7 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
// The Android Gradle Plugin knows how to build native code with the NDK.
|
// The Android Gradle Plugin knows how to build native code with the NDK.
|
||||||
classpath 'com.android.tools.build:gradle:7.1.2'
|
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,10 +19,12 @@ rootProject.allprojects {
|
|||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url("https://mvn.breez.technology/releases") }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
// Bumping the plugin compileSdkVersion requires all clients of this plugin
|
// Bumping the plugin compileSdkVersion requires all clients of this plugin
|
||||||
@@ -31,27 +35,25 @@ android {
|
|||||||
// the version in their app and to download a newer version of the NDK.
|
// the version in their app and to download a newer version of the NDK.
|
||||||
ndkVersion "21.1.6352462"
|
ndkVersion "21.1.6352462"
|
||||||
|
|
||||||
// Invoke the shared CMake build with the Android Gradle Plugin.
|
|
||||||
externalNativeBuild {
|
|
||||||
cmake {
|
|
||||||
path "CMakeLists.txt"
|
|
||||||
|
|
||||||
// The default CMake version for the Android Gradle Plugin is 3.10.2.
|
|
||||||
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
|
|
||||||
//
|
|
||||||
// The Flutter tooling requires that developers have CMake 3.10 or later
|
|
||||||
// installed. You should not increase this version, as doing so will cause
|
|
||||||
// the plugin to fail to compile for some customers of the plugin.
|
|
||||||
// version "3.10.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = '1.8'
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
api "breez_sdk_liquid:bindings-android:$version"
|
||||||
|
implementation "net.java.dev.jna:jna:5.14.0@aar"
|
||||||
|
}
|
||||||
|
|||||||
@@ -1 +1,8 @@
|
|||||||
rootProject.name = 'flutter_breez_liquid'
|
rootProject.name = 'flutter_breez_liquid'
|
||||||
|
|
||||||
|
dependencyResolutionManagement {
|
||||||
|
repositories {
|
||||||
|
maven { url("https://mvn.breez.technology/releases") }
|
||||||
|
}
|
||||||
|
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package com.breez.breez_sdk_liquid
|
||||||
|
|
||||||
|
import breez_sdk_liquid.LogEntry
|
||||||
|
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
||||||
|
import io.flutter.plugin.common.EventChannel
|
||||||
|
import io.flutter.plugin.common.MethodCall
|
||||||
|
import io.flutter.plugin.common.MethodChannel
|
||||||
|
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
||||||
|
import io.flutter.plugin.common.MethodChannel.Result
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|
||||||
|
/** BreezSDKLiquidPlugin */
|
||||||
|
class BreezSDKLiquidPlugin : FlutterPlugin, MethodCallHandler, EventChannel.StreamHandler {
|
||||||
|
private lateinit var channel: MethodChannel
|
||||||
|
private var eventChannel: EventChannel? = null
|
||||||
|
private var eventSink: EventChannel.EventSink? = null
|
||||||
|
private var scope = CoroutineScope(Dispatchers.Main)
|
||||||
|
|
||||||
|
override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
|
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "breez_sdk_liquid")
|
||||||
|
channel.setMethodCallHandler(this)
|
||||||
|
|
||||||
|
eventChannel = EventChannel(flutterPluginBinding.binaryMessenger, "breez_sdk_liquid_logs")
|
||||||
|
val listener = SdkLogInitializer.initializeListener()
|
||||||
|
listener.subscribe(scope) { l: LogEntry ->
|
||||||
|
val data = mapOf("level" to l.level, "line" to l.line)
|
||||||
|
eventSink?.success(data)
|
||||||
|
}
|
||||||
|
eventChannel?.setStreamHandler(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onMethodCall(call: MethodCall, result: Result) {
|
||||||
|
if (call.method == "getPlatformVersion") {
|
||||||
|
result.success("Android ${android.os.Build.VERSION.RELEASE}")
|
||||||
|
} else {
|
||||||
|
result.notImplemented()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
|
SdkLogInitializer.unsubscribeListener(scope)
|
||||||
|
channel.setMethodCallHandler(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
|
||||||
|
eventSink = events
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCancel(arguments: Any?) {
|
||||||
|
eventSink = null
|
||||||
|
eventChannel = null
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.breez.breez_sdk_liquid
|
||||||
|
|
||||||
|
import breez_sdk_liquid.setLogger
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
|
||||||
|
object SdkLogInitializer {
|
||||||
|
private var listener: SdkLogListener? = null
|
||||||
|
|
||||||
|
fun initializeListener(): SdkLogListener {
|
||||||
|
if (listener == null) {
|
||||||
|
try {
|
||||||
|
listener = SdkLogListener()
|
||||||
|
setLogger(listener!!)
|
||||||
|
} catch (e: Throwable) {
|
||||||
|
e.printStackTrace()
|
||||||
|
listener = null
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return listener!!
|
||||||
|
}
|
||||||
|
|
||||||
|
fun unsubscribeListener(scope: CoroutineScope) {
|
||||||
|
listener?.unsubscribe(scope)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.breez.breez_sdk_liquid
|
||||||
|
|
||||||
|
import breez_sdk_liquid.LogEntry
|
||||||
|
import breez_sdk_liquid.Logger
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
import kotlinx.coroutines.cancel
|
||||||
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
|
import kotlinx.coroutines.flow.SharedFlow
|
||||||
|
import kotlinx.coroutines.flow.asSharedFlow
|
||||||
|
import kotlinx.coroutines.flow.launchIn
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
class SdkLogListener : Logger {
|
||||||
|
private val scope = CoroutineScope(SupervisorJob())
|
||||||
|
|
||||||
|
private val _logEvents = MutableSharedFlow<LogEntry>()
|
||||||
|
private val logEvents: SharedFlow<LogEntry> = _logEvents.asSharedFlow()
|
||||||
|
|
||||||
|
override fun log(l: LogEntry) {
|
||||||
|
scope.launch {
|
||||||
|
_logEvents.emit(l)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun subscribe(scope: CoroutineScope, block: suspend (LogEntry) -> Unit) =
|
||||||
|
logEvents.onEach(block).launchIn(scope)
|
||||||
|
|
||||||
|
fun unsubscribe(scope: CoroutineScope) = scope.cancel()
|
||||||
|
}
|
||||||
44
packages/flutter/example/.gitignore
vendored
@@ -1,44 +0,0 @@
|
|||||||
# Miscellaneous
|
|
||||||
*.class
|
|
||||||
*.log
|
|
||||||
*.pyc
|
|
||||||
*.swp
|
|
||||||
.DS_Store
|
|
||||||
.atom/
|
|
||||||
.buildlog/
|
|
||||||
.history
|
|
||||||
.svn/
|
|
||||||
migrate_working_dir/
|
|
||||||
|
|
||||||
# IntelliJ related
|
|
||||||
*.iml
|
|
||||||
*.ipr
|
|
||||||
*.iws
|
|
||||||
.idea/
|
|
||||||
|
|
||||||
# The .vscode folder contains launch configuration and tasks you configure in
|
|
||||||
# VS Code which you may wish to be included in version control, so this line
|
|
||||||
# is commented out by default.
|
|
||||||
#.vscode/
|
|
||||||
|
|
||||||
# Flutter/Dart/Pub related
|
|
||||||
**/doc/api/
|
|
||||||
**/ios/Flutter/.last_build_id
|
|
||||||
.dart_tool/
|
|
||||||
.flutter-plugins
|
|
||||||
.flutter-plugins-dependencies
|
|
||||||
.packages
|
|
||||||
.pub-cache/
|
|
||||||
.pub/
|
|
||||||
/build/
|
|
||||||
|
|
||||||
# Symbolication related
|
|
||||||
app.*.symbols
|
|
||||||
|
|
||||||
# Obfuscation related
|
|
||||||
app.*.map.json
|
|
||||||
|
|
||||||
# Android Studio will place build artifacts here
|
|
||||||
/android/app/debug
|
|
||||||
/android/app/profile
|
|
||||||
/android/app/release
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# flutter_breez_liquid_example
|
|
||||||
|
|
||||||
Demonstrates how to use the flutter_breez_liquid plugin.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
This project is a starting point for a Flutter application.
|
|
||||||
|
|
||||||
A few resources to get you started if this is your first Flutter project:
|
|
||||||
|
|
||||||
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
|
||||||
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
|
|
||||||
|
|
||||||
For help getting started with Flutter development, view the
|
|
||||||
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
|
||||||
samples, guidance on mobile development, and a full API reference.
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# This file configures the analyzer, which statically analyzes Dart code to
|
|
||||||
# check for errors, warnings, and lints.
|
|
||||||
#
|
|
||||||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
|
||||||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
|
||||||
# invoked from the command line by running `flutter analyze`.
|
|
||||||
|
|
||||||
# The following line activates a set of recommended lints for Flutter apps,
|
|
||||||
# packages, and plugins designed to encourage good coding practices.
|
|
||||||
include: package:flutter_lints/flutter.yaml
|
|
||||||
|
|
||||||
linter:
|
|
||||||
# The lint rules applied to this project can be customized in the
|
|
||||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
|
||||||
# included above or to enable additional rules. A list of all available lints
|
|
||||||
# and their documentation is published at
|
|
||||||
# https://dart-lang.github.io/linter/lints/index.html.
|
|
||||||
#
|
|
||||||
# Instead of disabling a lint rule for the entire project in the
|
|
||||||
# section below, it can also be suppressed for a single line of code
|
|
||||||
# or a specific dart file by using the `// ignore: name_of_lint` and
|
|
||||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
|
||||||
# producing the lint.
|
|
||||||
rules:
|
|
||||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
|
||||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
|
||||||
|
|
||||||
# Additional information about this file can be found at
|
|
||||||
# https://dart.dev/guides/language/analysis-options
|
|
||||||
13
packages/flutter/example/android/.gitignore
vendored
@@ -1,13 +0,0 @@
|
|||||||
gradle-wrapper.jar
|
|
||||||
/.gradle
|
|
||||||
/captures/
|
|
||||||
/gradlew
|
|
||||||
/gradlew.bat
|
|
||||||
/local.properties
|
|
||||||
GeneratedPluginRegistrant.java
|
|
||||||
|
|
||||||
# Remember to never publicly share your keystore.
|
|
||||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
|
||||||
key.properties
|
|
||||||
**/*.keystore
|
|
||||||
**/*.jks
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id "com.android.application"
|
|
||||||
id "kotlin-android"
|
|
||||||
id "dev.flutter.flutter-gradle-plugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
def localProperties = new Properties()
|
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
|
||||||
if (localPropertiesFile.exists()) {
|
|
||||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
|
||||||
localProperties.load(reader)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
|
||||||
if (flutterVersionCode == null) {
|
|
||||||
flutterVersionCode = '1'
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
|
||||||
if (flutterVersionName == null) {
|
|
||||||
flutterVersionName = '1.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion flutter.compileSdkVersion
|
|
||||||
ndkVersion flutter.ndkVersion
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
|
||||||
}
|
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = '1.8'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
|
||||||
applicationId "com.example.flutter_breez_liquid_example"
|
|
||||||
// You can update the following values to match your application needs.
|
|
||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
|
||||||
minSdkVersion flutter.minSdkVersion
|
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
|
||||||
versionCode flutterVersionCode.toInteger()
|
|
||||||
versionName flutterVersionName
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
// TODO: Add your own signing config for the release build.
|
|
||||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
|
||||||
signingConfig signingConfigs.debug
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flutter {
|
|
||||||
source '../..'
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.example.flutter_breez_liquid_example">
|
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
|
||||||
the Flutter tool needs it to communicate with the running application
|
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
|
||||||
-->
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
</manifest>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.example.flutter_breez_liquid_example">
|
|
||||||
<application
|
|
||||||
android:label="flutter_breez_liquid_example"
|
|
||||||
android:name="${applicationName}"
|
|
||||||
android:icon="@mipmap/ic_launcher">
|
|
||||||
<activity
|
|
||||||
android:name=".MainActivity"
|
|
||||||
android:exported="true"
|
|
||||||
android:launchMode="singleTop"
|
|
||||||
android:theme="@style/LaunchTheme"
|
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
|
||||||
android:hardwareAccelerated="true"
|
|
||||||
android:windowSoftInputMode="adjustResize">
|
|
||||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
|
||||||
the Android process has started. This theme is visible to the user
|
|
||||||
while the Flutter UI initializes. After that, this theme continues
|
|
||||||
to determine the Window background behind the Flutter UI. -->
|
|
||||||
<meta-data
|
|
||||||
android:name="io.flutter.embedding.android.NormalTheme"
|
|
||||||
android:resource="@style/NormalTheme"
|
|
||||||
/>
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
<!-- Don't delete the meta-data below.
|
|
||||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
|
||||||
<meta-data
|
|
||||||
android:name="flutterEmbedding"
|
|
||||||
android:value="2" />
|
|
||||||
</application>
|
|
||||||
</manifest>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package com.example.flutter_breez_liquid_example
|
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Modify this file to customize your launch splash screen -->
|
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item android:drawable="?android:colorBackground" />
|
|
||||||
|
|
||||||
<!-- You can insert your own image assets here -->
|
|
||||||
<!-- <item>
|
|
||||||
<bitmap
|
|
||||||
android:gravity="center"
|
|
||||||
android:src="@mipmap/launch_image" />
|
|
||||||
</item> -->
|
|
||||||
</layer-list>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Modify this file to customize your launch splash screen -->
|
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item android:drawable="@android:color/white" />
|
|
||||||
|
|
||||||
<!-- You can insert your own image assets here -->
|
|
||||||
<!-- <item>
|
|
||||||
<bitmap
|
|
||||||
android:gravity="center"
|
|
||||||
android:src="@mipmap/launch_image" />
|
|
||||||
</item> -->
|
|
||||||
</layer-list>
|
|
||||||
|
Before Width: | Height: | Size: 544 B |
|
Before Width: | Height: | Size: 442 B |
|
Before Width: | Height: | Size: 721 B |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
|
||||||
<!-- Show a splash screen on the activity. Automatically removed when
|
|
||||||
the Flutter engine draws its first frame -->
|
|
||||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
|
||||||
</style>
|
|
||||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
|
||||||
This theme determines the color of the Android Window while your
|
|
||||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
|
||||||
running.
|
|
||||||
|
|
||||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
|
||||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
|
||||||
<item name="android:windowBackground">?android:colorBackground</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
|
||||||
<!-- Show a splash screen on the activity. Automatically removed when
|
|
||||||
the Flutter engine draws its first frame -->
|
|
||||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
|
||||||
</style>
|
|
||||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
|
||||||
This theme determines the color of the Android Window while your
|
|
||||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
|
||||||
running.
|
|
||||||
|
|
||||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
|
||||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
|
||||||
<item name="android:windowBackground">?android:colorBackground</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.example.flutter_breez_liquid_example">
|
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
|
||||||
the Flutter tool needs it to communicate with the running application
|
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
|
||||||
-->
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
</manifest>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rootProject.buildDir = '../build'
|
|
||||||
subprojects {
|
|
||||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
|
||||||
}
|
|
||||||
subprojects {
|
|
||||||
project.evaluationDependsOn(':app')
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.register("clean", Delete) {
|
|
||||||
delete rootProject.buildDir
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
org.gradle.jvmargs=-Xmx1536M
|
|
||||||
android.useAndroidX=true
|
|
||||||
android.enableJetifier=true
|
|
||||||
dev.steenbakker.mobile_scanner.useUnbundled=true
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
pluginManagement {
|
|
||||||
def flutterSdkPath = {
|
|
||||||
def properties = new Properties()
|
|
||||||
file("local.properties").withInputStream { properties.load(it) }
|
|
||||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
|
||||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
|
||||||
return flutterSdkPath
|
|
||||||
}()
|
|
||||||
|
|
||||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
gradlePluginPortal()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
|
||||||
id "com.android.application" version "7.1.2" apply false
|
|
||||||
// mobile_scanner requires 1.7.20
|
|
||||||
id "org.jetbrains.kotlin.android" version "1.7.20" apply false
|
|
||||||
}
|
|
||||||
|
|
||||||
include ":app"
|
|
||||||
|
Before Width: | Height: | Size: 37 KiB |
34
packages/flutter/example/ios/.gitignore
vendored
@@ -1,34 +0,0 @@
|
|||||||
**/dgph
|
|
||||||
*.mode1v3
|
|
||||||
*.mode2v3
|
|
||||||
*.moved-aside
|
|
||||||
*.pbxuser
|
|
||||||
*.perspectivev3
|
|
||||||
**/*sync/
|
|
||||||
.sconsign.dblite
|
|
||||||
.tags*
|
|
||||||
**/.vagrant/
|
|
||||||
**/DerivedData/
|
|
||||||
Icon?
|
|
||||||
**/Pods/
|
|
||||||
**/.symlinks/
|
|
||||||
profile
|
|
||||||
xcuserdata
|
|
||||||
**/.generated/
|
|
||||||
Flutter/App.framework
|
|
||||||
Flutter/Flutter.framework
|
|
||||||
Flutter/Flutter.podspec
|
|
||||||
Flutter/Generated.xcconfig
|
|
||||||
Flutter/ephemeral/
|
|
||||||
Flutter/app.flx
|
|
||||||
Flutter/app.zip
|
|
||||||
Flutter/flutter_assets/
|
|
||||||
Flutter/flutter_export_environment.sh
|
|
||||||
ServiceDefinitions.json
|
|
||||||
Runner/GeneratedPluginRegistrant.*
|
|
||||||
|
|
||||||
# Exceptions to above rules.
|
|
||||||
!default.mode1v3
|
|
||||||
!default.mode2v3
|
|
||||||
!default.pbxuser
|
|
||||||
!default.perspectivev3
|
|
||||||
@@ -1,26 +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>CFBundleDevelopmentRegion</key>
|
|
||||||
<string>en</string>
|
|
||||||
<key>CFBundleExecutable</key>
|
|
||||||
<string>App</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>io.flutter.flutter.app</string>
|
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
|
||||||
<string>6.0</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>App</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>FMWK</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>1.0</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>????</string>
|
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>1.0</string>
|
|
||||||
<key>MinimumOSVersion</key>
|
|
||||||
<string>12.0</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
|
||||||
#include "Generated.xcconfig"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
|
||||||
#include "Generated.xcconfig"
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# Uncomment this line to define a global platform for your project
|
|
||||||
platform :ios, '12.0'
|
|
||||||
|
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
|
||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
|
|
||||||
|
|
||||||
project 'Runner', {
|
|
||||||
'Debug' => :debug,
|
|
||||||
'Profile' => :release,
|
|
||||||
'Release' => :release,
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutter_root
|
|
||||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
|
||||||
unless File.exist?(generated_xcode_build_settings_path)
|
|
||||||
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
|
||||||
end
|
|
||||||
|
|
||||||
File.foreach(generated_xcode_build_settings_path) do |line|
|
|
||||||
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
|
||||||
return matches[1].strip if matches
|
|
||||||
end
|
|
||||||
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
|
|
||||||
end
|
|
||||||
|
|
||||||
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
|
||||||
|
|
||||||
flutter_ios_podfile_setup
|
|
||||||
|
|
||||||
target 'Runner' do
|
|
||||||
use_frameworks!
|
|
||||||
use_modular_headers!
|
|
||||||
|
|
||||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
|
||||||
end
|
|
||||||
|
|
||||||
post_install do |installer|
|
|
||||||
installer.pods_project.targets.each do |target|
|
|
||||||
flutter_additional_ios_build_settings(target)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
PODS:
|
|
||||||
- Flutter (1.0.0)
|
|
||||||
- flutter_breez_liquid (0.1.0)
|
|
||||||
- flutter_secure_storage (6.0.0):
|
|
||||||
- Flutter
|
|
||||||
- GoogleDataTransport (9.4.1):
|
|
||||||
- GoogleUtilities/Environment (~> 7.7)
|
|
||||||
- nanopb (< 2.30911.0, >= 2.30908.0)
|
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
|
||||||
- GoogleMLKit/BarcodeScanning (6.0.0):
|
|
||||||
- GoogleMLKit/MLKitCore
|
|
||||||
- MLKitBarcodeScanning (~> 5.0.0)
|
|
||||||
- GoogleMLKit/MLKitCore (6.0.0):
|
|
||||||
- MLKitCommon (~> 11.0.0)
|
|
||||||
- GoogleToolboxForMac/Defines (4.2.1)
|
|
||||||
- GoogleToolboxForMac/Logger (4.2.1):
|
|
||||||
- GoogleToolboxForMac/Defines (= 4.2.1)
|
|
||||||
- "GoogleToolboxForMac/NSData+zlib (4.2.1)":
|
|
||||||
- GoogleToolboxForMac/Defines (= 4.2.1)
|
|
||||||
- GoogleUtilities/Environment (7.13.3):
|
|
||||||
- GoogleUtilities/Privacy
|
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
|
||||||
- GoogleUtilities/Logger (7.13.3):
|
|
||||||
- GoogleUtilities/Environment
|
|
||||||
- GoogleUtilities/Privacy
|
|
||||||
- GoogleUtilities/Privacy (7.13.3)
|
|
||||||
- GoogleUtilities/UserDefaults (7.13.3):
|
|
||||||
- GoogleUtilities/Logger
|
|
||||||
- GoogleUtilities/Privacy
|
|
||||||
- GoogleUtilitiesComponents (1.1.0):
|
|
||||||
- GoogleUtilities/Logger
|
|
||||||
- GTMSessionFetcher/Core (3.5.0)
|
|
||||||
- MLImage (1.0.0-beta5)
|
|
||||||
- MLKitBarcodeScanning (5.0.0):
|
|
||||||
- MLKitCommon (~> 11.0)
|
|
||||||
- MLKitVision (~> 7.0)
|
|
||||||
- MLKitCommon (11.0.0):
|
|
||||||
- GoogleDataTransport (< 10.0, >= 9.4.1)
|
|
||||||
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
|
||||||
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
|
||||||
- GoogleUtilities/UserDefaults (< 8.0, >= 7.13.0)
|
|
||||||
- GoogleUtilitiesComponents (~> 1.0)
|
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
|
||||||
- MLKitVision (7.0.0):
|
|
||||||
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
|
|
||||||
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
|
|
||||||
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
|
|
||||||
- MLImage (= 1.0.0-beta5)
|
|
||||||
- MLKitCommon (~> 11.0)
|
|
||||||
- mobile_scanner (5.1.1):
|
|
||||||
- Flutter
|
|
||||||
- GoogleMLKit/BarcodeScanning (~> 6.0.0)
|
|
||||||
- nanopb (2.30910.0):
|
|
||||||
- nanopb/decode (= 2.30910.0)
|
|
||||||
- nanopb/encode (= 2.30910.0)
|
|
||||||
- nanopb/decode (2.30910.0)
|
|
||||||
- nanopb/encode (2.30910.0)
|
|
||||||
- path_provider_foundation (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- FlutterMacOS
|
|
||||||
- PromisesObjC (2.4.0)
|
|
||||||
|
|
||||||
DEPENDENCIES:
|
|
||||||
- Flutter (from `Flutter`)
|
|
||||||
- flutter_breez_liquid (from `.symlinks/plugins/flutter_breez_liquid/ios`)
|
|
||||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
|
||||||
- mobile_scanner (from `.symlinks/plugins/mobile_scanner/ios`)
|
|
||||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
|
||||||
|
|
||||||
SPEC REPOS:
|
|
||||||
trunk:
|
|
||||||
- GoogleDataTransport
|
|
||||||
- GoogleMLKit
|
|
||||||
- GoogleToolboxForMac
|
|
||||||
- GoogleUtilities
|
|
||||||
- GoogleUtilitiesComponents
|
|
||||||
- GTMSessionFetcher
|
|
||||||
- MLImage
|
|
||||||
- MLKitBarcodeScanning
|
|
||||||
- MLKitCommon
|
|
||||||
- MLKitVision
|
|
||||||
- nanopb
|
|
||||||
- PromisesObjC
|
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
|
||||||
Flutter:
|
|
||||||
:path: Flutter
|
|
||||||
flutter_breez_liquid:
|
|
||||||
:path: ".symlinks/plugins/flutter_breez_liquid/ios"
|
|
||||||
flutter_secure_storage:
|
|
||||||
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
|
||||||
mobile_scanner:
|
|
||||||
:path: ".symlinks/plugins/mobile_scanner/ios"
|
|
||||||
path_provider_foundation:
|
|
||||||
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
|
||||||
flutter_breez_liquid: fff5f2d9bc7c3b396a87ab41540a223e06de694b
|
|
||||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
|
||||||
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
|
||||||
GoogleMLKit: 97ac7af399057e99182ee8edfa8249e3226a4065
|
|
||||||
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
|
|
||||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
|
||||||
GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
|
|
||||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
|
||||||
MLImage: 1824212150da33ef225fbd3dc49f184cf611046c
|
|
||||||
MLKitBarcodeScanning: 10ca0845a6d15f2f6e911f682a1998b68b973e8b
|
|
||||||
MLKitCommon: afec63980417d29ffbb4790529a1b0a2291699e1
|
|
||||||
MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1
|
|
||||||
mobile_scanner: 8564358885a9253c43f822435b70f9345c87224f
|
|
||||||
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
|
||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
|
||||||
|
|
||||||
PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048
|
|
||||||
|
|
||||||
COCOAPODS: 1.15.2
|
|
||||||
@@ -1,578 +0,0 @@
|
|||||||
// !$*UTF8*$!
|
|
||||||
{
|
|
||||||
archiveVersion = 1;
|
|
||||||
classes = {
|
|
||||||
};
|
|
||||||
objectVersion = 54;
|
|
||||||
objects = {
|
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
|
||||||
4904B3590680DC5678302B98 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06853BA9C3EAD856C7541B24 /* Pods_Runner.framework */; };
|
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
|
||||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
|
||||||
/* End PBXBuildFile section */
|
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
|
||||||
isa = PBXCopyFilesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
dstPath = "";
|
|
||||||
dstSubfolderSpec = 10;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
name = "Embed Frameworks";
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXCopyFilesBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
|
||||||
06853BA9C3EAD856C7541B24 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
|
||||||
18FA70BD6FEF4899F0C9D731 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
|
||||||
5D2FF0C41BD35F116A6CE63B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
||||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
|
||||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
|
||||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
|
||||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
||||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
|
||||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
||||||
C57C33264F3AA95B9DE5A13B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */ = {
|
|
||||||
isa = PBXFrameworksBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
4904B3590680DC5678302B98 /* Pods_Runner.framework in Frameworks */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXFrameworksBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
|
||||||
1BBDF8A7FA17D5CE18CE7571 /* Frameworks */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
06853BA9C3EAD856C7541B24 /* Pods_Runner.framework */,
|
|
||||||
);
|
|
||||||
name = Frameworks;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
|
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
|
||||||
9740EEB31CF90195004384FC /* Generated.xcconfig */,
|
|
||||||
);
|
|
||||||
name = Flutter;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
97C146E51CF9000F007C117D = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
9740EEB11CF90186004384FC /* Flutter */,
|
|
||||||
97C146F01CF9000F007C117D /* Runner */,
|
|
||||||
97C146EF1CF9000F007C117D /* Products */,
|
|
||||||
A899C61AA8CA5BFFAD90DD63 /* Pods */,
|
|
||||||
1BBDF8A7FA17D5CE18CE7571 /* Frameworks */,
|
|
||||||
);
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
97C146EF1CF9000F007C117D /* Products */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
|
||||||
);
|
|
||||||
name = Products;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
97C146F01CF9000F007C117D /* Runner */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
97C146FA1CF9000F007C117D /* Main.storyboard */,
|
|
||||||
97C146FD1CF9000F007C117D /* Assets.xcassets */,
|
|
||||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
|
|
||||||
97C147021CF9000F007C117D /* Info.plist */,
|
|
||||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
|
|
||||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
|
||||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
|
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
|
|
||||||
);
|
|
||||||
path = Runner;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
A899C61AA8CA5BFFAD90DD63 /* Pods */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
C57C33264F3AA95B9DE5A13B /* Pods-Runner.debug.xcconfig */,
|
|
||||||
5D2FF0C41BD35F116A6CE63B /* Pods-Runner.release.xcconfig */,
|
|
||||||
18FA70BD6FEF4899F0C9D731 /* Pods-Runner.profile.xcconfig */,
|
|
||||||
);
|
|
||||||
path = Pods;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
/* End PBXGroup section */
|
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
|
||||||
97C146ED1CF9000F007C117D /* Runner */ = {
|
|
||||||
isa = PBXNativeTarget;
|
|
||||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
|
||||||
buildPhases = (
|
|
||||||
1D2C29BCD1288AC92949BFAD /* [CP] Check Pods Manifest.lock */,
|
|
||||||
9740EEB61CF901F6004384FC /* Run Script */,
|
|
||||||
97C146EA1CF9000F007C117D /* Sources */,
|
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
|
||||||
97C146EC1CF9000F007C117D /* Resources */,
|
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
|
||||||
C56A3EBC76148D6EE9073B37 /* [CP] Embed Pods Frameworks */,
|
|
||||||
ADFDF83671C1B34F4FA521FB /* [CP] Copy Pods Resources */,
|
|
||||||
);
|
|
||||||
buildRules = (
|
|
||||||
);
|
|
||||||
dependencies = (
|
|
||||||
);
|
|
||||||
name = Runner;
|
|
||||||
productName = Runner;
|
|
||||||
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
|
||||||
productType = "com.apple.product-type.application";
|
|
||||||
};
|
|
||||||
/* End PBXNativeTarget section */
|
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
|
||||||
97C146E61CF9000F007C117D /* Project object */ = {
|
|
||||||
isa = PBXProject;
|
|
||||||
attributes = {
|
|
||||||
LastUpgradeCheck = 1510;
|
|
||||||
ORGANIZATIONNAME = "";
|
|
||||||
TargetAttributes = {
|
|
||||||
97C146ED1CF9000F007C117D = {
|
|
||||||
CreatedOnToolsVersion = 7.3.1;
|
|
||||||
LastSwiftMigration = 1100;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
|
|
||||||
compatibilityVersion = "Xcode 9.3";
|
|
||||||
developmentRegion = en;
|
|
||||||
hasScannedForEncodings = 0;
|
|
||||||
knownRegions = (
|
|
||||||
en,
|
|
||||||
Base,
|
|
||||||
);
|
|
||||||
mainGroup = 97C146E51CF9000F007C117D;
|
|
||||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
|
||||||
projectDirPath = "";
|
|
||||||
projectRoot = "";
|
|
||||||
targets = (
|
|
||||||
97C146ED1CF9000F007C117D /* Runner */,
|
|
||||||
);
|
|
||||||
};
|
|
||||||
/* End PBXProject section */
|
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
|
||||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
|
||||||
isa = PBXResourcesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
|
||||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXResourcesBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
|
||||||
1D2C29BCD1288AC92949BFAD /* [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-Runner-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;
|
|
||||||
};
|
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
alwaysOutOfDate = 1;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
|
|
||||||
);
|
|
||||||
name = "Thin Binary";
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
|
||||||
};
|
|
||||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
alwaysOutOfDate = 1;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "Run Script";
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
|
||||||
};
|
|
||||||
ADFDF83671C1B34F4FA521FB /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
C56A3EBC76148D6EE9073B37 /* [CP] Embed Pods Frameworks */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputFileListPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
/* End PBXShellScriptBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
|
||||||
97C146EA1CF9000F007C117D /* Sources */ = {
|
|
||||||
isa = PBXSourcesBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
|
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
};
|
|
||||||
/* End PBXSourcesBuildPhase section */
|
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
|
||||||
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
|
||||||
isa = PBXVariantGroup;
|
|
||||||
children = (
|
|
||||||
97C146FB1CF9000F007C117D /* Base */,
|
|
||||||
);
|
|
||||||
name = Main.storyboard;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
|
||||||
isa = PBXVariantGroup;
|
|
||||||
children = (
|
|
||||||
97C147001CF9000F007C117D /* Base */,
|
|
||||||
);
|
|
||||||
name = LaunchScreen.storyboard;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
/* End PBXVariantGroup section */
|
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
|
||||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
|
||||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_COMMA = YES;
|
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
||||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
|
||||||
SDKROOT = iphoneos;
|
|
||||||
STRIP_STYLE = "non-global";
|
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
|
||||||
VALIDATE_PRODUCT = YES;
|
|
||||||
};
|
|
||||||
name = Profile;
|
|
||||||
};
|
|
||||||
249021D4217E4FDB00AE95B9 /* Profile */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
|
||||||
buildSettings = {
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
|
||||||
DEVELOPMENT_TEAM = F7R2LZH3W5;
|
|
||||||
ENABLE_BITCODE = NO;
|
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"@executable_path/Frameworks",
|
|
||||||
);
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterBreezLiquidExample;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
|
||||||
SWIFT_VERSION = 5.0;
|
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
|
||||||
WARNING_CFLAGS = "-Wno-nullability-completeness";
|
|
||||||
};
|
|
||||||
name = Profile;
|
|
||||||
};
|
|
||||||
97C147031CF9000F007C117D /* Debug */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
|
||||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_COMMA = YES;
|
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
||||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
ENABLE_TESTABILITY = YES;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
||||||
"DEBUG=1",
|
|
||||||
"$(inherited)",
|
|
||||||
);
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
|
||||||
SDKROOT = iphoneos;
|
|
||||||
STRIP_STYLE = "non-global";
|
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
};
|
|
||||||
97C147041CF9000F007C117D /* Release */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
buildSettings = {
|
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
|
||||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_COMMA = YES;
|
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
|
||||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
||||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
||||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
||||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
|
||||||
COPY_PHASE_STRIP = NO;
|
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
|
||||||
SDKROOT = iphoneos;
|
|
||||||
STRIP_STYLE = "non-global";
|
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
|
||||||
SWIFT_COMPILATION_MODE = wholemodule;
|
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
|
||||||
VALIDATE_PRODUCT = YES;
|
|
||||||
};
|
|
||||||
name = Release;
|
|
||||||
};
|
|
||||||
97C147061CF9000F007C117D /* Debug */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
|
||||||
buildSettings = {
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
|
||||||
DEVELOPMENT_TEAM = F7R2LZH3W5;
|
|
||||||
ENABLE_BITCODE = NO;
|
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"@executable_path/Frameworks",
|
|
||||||
);
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterBreezLiquidExample;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
||||||
SWIFT_VERSION = 5.0;
|
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
|
||||||
WARNING_CFLAGS = "-Wno-nullability-completeness";
|
|
||||||
};
|
|
||||||
name = Debug;
|
|
||||||
};
|
|
||||||
97C147071CF9000F007C117D /* Release */ = {
|
|
||||||
isa = XCBuildConfiguration;
|
|
||||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
|
||||||
buildSettings = {
|
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
||||||
CLANG_ENABLE_MODULES = YES;
|
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
|
||||||
DEVELOPMENT_TEAM = F7R2LZH3W5;
|
|
||||||
ENABLE_BITCODE = NO;
|
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
"@executable_path/Frameworks",
|
|
||||||
);
|
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterBreezLiquidExample;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
|
||||||
SWIFT_VERSION = 5.0;
|
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
|
||||||
WARNING_CFLAGS = "-Wno-nullability-completeness";
|
|
||||||
};
|
|
||||||
name = Release;
|
|
||||||
};
|
|
||||||
/* End XCBuildConfiguration section */
|
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
|
||||||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
|
||||||
isa = XCConfigurationList;
|
|
||||||
buildConfigurations = (
|
|
||||||
97C147031CF9000F007C117D /* Debug */,
|
|
||||||
97C147041CF9000F007C117D /* Release */,
|
|
||||||
249021D3217E4FDB00AE95B9 /* Profile */,
|
|
||||||
);
|
|
||||||
defaultConfigurationIsVisible = 0;
|
|
||||||
defaultConfigurationName = Release;
|
|
||||||
};
|
|
||||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
|
||||||
isa = XCConfigurationList;
|
|
||||||
buildConfigurations = (
|
|
||||||
97C147061CF9000F007C117D /* Debug */,
|
|
||||||
97C147071CF9000F007C117D /* Release */,
|
|
||||||
249021D4217E4FDB00AE95B9 /* Profile */,
|
|
||||||
);
|
|
||||||
defaultConfigurationIsVisible = 0;
|
|
||||||
defaultConfigurationName = Release;
|
|
||||||
};
|
|
||||||
/* End XCConfigurationList section */
|
|
||||||
};
|
|
||||||
rootObject = 97C146E61CF9000F007C117D /* Project object */;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Workspace
|
|
||||||
version = "1.0">
|
|
||||||
<FileRef
|
|
||||||
location = "self:">
|
|
||||||
</FileRef>
|
|
||||||
</Workspace>
|
|
||||||
@@ -1,8 +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>IDEDidComputeMac32BitWarning</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,8 +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>PreviewsEnabled</key>
|
|
||||||
<false/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Scheme
|
|
||||||
LastUpgradeVersion = "1510"
|
|
||||||
version = "1.3">
|
|
||||||
<BuildAction
|
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES">
|
|
||||||
<BuildActionEntries>
|
|
||||||
<BuildActionEntry
|
|
||||||
buildForTesting = "YES"
|
|
||||||
buildForRunning = "YES"
|
|
||||||
buildForProfiling = "YES"
|
|
||||||
buildForArchiving = "YES"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
|
||||||
BuildableName = "Runner.app"
|
|
||||||
BlueprintName = "Runner"
|
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildActionEntry>
|
|
||||||
</BuildActionEntries>
|
|
||||||
</BuildAction>
|
|
||||||
<TestAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
|
||||||
BuildableName = "Runner.app"
|
|
||||||
BlueprintName = "Runner"
|
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
</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 = "97C146ED1CF9000F007C117D"
|
|
||||||
BuildableName = "Runner.app"
|
|
||||||
BlueprintName = "Runner"
|
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
buildConfiguration = "Profile"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
<BuildableProductRunnable
|
|
||||||
runnableDebuggingMode = "0">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
|
||||||
BuildableName = "Runner.app"
|
|
||||||
BlueprintName = "Runner"
|
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Debug">
|
|
||||||
</AnalyzeAction>
|
|
||||||
<ArchiveAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
revealArchiveInOrganizer = "YES">
|
|
||||||
</ArchiveAction>
|
|
||||||
</Scheme>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Workspace
|
|
||||||
version = "1.0">
|
|
||||||
<FileRef
|
|
||||||
location = "group:Runner.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
<FileRef
|
|
||||||
location = "group:Pods/Pods.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
</Workspace>
|
|
||||||
@@ -1,8 +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>IDEDidComputeMac32BitWarning</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,8 +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>PreviewsEnabled</key>
|
|
||||||
<false/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import UIKit
|
|
||||||
import Flutter
|
|
||||||
|
|
||||||
@UIApplicationMain
|
|
||||||
@objc class AppDelegate: FlutterAppDelegate {
|
|
||||||
override func application(
|
|
||||||
_ application: UIApplication,
|
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
|
||||||
) -> Bool {
|
|
||||||
GeneratedPluginRegistrant.register(with: self)
|
|
||||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"size" : "20x20",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-20x20@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "20x20",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-20x20@3x.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "29x29",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-29x29@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "29x29",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-29x29@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "29x29",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-29x29@3x.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "40x40",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-40x40@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "40x40",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-40x40@3x.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "60x60",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-60x60@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "60x60",
|
|
||||||
"idiom" : "iphone",
|
|
||||||
"filename" : "Icon-App-60x60@3x.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "20x20",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-20x20@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "20x20",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-20x20@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "29x29",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-29x29@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "29x29",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-29x29@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "40x40",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-40x40@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "40x40",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-40x40@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "76x76",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-76x76@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "76x76",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-76x76@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "83.5x83.5",
|
|
||||||
"idiom" : "ipad",
|
|
||||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"size" : "1024x1024",
|
|
||||||
"idiom" : "ios-marketing",
|
|
||||||
"filename" : "Icon-App-1024x1024@1x.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"version" : 1,
|
|
||||||
"author" : "xcode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 564 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"filename" : "LaunchImage.png",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"filename" : "LaunchImage@2x.png",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"filename" : "LaunchImage@3x.png",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"version" : 1,
|
|
||||||
"author" : "xcode"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
@@ -1,5 +0,0 @@
|
|||||||
# Launch Screen Assets
|
|
||||||
|
|
||||||
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
|
|
||||||
|
|
||||||
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="iOS"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--View Controller-->
|
|
||||||
<scene sceneID="EHf-IW-A2E">
|
|
||||||
<objects>
|
|
||||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
|
||||||
</imageView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
|
||||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="53" y="375"/>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
<resources>
|
|
||||||
<image name="LaunchImage" width="168" height="185"/>
|
|
||||||
</resources>
|
|
||||||
</document>
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
|
||||||
<dependencies>
|
|
||||||
<deployment identifier="iOS"/>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--Flutter View Controller-->
|
|
||||||
<scene sceneID="tne-QT-ifu">
|
|
||||||
<objects>
|
|
||||||
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
</document>
|
|
||||||
@@ -1,53 +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>CFBundleDevelopmentRegion</key>
|
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
|
||||||
<key>CFBundleDisplayName</key>
|
|
||||||
<string>Flutter Breez Liquid</string>
|
|
||||||
<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>flutter_breez_liquid_example</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
|
||||||
<key>CFBundleSignature</key>
|
|
||||||
<string>????</string>
|
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
|
||||||
<key>LSRequiresIPhoneOS</key>
|
|
||||||
<true/>
|
|
||||||
<key>UILaunchStoryboardName</key>
|
|
||||||
<string>LaunchScreen</string>
|
|
||||||
<key>UIMainStoryboardFile</key>
|
|
||||||
<string>Main</string>
|
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
|
||||||
<array>
|
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
||||||
</array>
|
|
||||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
|
||||||
<array>
|
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
|
||||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
||||||
</array>
|
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
|
||||||
<false/>
|
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
|
||||||
<true/>
|
|
||||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
|
||||||
<true/>
|
|
||||||
<key>NSCameraUsageDescription</key>
|
|
||||||
<string>Camera permission is required for QR code scanning.</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#import "GeneratedPluginRegistrant.h"
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_breez_liquid/flutter_breez_liquid.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/routes/connect/connect_page.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/routes/home/home_page.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/services/credentials_manager.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/services/keychain.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/utils/config.dart';
|
|
||||||
|
|
||||||
import 'services/breez_sdk_liquid.dart';
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
|
||||||
await initialize();
|
|
||||||
final BreezSDKLiquid liquidSDK = BreezSDKLiquid();
|
|
||||||
final credentialsManager = CredentialsManager(keyChain: KeyChain());
|
|
||||||
final mnemonic = await credentialsManager.restoreMnemonic();
|
|
||||||
if (mnemonic.isNotEmpty) {
|
|
||||||
await reconnect(liquidSDK: liquidSDK, mnemonic: mnemonic);
|
|
||||||
}
|
|
||||||
runApp(App(credentialsManager: credentialsManager, liquidSDK: liquidSDK));
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> reconnect({
|
|
||||||
required BreezSDKLiquid liquidSDK,
|
|
||||||
required String mnemonic,
|
|
||||||
LiquidNetwork network = LiquidNetwork.mainnet,
|
|
||||||
}) async {
|
|
||||||
final config = await getConfig(network: network);
|
|
||||||
final req = ConnectRequest(
|
|
||||||
config: config,
|
|
||||||
mnemonic: mnemonic,
|
|
||||||
);
|
|
||||||
await liquidSDK.connect(req: req);
|
|
||||||
}
|
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
|
||||||
final CredentialsManager credentialsManager;
|
|
||||||
final BreezSDKLiquid liquidSDK;
|
|
||||||
const App({super.key, required this.credentialsManager, required this.liquidSDK});
|
|
||||||
|
|
||||||
static const title = 'Breez Liquid SDK Demo';
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<App> createState() => _AppState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _AppState extends State<App> {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
title: App.title,
|
|
||||||
theme: ThemeData.from(colorScheme: ColorScheme.fromSeed(seedColor: Colors.white), useMaterial3: true),
|
|
||||||
home: widget.liquidSDK.instance == null
|
|
||||||
? ConnectPage(
|
|
||||||
liquidSDK: widget.liquidSDK,
|
|
||||||
credentialsManager: widget.credentialsManager,
|
|
||||||
)
|
|
||||||
: HomePage(
|
|
||||||
credentialsManager: widget.credentialsManager,
|
|
||||||
liquidSDK: widget.liquidSDK,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
import 'package:bip39/bip39.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_breez_liquid/flutter_breez_liquid.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/routes/connect/restore_page.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/routes/home/home_page.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/services/breez_sdk_liquid.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/services/credentials_manager.dart';
|
|
||||||
import 'package:flutter_breez_liquid_example/utils/config.dart';
|
|
||||||
|
|
||||||
class ConnectPage extends StatefulWidget {
|
|
||||||
final BreezSDKLiquid liquidSDK;
|
|
||||||
final CredentialsManager credentialsManager;
|
|
||||||
const ConnectPage({super.key, required this.liquidSDK, required this.credentialsManager});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<ConnectPage> createState() => _ConnectPageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ConnectPageState extends State<ConnectPage> {
|
|
||||||
bool connecting = false;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Breez Liquid SDK Demo'),
|
|
||||||
foregroundColor: Colors.blue,
|
|
||||||
),
|
|
||||||
body: Center(
|
|
||||||
child: connecting
|
|
||||||
? const CircularProgressIndicator(color: Colors.blue)
|
|
||||||
: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 16.0),
|
|
||||||
child: SizedBox(
|
|
||||||
width: 200,
|
|
||||||
child: ElevatedButton(
|
|
||||||
child: const Text("Create new wallet"),
|
|
||||||
onPressed: () async {
|
|
||||||
await createWallet();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 16.0),
|
|
||||||
child: SizedBox(
|
|
||||||
width: 200,
|
|
||||||
child: ElevatedButton(
|
|
||||||
child: const Text("Restore from backup"),
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (BuildContext context) {
|
|
||||||
return RestorePage(
|
|
||||||
onRestore: (mnemonic) async {
|
|
||||||
return await createWallet(mnemonic: mnemonic);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> createWallet({String? mnemonic}) async {
|
|
||||||
final walletMnemonic = mnemonic ??= generateMnemonic(strength: 128);
|
|
||||||
debugPrint("${mnemonic.isEmpty ? "Creating" : "Restoring"} wallet with $walletMnemonic");
|
|
||||||
return await initializeWallet(mnemonic: walletMnemonic).then(
|
|
||||||
(liquidSDK) async {
|
|
||||||
await widget.credentialsManager.storeMnemonic(mnemonic: walletMnemonic).then(
|
|
||||||
(_) {
|
|
||||||
if (mounted) {
|
|
||||||
Navigator.pushReplacement(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (BuildContext context) => HomePage(
|
|
||||||
liquidSDK: widget.liquidSDK,
|
|
||||||
credentialsManager: widget.credentialsManager,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> initializeWallet({
|
|
||||||
required String mnemonic,
|
|
||||||
LiquidNetwork network = LiquidNetwork.mainnet,
|
|
||||||
}) async {
|
|
||||||
final config = await getConfig(network: network);
|
|
||||||
final req = ConnectRequest(
|
|
||||||
config: config,
|
|
||||||
mnemonic: mnemonic,
|
|
||||||
);
|
|
||||||
await widget.liquidSDK.connect(req: req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
|
|
||||||
class RestorePage extends StatefulWidget {
|
|
||||||
final Future Function(String mnemonic) onRestore;
|
|
||||||
|
|
||||||
const RestorePage({super.key, required this.onRestore});
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<RestorePage> createState() => _RestorePageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _RestorePageState extends State<RestorePage> {
|
|
||||||
final _formKey = GlobalKey<FormState>();
|
|
||||||
List<TextEditingController> textFieldControllers =
|
|
||||||
List<TextEditingController>.generate(12, (_) => TextEditingController());
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
backgroundColor: Colors.white,
|
|
||||||
actions: [
|
|
||||||
IconButton(
|
|
||||||
onPressed: () async {
|
|
||||||
final clipboardData = await Clipboard.getData('text/plain');
|
|
||||||
final clipboardMnemonics = clipboardData?.text?.split(" ");
|
|
||||||
if (clipboardMnemonics?.length == 12) {
|
|
||||||
for (var i = 0; i < clipboardMnemonics!.length; i++) {
|
|
||||||
textFieldControllers.elementAt(i).text = clipboardMnemonics.elementAt(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
icon: const Icon(Icons.paste, color: Colors.blue),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
body: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
|
|
||||||
child: Form(
|
|
||||||
key: _formKey,
|
|
||||||
child: GridView.builder(
|
|
||||||
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
|
|
||||||
maxCrossAxisExtent: MediaQuery.of(context).size.width / 2,
|
|
||||||
childAspectRatio: 2,
|
|
||||||
crossAxisSpacing: 8,
|
|
||||||
mainAxisSpacing: 8,
|
|
||||||
),
|
|
||||||
itemCount: 12,
|
|
||||||
itemBuilder: (BuildContext context, int index) {
|
|
||||||
return TextFormField(
|
|
||||||
decoration: InputDecoration(labelText: "${index + 1}"),
|
|
||||||
inputFormatters: [FilteringTextInputFormatter.deny(RegExp(r"\s\b|\b\s"))],
|
|
||||||
validator: (String? value) {
|
|
||||||
if (value == null || value.isEmpty) {
|
|
||||||
return 'Please enter value';
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
controller: textFieldControllers[index],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
bottomNavigationBar: Padding(
|
|
||||||
padding: EdgeInsets.only(
|
|
||||||
bottom: MediaQuery.of(context).viewInsets.bottom + 40.0,
|
|
||||||
),
|
|
||||||
child: Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
ElevatedButton(
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
backgroundColor: Colors.blue,
|
|
||||||
elevation: 0.0,
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(8.0),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
onPressed: () async {
|
|
||||||
if (_formKey.currentState?.validate() ?? false) {
|
|
||||||
final mnemonic = textFieldControllers
|
|
||||||
.map((controller) => controller.text.toLowerCase().trim())
|
|
||||||
.toList()
|
|
||||||
.join(" ");
|
|
||||||
widget.onRestore(mnemonic);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
child: Text(
|
|
||||||
"RESTORE",
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: Theme.of(context).primaryTextTheme.titleMedium,
|
|
||||||
maxLines: 1,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||