Skip to content

Commit 9eb8fed

Browse files
naezithtakenagain
authored andcommitted
SDK Integration & HD Coin Details page + Coin Addresses (#178)
* add komodo_defi_sdk to dependencies update required dependencies, and fix build errors * WIP: replace mm2 classes with defi sdk * replace kdf rpc status checks with isSignedIn The new SDK abstracts away the KDF functionality behind an authentication class, so the previous status checks are not possible, and the isSignedIn is the closest alternative without removing the logic entirely (possibly breaking change) * bump kdf version * load coin assets from sdk package komodo_defi_framework package already downloads the configs and icons, so load them from the external package instead of redownloading and loading the same assets twice * ci: update paths in validate action * replace dynamic index.html with static version the drawbacks of bundling with webpack outweighed the negligible size reduction in the kdf wasm files, so it was dropped in favour of a static index.html in the sdk * fix failing unit tests caused by the `rational` and `decimal` package updates * update docs remove nodejs, api update script, and add fvm as flutter installation alternative * fix breaking changes to rpc method return types sdk returns different types which have to be accounted for, sometimes on a per-rpc basis * fix validation warnings * WIP: fix integration tests temporarily disable suspended assets test. The `coins_config.json` is no longer editable as it is obtained from an external package, so alternative means of invalidating the electrum URLs for an asset are required * re-enable suspended assets test on chrome * block electrum urls in chrome for suspended assets test * update logs location in ui-tests workflow * fix taker order integration test * coin addresses bloc init * coin addresses init list in coin details * coin addresses separate status for creation * create addresses cleanup * change from sdk to komodo_defi_framework * coin addresses realistic fake address * coin addresses hide middle part of the address * fix debug utils & withdraw test * remove driver start step from ui test workflow browser driver startup is now handled by integration test runner * coin addresses improve ui * coin addresses special exception type * coin addresses copy button functionality * coin addresses swap address tag * coin addresses bloc hide zero balance * coin addresses styling and hide 0 balance * improve driver management & fix `test_withdraw` test add and refactor integration test utility functions * add pub get flag flutter drive runs `flutter pub get` before each test by default, which slows down the current implementation, which runs each set of tests independently * add profile mode step to ui-tests-on-pr * add verbose logging to integration tests steps some errors, like pumpAndSettle timeouts, do not produce useful stacktraces, so adding print statements is necessary unless we run the integration tests in debug mode (not recommended) * coin addresses extract widget to file * coin addresses QR code * coin addresses extract widgets * coin addresses mobile view init * coin addresses extract widgets * coin addresses improve mobile view layout * coin addresses slightly larger swap address text * coin addresses improve QR dialog * coin addresses localize texts with existing keys * coin addresses localize texts * coin addresses localize texts * coin addresses polish * fix cex_prices integration test * fix theme switching on web * fix nft and trezor RPC call type errors type conversions missed during initial migration, but caught by integration tests * migrate web file_loader to js_interop and package:web * change file loader to conditional import structure js_interop causes builds to fail once again * fix seed file upload & add keep-running flag safaridriver logs do not include console logs, so we have to keep the browser window open to read console logs in the event of failure * fix intermittent test failures * bump sdk version & add debug statements * increase flutter drive timeout & remove tests.dart group structure is better suited to the new integration_test format rather than flutter_drive. `await app.main` fails after the second test when in the same group * fix merge error * fix validation warnings & flaky dex taker test * add port option & fix flaky dex ui test steps * tests: add longer wait after taker/maker confirmation button click * fix misc integration test errors when switching theme * fix trading bot order count in tab bar * fix analyze warnings and increase tab refresh rate * restore missing error check throw exception if error response is received from API. Market maker bot was failing to start/stop after this was removed as part of the sdk integration * fix trading bot & dex order list onClick events * fix merge issues & trade bot empty list check list null = empty * fix best orders and connected peers parsing v2 uses orderaddress object for address field instead of string * replace auth methods with KomodoDefiSdk * fix global variable initialization order and async issues Migrating away from the global variables in blocs.dart will involve a considerable number of code changes, so leaving as-is for now * use sdk in current wallet "bloc" default values used for hasBackup * move global bloc variables to repositoryprovider async sdk/kdf initialization does not work with the current global variable structure, so moved the global repositories to repositoryprovider * revert breaking wallet restore and import changes * skip orders, and swaps RPCs when not logged in also bump kdf sdk version * fix login to existing wallet and remove onlogout deactivate * catch and log uncaught (or async) errors * sdk txs disable tests and mock repository * sdk txs cex market data charts * sdk txs transactions import change * fix onlogout balance clearing throw exceptions with stacktraces * sdk txs use the new sdk Transaction model * sdk txs use the new sdk Transaction model * sdk txs use the new sdk Transaction model * sdk txs use the new sdk Transaction model * sdk txs change types import * tests: use faucet for doc/marty if balance is insufficient * fix maker form auth state listener * sdk txs fee coin * fix validation warnings and remove gha timeout at step * sdk txs fetch from sdk * coin details hide addresses if tx is selected * sdk txs always show transactions if filled * fix transactions missing one row during loading * sdk txs getSdkAsset temp helper function * sdk access added to CoinsRepo * sdk replace max_maker_vol with sdk * sdk getSdkPubkeys helper function * add wallet metadata and disable unsupported features - add `has_backup` and `WalletType` metadata fields to KdfUser - disable delete wallet feature - * sdk addresses port * replace current wallet stream with auth bloc * rename coins "bloc" and move more repos to DI * use new asset class for trezor coin activation trezor activation responds to 'UserActionRequired' events, which are not propagated through asset manager * migrate coins manager from legacy coins bloc to repository and new coins bloc * migrate legacy coins bloc to coins repostory * remove runtime coin updates `KomodoCoins` fetches coins from github cdn at runtime, so runtime updates are no longer necessary * remove coin activation rpc models and migrate legacy coins bloc refs * add activated coins metadata * refactor: migrate fiat bloc from legacy coins bloc * migrate remaining legacy coins bloc references to coins repo * migrate current wallet references to auth bloc * fix swap page validation issues * fix market metrics and transaction history loading * fix trading bot validation errors coins bloc emits not refreshing the widgets at the bottom of the tree * fix bridge page missing protocols * fix coin activation error handling * fix merge issues * fix timestamp in unit test transaction generation * sdk show pubkey addresses for all coins * sdk addresses active swap address tag * sdk addresses display balance * sdk addresses polish balance display * fix view seed and re-login flow * fix coin activation via coins manager activating coins were only displayed on the next balance refresh instead of immediately after activation * add parent coin to conversion * sdk addresses hide zero balances checkbox * sdk addresses reload after create * sdk remove coin addresses repository * fix portfolio growth concurrent modification * fix coin details tab controller error * sdk getSdkAsset use findAssetsByTicker * sdk addresses max 3 empty addresses * sdk addresses split variables * sdk txs add address * sdk txs add address mobile * sdk txs load 200 * fix sporadic activation in coins list * add legacy wallet migration * sdk asset getPubkeys * sdk use assetsFromTicker * pubspec upgrade * coin details history -> lastTransactions * coin details transactions better spacing * coin details polish transactions section * upgrade to flutter 3.27.0 * coin details redesign tx history section * coin details redesign tx history section mobile * fix new validation warnings from flutter upgrade * fix trezor login login does not work in debug mode because of an assert statement in the SDK * bump flutter version in workflows * fix macos and ios builds * decouple balance fetching & coin activation * sdk addresses use CantCreateNewAddressReason * coin details remove createAddressAllowed field * sdk localize CantCreateNewAddressReason texts * trim unused methods from coin model * fix coin balances persisting to another wallet login * fix initial trezor coin activation list * fix trezor coin add asset page * call faucet on all addresses should implement a more robust solution to HD wallet support for faucet * improve login activated coins metadata storing * upgrade sdk --------- Co-authored-by: Francois <[email protected]>
1 parent 9512dd2 commit 9eb8fed

File tree

378 files changed

+5977
-9415
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

378 files changed

+5977
-9415
lines changed

.github/actions/flutter-deps/action.yml

+1-6
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,10 @@ description: "Installs Flutter and any other dependencies required for the build
33
runs:
44
using: "composite"
55
steps:
6-
- name: Setup Node.js
7-
uses: actions/setup-node@v4
8-
with:
9-
node-version: "20"
10-
116
- name: Get stable flutter
127
uses: subosito/flutter-action@v2
138
with:
14-
flutter-version: "3.24.x"
9+
flutter-version: "3.27.x"
1510
channel: "stable"
1611

1712
- name: Prepare build directory

.github/workflows/ui-tests-on-pr.yml

+15-17
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,13 @@ jobs:
1414
strategy:
1515
fail-fast: false
1616
matrix:
17-
name: [
18-
web-app-linux-profile,
19-
web-app-macos,
20-
]
17+
name: [web-app-linux-profile, web-app-macos]
2118
include:
2219
- name: web-app-linux-profile
2320
os: [self-hosted, linux]
2421
browser: chrome
25-
display: 'headless'
26-
resolution: '1600,1024'
22+
display: "headless"
23+
resolution: "1600,1024"
2724
mode: profile
2825
# memory_profile.json should be generated in profile mode
2926
driver_logs: |
@@ -33,8 +30,8 @@ jobs:
3330
- name: web-app-macos
3431
os: [self-hosted, macos]
3532
browser: safari
36-
display: 'headless' # has no affect with safaridriver
37-
resolution: '1600,1024' # has no affect with safaridriver
33+
display: "headless" # has no affect with safaridriver
34+
resolution: "1600,1024" # has no affect with safaridriver
3835
mode: release
3936
driver_logs: |
4037
./*.log
@@ -55,7 +52,6 @@ jobs:
5552
install-chromedriver: true
5653
install-dependencies: true
5754

58-
5955
- name: Enable safaridriver (sudo) (MacOS)
6056
if: ${{ matrix.browser == 'safari' }}
6157
timeout-minutes: 1
@@ -79,7 +75,6 @@ jobs:
7975
- name: Test air_dex ${{ matrix.browser }}
8076
id: integration-tests
8177
continue-on-error: true
82-
timeout-minutes: 35
8378
env:
8479
GITHUB_API_PUBLIC_READONLY_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8580
run: |
@@ -97,13 +92,16 @@ jobs:
9792
path: ${{ matrix.driver_logs }}
9893
if-no-files-found: warn
9994

100-
- name: Generate coverage report
101-
if: ${{ matrix.browser == 'chrome' }}
102-
continue-on-error: true
103-
timeout-minutes: 35
104-
uses: ./.github/actions/code-coverage
105-
with:
106-
test_file: 'test_integration'
95+
# TODO: re-enable once integration test coverage is fixed.
96+
# there are errors related to Hive and other storage providers
97+
# that will likely need to be mocked to support the new
98+
# flutter integration test structure (flutter drive is deprecated)
99+
# - name: Generate coverage report
100+
# if: ${{ matrix.browser == 'chrome' }}
101+
# continue-on-error: true
102+
# uses: ./.github/actions/code-coverage
103+
# with:
104+
# test_file: 'test_integration'
107105

108106
- name: Fail workflow if tests failed
109107
if: ${{ steps.integration-tests.outcome == 'failure' }}

app_theme/lib/src/dark/theme_global_dark.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ ThemeData get themeGlobalDark {
4141
bodyMedium: const TextStyle(
4242
fontSize: 16.0, color: textColor, fontWeight: FontWeight.w300),
4343
labelLarge: const TextStyle(fontSize: 16.0, color: textColor),
44-
bodyLarge: TextStyle(fontSize: 14.0, color: textColor.withOpacity(0.5)),
44+
bodyLarge: TextStyle(fontSize: 14.0, color: textColor.withValues(alpha: 0.5)),
4545
bodySmall: TextStyle(
4646
fontSize: 12.0,
47-
color: textColor.withOpacity(0.8),
47+
color: textColor.withValues(alpha: 0.8),
4848
fontWeight: FontWeight.w400,
4949
),
5050
);
@@ -80,7 +80,7 @@ ThemeData get themeGlobalDark {
8080
snackBarTheme: snackBarThemeLight(),
8181
textSelectionTheme: TextSelectionThemeData(
8282
cursorColor: const Color.fromRGBO(57, 161, 238, 1),
83-
selectionColor: const Color.fromRGBO(57, 161, 238, 1).withOpacity(0.3),
83+
selectionColor: const Color.fromRGBO(57, 161, 238, 1).withValues(alpha: 0.3),
8484
selectionHandleColor: const Color.fromRGBO(57, 161, 238, 1),
8585
),
8686
inputDecorationTheme: InputDecorationTheme(
@@ -96,12 +96,12 @@ ThemeData get themeGlobalDark {
9696
filled: true,
9797
contentPadding: const EdgeInsets.symmetric(vertical: 12, horizontal: 22),
9898
hintStyle: TextStyle(
99-
color: textColor.withOpacity(0.58),
99+
color: textColor.withValues(alpha: 0.58),
100100
),
101101
labelStyle: TextStyle(
102-
color: textColor.withOpacity(0.58),
102+
color: textColor.withValues(alpha: 0.58),
103103
),
104-
prefixIconColor: textColor.withOpacity(0.58),
104+
prefixIconColor: textColor.withValues(alpha: 0.58),
105105
),
106106
elevatedButtonTheme: ElevatedButtonThemeData(
107107
style: ButtonStyle(
@@ -118,7 +118,7 @@ ThemeData get themeGlobalDark {
118118
backgroundColor: colorScheme.surfaceContainerLowest,
119119
surfaceTintColor: Colors.purple,
120120
selectedBackgroundColor: colorScheme.primary,
121-
foregroundColor: textColor.withOpacity(0.7),
121+
foregroundColor: textColor.withValues(alpha: 0.7),
122122
selectedForegroundColor: textColor,
123123
side: BorderSide(color: colorScheme.outlineVariant),
124124
shape: RoundedRectangleBorder(
@@ -158,7 +158,7 @@ ThemeData get themeGlobalDark {
158158
textTheme: textTheme,
159159
scrollbarTheme: ScrollbarThemeData(
160160
thumbColor:
161-
WidgetStateProperty.all<Color?>(colorScheme.primary.withOpacity(0.8)),
161+
WidgetStateProperty.all<Color?>(colorScheme.primary.withValues(alpha: 0.8)),
162162
),
163163
bottomNavigationBarTheme: BottomNavigationBarThemeData(
164164
// remove icons shift

app_theme/lib/src/light/theme_global_light.dart

+12-11
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ ThemeData get themeGlobalLight {
3838
bodyMedium: const TextStyle(
3939
fontSize: 16.0, color: textColor, fontWeight: FontWeight.w300),
4040
labelLarge: const TextStyle(fontSize: 16.0, color: textColor),
41-
bodyLarge: TextStyle(fontSize: 14.0, color: textColor.withOpacity(0.5)),
41+
bodyLarge:
42+
TextStyle(fontSize: 14.0, color: textColor.withValues(alpha: 0.5)),
4243
bodySmall: TextStyle(
4344
fontSize: 12.0,
44-
color: textColor.withOpacity(0.8),
45+
color: textColor.withValues(alpha: 0.8),
4546
fontWeight: FontWeight.w400,
4647
),
4748
);
@@ -77,7 +78,8 @@ ThemeData get themeGlobalLight {
7778
snackBarTheme: snackBarThemeLight(),
7879
textSelectionTheme: TextSelectionThemeData(
7980
cursorColor: const Color.fromRGBO(57, 161, 238, 1),
80-
selectionColor: const Color.fromRGBO(57, 161, 238, 1).withOpacity(0.3),
81+
selectionColor:
82+
const Color.fromRGBO(57, 161, 238, 1).withValues(alpha: 0.3),
8183
selectionHandleColor: const Color.fromRGBO(57, 161, 238, 1),
8284
),
8385
inputDecorationTheme: InputDecorationTheme(
@@ -93,12 +95,12 @@ ThemeData get themeGlobalLight {
9395
filled: true,
9496
contentPadding: const EdgeInsets.symmetric(vertical: 12, horizontal: 22),
9597
hintStyle: TextStyle(
96-
color: textColor.withOpacity(0.58),
98+
color: textColor.withValues(alpha: 0.58),
9799
),
98100
labelStyle: TextStyle(
99-
color: textColor.withOpacity(0.58),
101+
color: textColor.withValues(alpha: 0.58),
100102
),
101-
prefixIconColor: textColor.withOpacity(0.58),
103+
prefixIconColor: textColor.withValues(alpha: 0.58),
102104
),
103105
elevatedButtonTheme: ElevatedButtonThemeData(
104106
style: ButtonStyle(
@@ -120,8 +122,8 @@ ThemeData get themeGlobalLight {
120122
),
121123
textTheme: textTheme,
122124
scrollbarTheme: ScrollbarThemeData(
123-
thumbColor:
124-
WidgetStateProperty.all<Color?>(colorScheme.primary.withOpacity(0.8)),
125+
thumbColor: WidgetStateProperty.all<Color?>(
126+
colorScheme.primary.withValues(alpha: 0.8)),
125127
),
126128
bottomNavigationBarTheme: BottomNavigationBarThemeData(
127129
// remove icons shift
@@ -139,7 +141,7 @@ ThemeData get themeGlobalLight {
139141
backgroundColor: const Color.fromRGBO(243, 245, 246, 1),
140142
surfaceTintColor: Colors.purple,
141143
selectedBackgroundColor: colorScheme.primary,
142-
foregroundColor: textColor.withOpacity(0.7),
144+
foregroundColor: textColor.withValues(alpha: 0.7),
143145
selectedForegroundColor: Colors.white,
144146
side: const BorderSide(color: Color.fromRGBO(208, 214, 237, 1)),
145147
shape: RoundedRectangleBorder(
@@ -156,8 +158,7 @@ ThemeData get themeGlobalLight {
156158
color: colorScheme.primary,
157159
),
158160
// Match the card's border radius
159-
insets: const EdgeInsets.symmetric(
160-
horizontal: 18),
161+
insets: const EdgeInsets.symmetric(horizontal: 18),
161162
),
162163
),
163164
);

app_theme/pubspec.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ packages:
2626
dependency: transitive
2727
description:
2828
name: material_color_utilities
29-
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
29+
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
3030
url: "https://pub.dev"
3131
source: hosted
32-
version: "0.8.0"
32+
version: "0.11.1"
3333
meta:
3434
dependency: transitive
3535
description:
3636
name: meta
37-
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
37+
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
3838
url: "https://pub.dev"
3939
source: hosted
40-
version: "1.12.0"
40+
version: "1.15.0"
4141
plugin_platform_interface:
4242
dependency: "direct main"
4343
description:

assets/translations/en.json

+14
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"price": "Price",
88
"volume": "Volume",
99
"history": "History",
10+
"lastTransactions": "Last transactions",
1011
"active": "Active",
1112
"change24h": "Change 24h",
1213
"change24hRevert": "24h %",
@@ -396,6 +397,12 @@
396397
"withdrawNoSuchCoinError": "Invalid selection, {} does not exist",
397398
"txHistoryFetchError": "Error fetching tx history from the endpoint. Unsupported type: {}",
398399
"txHistoryNoTransactions": "Transactions are not available",
400+
"maxGapLimitReached": "Maximum gap limit reached - please use existing unused addresses first",
401+
"maxAddressesReached": "Maximum number of addresses reached for this asset",
402+
"missingDerivationPath": "Missing derivation path configuration",
403+
"protocolNotSupported": "Protocol does not support multiple addresses",
404+
"derivationModeNotSupported": "Current wallet mode does not support multiple addresses",
405+
"noActiveWallet": "No active wallet - please sign in first",
399406
"memo": "Memo",
400407
"gasPriceGwei": "Gas price [Gwei]",
401408
"gasLimit": "Gas limit",
@@ -594,6 +601,13 @@
594601
"mmBotFirstTradePreview": "Preview of the first order",
595602
"mmBotFirstTradeEstimate": "First trade estimate",
596603
"mmBotFirstOrderVolume": "This is an estimate of the first order only. Following orders will be placed automatically using the configured volume of the available {} balance.",
604+
"onlySendToThisAddress": "Only send {} to this address",
605+
"scanTheQrCode": "Scan the QR code on any mobile device wallet",
606+
"swapAddress": "Swap Address",
607+
"addresses": "Addresses",
608+
"creating": "Creating",
609+
"createAddress": "Create Address",
610+
"hideZeroBalanceAddresses": "Hide 0 balance addresses",
597611
"important": "Important",
598612
"trend": "Trend",
599613
"growth": "Growth",

ios/Runner.xcodeproj/project.pbxproj

-8
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@
1717
C2B3782B4B651E97F3AF9B7A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DB340A008F6FECB3B82619D /* Pods_Runner.framework */; };
1818
D63143E32701FFB500374C78 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E22701FFB500374C78 /* CoreFoundation.framework */; };
1919
D63143E52702003500374C78 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E42701FFD100374C78 /* libc++.tbd */; };
20-
D63143E62702004B00374C78 /* libmm2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E12701FF6700374C78 /* libmm2.a */; };
2120
D63143E92702008000374C78 /* libSystem.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E82702007200374C78 /* libSystem.tbd */; };
2221
D63143EA2702008B00374C78 /* libSystem.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E82702007200374C78 /* libSystem.tbd */; };
2322
D63143EB2702009900374C78 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143E72702005D00374C78 /* libresolv.tbd */; };
2423
D63143ED270200B100374C78 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D63143EC270200B100374C78 /* SystemConfiguration.framework */; };
25-
D6C50BDA2702024E0095EE3C /* mm2.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C50BD82702024E0095EE3C /* mm2.m */; };
2624
/* End PBXBuildFile section */
2725

2826
/* Begin PBXCopyFilesBuildPhase section */
@@ -63,8 +61,6 @@
6361
D63143E72702005D00374C78 /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; };
6462
D63143E82702007200374C78 /* libSystem.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libSystem.tbd; path = usr/lib/libSystem.tbd; sourceTree = SDKROOT; };
6563
D63143EC270200B100374C78 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
66-
D6C50BD82702024E0095EE3C /* mm2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mm2.m; sourceTree = "<group>"; };
67-
D6C50BD92702024E0095EE3C /* mm2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mm2.h; sourceTree = "<group>"; };
6864
/* End PBXFileReference section */
6965

7066
/* Begin PBXFrameworksBuildPhase section */
@@ -76,7 +72,6 @@
7672
D63143EA2702008B00374C78 /* libSystem.tbd in Frameworks */,
7773
D63143E32701FFB500374C78 /* CoreFoundation.framework in Frameworks */,
7874
D63143EB2702009900374C78 /* libresolv.tbd in Frameworks */,
79-
D63143E62702004B00374C78 /* libmm2.a in Frameworks */,
8075
D63143E92702008000374C78 /* libSystem.tbd in Frameworks */,
8176
D63143ED270200B100374C78 /* SystemConfiguration.framework in Frameworks */,
8277
C2B3782B4B651E97F3AF9B7A /* Pods_Runner.framework in Frameworks */,
@@ -120,8 +115,6 @@
120115
97C146F01CF9000F007C117D /* Runner */ = {
121116
isa = PBXGroup;
122117
children = (
123-
D6C50BD92702024E0095EE3C /* mm2.h */,
124-
D6C50BD82702024E0095EE3C /* mm2.m */,
125118
97C146FA1CF9000F007C117D /* Main.storyboard */,
126119
97C146FD1CF9000F007C117D /* Assets.xcassets */,
127120
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -327,7 +320,6 @@
327320
isa = PBXSourcesBuildPhase;
328321
buildActionMask = 2147483647;
329322
files = (
330-
D6C50BDA2702024E0095EE3C /* mm2.m in Sources */,
331323
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
332324
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
333325
);

0 commit comments

Comments
 (0)