ci(release): publish latest release

parent 5daa12ea
......@@ -2,6 +2,7 @@ ignores: [
# Dependencies that depcheck thinks are unused but are actually used
'@graphql-codegen/*',
'@commitlint/*',
'@uniswap/eslint-config',
'i18next',
'moti',
# Dependencies that depcheck thinks are missing but are actually present or never used
......
diff --git a/src/components/bottomSheet/BottomSheet.tsx b/src/components/bottomSheet/BottomSheet.tsx
index 1050af591cedd3395c3f21553f9b125d85ca9d11..0761eb562be2af0ebccfda02f06a9ec79289d4ae 100644
--- a/src/components/bottomSheet/BottomSheet.tsx
+++ b/src/components/bottomSheet/BottomSheet.tsx
@@ -501,7 +501,7 @@ const BottomSheetComponent = forwardRef<BottomSheet, BottomSheetProps>(
animatedAnimationSource.value === ANIMATION_SOURCE.SNAP_POINT_CHANGE &&
animatedAnimationState.value === ANIMATION_STATE.RUNNING
) {
- return animatedNextPositionIndex.value;
+ return Math.max(animatedCurrentIndex.value, currentIndex);
}
return currentIndex;
diff --git a/ios/ReactNativePerformance/ReactNativePerformance.m b/ios/ReactNativePerformance/ReactNativePerformance.m
index 485211356fc14de4205e6d0c7e06eb5116992e0b..dbb4bb5637656b7f62fc88249b4ed5402c22290d 100644
--- a/ios/ReactNativePerformance/ReactNativePerformance.m
+++ b/ios/ReactNativePerformance/ReactNativePerformance.m
@@ -1,5 +1,5 @@
#import "ReactNativePerformance.h"
-#import "ReactNativePerformance-Swift.h"
+#import <ReactNativePerformance/ReactNativePerformance-Swift.h>
static NSTimeInterval startupTimestamp = -1.0;
IPFS hash of the deployment:
- CIDv0: `QmXSmkbZBfMGwWiC7fzw8oDCxvmfGENb7ahoaZVWsstaTF`
- CIDv1: `bafybeiehjkqxfubc7qylb2q67pnqzri4j5kqxcllryecaq7nuqntzzjrfy`
- CIDv0: `QmRAsMChBURwebWNq1p91nAXfAbhZEoGqNQfQpivBqYTDt`
- CIDv1: `bafybeibkcgfvpyahakei5eufru4vcmypgcp7jc4wmh7lacvph4ethbhnnm`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,66 +10,73 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://bafybeiehjkqxfubc7qylb2q67pnqzri4j5kqxcllryecaq7nuqntzzjrfy.ipfs.dweb.link/
- https://bafybeiehjkqxfubc7qylb2q67pnqzri4j5kqxcllryecaq7nuqntzzjrfy.ipfs.cf-ipfs.com/
- [ipfs://QmXSmkbZBfMGwWiC7fzw8oDCxvmfGENb7ahoaZVWsstaTF/](ipfs://QmXSmkbZBfMGwWiC7fzw8oDCxvmfGENb7ahoaZVWsstaTF/)
- https://bafybeibkcgfvpyahakei5eufru4vcmypgcp7jc4wmh7lacvph4ethbhnnm.ipfs.dweb.link/
- https://bafybeibkcgfvpyahakei5eufru4vcmypgcp7jc4wmh7lacvph4ethbhnnm.ipfs.cf-ipfs.com/
- [ipfs://QmRAsMChBURwebWNq1p91nAXfAbhZEoGqNQfQpivBqYTDt/](ipfs://QmRAsMChBURwebWNq1p91nAXfAbhZEoGqNQfQpivBqYTDt/)
## 5.57.0 (2024-11-07)
## 5.58.0 (2024-11-12)
### Features
* **web:** [v4] add v4 data to explore graphs (#13174) 3d2b961
* **web:** add hook functionality and update the UI (#13415) 4dfcd67
* **web:** Add liq button on pools explore page (#13400) d116542
* **web:** add loading states to all LP actions buttons (#13408) 9aa091b
* **web:** adding dynamic fee tier option to fee tier search modal (#13478) 7276ef7
* **web:** animate fee tier dropdown (#13542) 13f32e2
* **web:** design fixes on PosDP (#13543) 5f93dfc
* **web:** handle one-sided liq input in increase modal (#13370) 4fa66d4
* **web:** redirect to positions list after creating a position (#13444) 160adc6
* **web:** refetch position queries when pending LP txs change (#13483) 70ae19d
* **web:** remove thai from supported languages and translations (#13528) 36fe674
* **web:** update explore table header styles (#13386) e272167
* **web:** updating fee tiers search modal to include the default fee tiers (#13464) aa0bfcf
* **web:** use the new rest endpoint on the mini portfolio pools tab (#13521) 555de82
* **web:** add a pool out of sync error to the create flow (#13687) 686db59
* **web:** add dynamic fee tier speedbump (#13749) f24ca9d
* **web:** add fiat amount to pool position price display (#13705) 5d96363
* **web:** add hookAddress to PDP and explore table (#13522) 8f7f225
* **web:** add multichain context (#13681) 0f911ed
* **web:** add poolId to pair (#13280) 44c11ec
* **web:** add tx parsing for v4 transactions in the mini portfolio and fix pending toasts for create + migrate (#13761) 1059b2d
* **web:** add v4 analytics - add/remove/migrate (#13366) d9e94ea
* **web:** Add v4 Pools to TDP (#13507) d1d724d
* **web:** adding apr to positions cards (#13630) 58de358
* **web:** adding position row button (#13519) 9900a9e
* **web:** adding top pools table for empty positions (#13726) 369874f
* **web:** animated crosshair on LP price chart (#13643) e6f0395
* **web:** change 7d to 30d volume (#13739) 5f083b1
* **web:** fix Add Liq button color on light mode (#13611) 6ac6738
* **web:** mini price charts in LP position cards (mvp) (#13614) 631c32d
* **web:** move swap fields to multichain provider (#13688) 6395ab3
* **web:** remove multichainUXEnabled (#13690) 9dd774f
* **web:** Remove NFTs from explore menu and search results (#13744) 9149460
* **web:** top pools positions page (#13725) de77cf0
* **web:** update mini portfolio cards (#13633) 203c2ce
* **web:** update PDP to use getPositions query (#13534) 1df4fcc
* **web:** use mainnet txs on multichain explore ux (#13748) af78802
* **web:** v4 collect fees analytics (#13629) ecf0ee0
* **web:** v4 page hook analytics (#13637) ebde907
* **web:** v4 page viewed analytics (#13632) 2887504
* **web:** v4 PDP support (#13401) bc6a1a9
* **web:** v4 select fee tier analytics (#13706) ad618a0
### Bug Fixes
* **web:** Add error message for missing trade routes (#13327) 004265a
* **web:** add insuffient balance error state for the button (#13447) eb4ea2d
* **web:** allow testnets to be backend supported chains (#13424) b968f05
* **web:** better default fee tier selection (#13526) 5976b4b
* **web:** change view position to view positions (#13511) bcee0e3
* **web:** cypress tests (#13402) f78f58b
* **web:** fee tier fixes (#13240) 16ad294
* **web:** filter to testnets when in testnet mode (#13356) b1a67be
* **web:** fix token sorting for v2 positions (#13504) 7c460ff
* **web:** fixing uniswap context provider for web (#13566) c7511a4
* **web:** hide the collect button if there are no fees to collect (#13459) 9a98813
* **web:** improve LiquidityChartRangeInput behavior when inverting tokens (#13550) 523eb00
* **web:** landing page redirection when connected (#13425) 6b5993e
* **web:** position cards text sizing (#13307) e406dd1
* **web:** remove confusing subgraph naming from v3 tick query (#13436) f1d7d14
* **web:** Remove default mainnet chain ID in NetworkFilter (#13272) 4993213
* **web:** stop using multicall for Position NFT data fetching (#13414) 5d9db63
* **web:** udpate scroll behavior on explore page (#12277) bb14b4d
* **web:** update creating pool banner to be persistent (#13456) 94b7801
* **web:** update loading/error states in LiquidityChartRangeInput (#13498) a5f6b0e
* **web:** update url when switching protocol versions in create (#13422) f3edc84
* **web:** use DropdownSelector for position filters (#13544) dc63bdd
* **web:** use NATIVE in url to add liquidity (#13262) 48aa927
* **web:** version dropdown ordering, clickable Sidebar in create flow (#13551) a86ee47
* **web:** add link to tdp and fix styling nit (#13607) 75a1e8a
* **web:** align chevrons + show full range (#13639) dc8b232
* **web:** align widths (#13584) cc1945f
* **web:** bunch of ui nits (#13770) a551b09
* **web:** clean up multichain buy flow (#13352) 1ed6784
* **web:** crash on PosDP (#13664) d09692b
* **web:** create page design nits (#13672) 357e42a
* **web:** fix activity-history e2e test (#13661) 41b514c
* **web:** fix token warning on nav (#13443) 3793aab
* **web:** fix useEffect in usePendingLPTransactionsChangeListener (#13595) 1ff8cec
* **web:** for unavailable text overflow (#13759) 56e0490
* **web:** liquidity modal padding (#13686) d7af07b
* **web:** lp flow design nits (#13741) 41f10e3
* **web:** polish, use link instead of router nav (#13588) c5d2800
* **web:** pool tab zindex was too damn high - staging (#13793) fbc78a4
* **web:** remove extra breadcrumb arrow (#13704) 3202db9
* **web:** remove network selector in nav on positions and migration (v3) (#13353) b93aec4
* **web:** scrollable adaptive web modal (#13489) 2d32a7d
* **web:** search icon color in light mode (#13694) a5a699f
* **web:** send sorted tokens to the create endpoint of the trading API (#13710) 9b468bb
* **web:** token protection polish (#13764) 9be51b7
* **web:** update invalid price state (#13719) 6afcbb5
### Continuous Integration
* **web:** update sitemaps d3686aa
### Tests
* **web:** cron job run web e2e tests (#13482) 8eda2da
* **web:** update sitemaps a82abd3
web/5.57.0
\ No newline at end of file
web/5.58.0
\ No newline at end of file
......@@ -14,7 +14,7 @@
"@svgr/webpack": "8.0.1",
"@tamagui/core": "1.108.4",
"@types/uuid": "9.0.1",
"@uniswap/analytics-events": "2.38.0",
"@uniswap/analytics-events": "2.39.0",
"@uniswap/uniswapx-sdk": "2.1.0-beta.18",
"@uniswap/universal-router-sdk": "4.5.2",
"@uniswap/v3-sdk": "3.18.1",
......@@ -51,37 +51,37 @@
"zod": "3.22.4"
},
"devDependencies": {
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
"@testing-library/dom": "^7.11.0",
"@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
"@testing-library/dom": "7.31.2",
"@testing-library/react": "13.4.0",
"@types/chrome": "0.0.254",
"@types/jest": "29.5.0",
"@types/react": "^18.0.15",
"@types/react-dom": "^18.0.6",
"@types/react": "18.0.38",
"@types/react-dom": "18.2.15",
"@types/redux-logger": "3.0.9",
"@types/redux-persist-webextension-storage": "1.0.3",
"@types/ua-parser-js": "0.7.31",
"@uniswap/eslint-config": "workspace:^",
"@welldone-software/why-did-you-render": "8.0.1",
"clean-webpack-plugin": "^4.0.0",
"concurrently": "^8.0.1",
"copy-webpack-plugin": "^11.0.0",
"esbuild-loader": "^3.0.1",
"clean-webpack-plugin": "4.0.0",
"concurrently": "8.2.2",
"copy-webpack-plugin": "11.0.0",
"esbuild-loader": "3.2.0",
"eslint": "8.44.0",
"jest": "29.7.0",
"jest-chrome": "0.8.0",
"jest-environment-jsdom": "29.5.0",
"jest-extended": "4.0.1",
"mini-css-extract-plugin": "^2.7.6",
"react-refresh": "^0.14.0",
"serve": "^14.2.0",
"mini-css-extract-plugin": "2.9.1",
"react-refresh": "0.14.0",
"serve": "14.2.4",
"statsig-js": "4.41.0",
"swc-loader": "^0.2.3",
"swc-loader": "0.2.6",
"tamagui-loader": "1.108.4",
"typescript": "5.3.3",
"webpack": "5.90.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.1"
"webpack-cli": "5.1.4",
"webpack-dev-server": "4.15.1"
},
"private": true,
"scripts": {
......
......@@ -32,6 +32,7 @@ import {
RotatableChevron,
Settings,
ShieldQuestion,
Wrench,
} from 'ui/src/components/icons'
import { iconSizes } from 'ui/src/theme'
import { uniswapUrls } from 'uniswap/src/constants/urls'
......@@ -191,7 +192,7 @@ export function SettingsScreen(): JSX.Element {
onPress={(): void => navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.Privacy}`)}
/>
<SettingsToggleRow
Icon={ShieldQuestion}
Icon={Wrench}
checked={isTestnetModeEnabled}
title={t('settings.setting.wallet.testnetMode.title')}
onCheckedChange={handleTestnetModeToggle}
......
import { useState } from 'react'
import { useExtensionNavigation } from 'src/app/navigation/utils'
import { Flex } from 'ui/src'
import { useEnabledChains } from 'uniswap/src/features/chains/hooks'
......@@ -14,7 +15,10 @@ export function SwapFlowScreen(): JSX.Element {
const inputCurrencyId = useHighestBalanceNativeCurrencyId(account.address)
const initialState = prepareSwapFormState({ inputCurrencyId, defaultChainId })
const swapPrefilledState = useSwapPrefilledState(locationState?.initialTransactionState ?? initialState)
/** Initialize the initial state once. On navigation the locationState changes causing an unwanted re-render. */
const [initialTransactionState] = useState(() => locationState?.initialTransactionState ?? initialState)
const swapPrefilledState = useSwapPrefilledState(initialTransactionState)
return (
<Flex fill p="$spacing12">
......
......@@ -24,14 +24,15 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.input.KeyboardCapitalization
......@@ -39,6 +40,7 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.focus.focusRequester
import com.uniswap.R
import com.uniswap.onboarding.import.SeedPhraseInputViewModel.MnemonicError.InvalidPhrase
import com.uniswap.onboarding.import.SeedPhraseInputViewModel.MnemonicError.InvalidWord
......@@ -52,6 +54,7 @@ import com.uniswap.theme.UniswapTheme
import com.uniswap.theme.relativeOffset
import kotlin.math.abs
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun SeedPhraseInput(
viewModel: SeedPhraseInputViewModel
......@@ -59,9 +62,15 @@ fun SeedPhraseInput(
val focusRequester = remember { FocusRequester() }
val density = LocalDensity.current.density
var buttonOffset by remember { mutableStateOf(20.dp) }
val keyboardController = LocalSoftwareKeyboardController.current
LaunchedEffect(Unit) {
focusRequester.requestFocus()
LaunchedEffect(viewModel.isFocused) {
if (viewModel.isFocused) {
focusRequester.requestFocus()
} else {
focusRequester.freeFocus()
keyboardController?.hide()
}
}
Column(
......
......@@ -122,7 +122,15 @@ class SeedPhraseInputViewManager : ViewGroupManager<ComposeView>() {
override fun receiveCommand(root: ComposeView, commandId: String?, args: ReadableArray?) {
super.receiveCommand(root, commandId, args)
when (commandId) {
COMMAND_HANDLE_SUBMIT -> viewModel.handleSubmit()
COMMAND_HANDLE_SUBMIT -> {
viewModel.handleSubmit()
}
COMMAND_FOCUS -> {
viewModel.focus()
}
COMMAND_BLUR -> {
viewModel.blur()
}
else -> Unit
}
}
......@@ -150,6 +158,8 @@ class SeedPhraseInputViewManager : ViewGroupManager<ComposeView>() {
private const val EVENT_MNEMONIC_STORED = "onMnemonicStored"
private const val EVENT_HEIGHT_MEASURED = "onHeightMeasured"
private const val COMMAND_HANDLE_SUBMIT = "handleSubmit"
private const val COMMAND_FOCUS = "focus"
private const val COMMAND_BLUR = "blur"
private const val FIELD_MNEMONIC_ID = "mnemonicId"
private const val FIELD_CAN_SUBMIT = "canSubmit"
private const val FIELD_HEIGHT = "height"
......
......@@ -13,6 +13,9 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import android.content.Context
import android.view.inputmethod.InputMethodManager
import android.view.View
class SeedPhraseInputViewModel(
private val ethersRs: RnEthersRs,
......@@ -63,6 +66,17 @@ class SeedPhraseInputViewModel(
private var validateLastWordTimeout: Long = 1000
private var validateLastWordJob: Job? = null
var isFocused by mutableStateOf(false)
private set
fun focus() {
isFocused = true
}
fun blur() {
isFocused = false
}
fun handleInputChange(value: TextFieldValue) {
input = value
......@@ -154,4 +168,5 @@ class SeedPhraseInputViewModel(
private const val MIN_LENGTH = 12
private const val MAX_LENGTH = 24
}
}
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/splashscreen_background"/>
<item>
<bitmap android:gravity="center" android:src="@drawable/ic_launcher_foreground" />
</item>
<item android:drawable="@color/splashscreen_background" />
<item
android:drawable="@drawable/uniswap_logo"
android:width="150dp"
android:height="150dp"
android:gravity="center" />
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<inset
android:drawable="@drawable/ic_launcher_foreground"
android:insetLeft="25%"
android:insetTop="25%"
android:insetRight="25%"
android:insetBottom="25%" />
</item>
<item
android:width="110dp"
android:height="110dp"
android:gravity="center">
<inset
android:insetLeft="15%"
android:insetTop="15%"
android:insetRight="15%"
android:insetBottom="15%"
android:drawable="@drawable/splash_logo"
/>
</item>
</layer-list>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="1024dp"
android:height="1024dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M808.1,154.8C809.5,130.6 812.8,114.6 819.4,100C822,94.3 824.5,89.5 824.9,89.5C825.2,89.5 824.1,93.8 822.3,99C817.5,113.2 816.7,132.5 820,155C824.2,183.6 826.6,187.7 857,218.6C871.2,233 887.7,251.3 893.7,259.1L904.6,273.4L893.7,263.2C880.4,250.8 849.7,226.5 843,223C838.4,220.7 837.7,220.7 834.9,223.5C832.3,226 831.8,229.9 831.4,248.1C830.9,276.4 827,294.6 817.6,312.8C812.6,322.6 811.8,320.5 816.4,309.4C819.8,301.1 820.1,297.5 820.1,270C820.1,214.9 813.5,201.7 775,179C765.2,173.2 749.1,164.9 739.2,160.6C729.3,156.2 721.5,152.4 721.7,152.1C722.8,151 760.4,161.9 775.5,167.7C798,176.3 801.7,177.4 804.5,176.4C806.3,175.7 807.2,170.4 808.1,154.8Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M332.7,74.6C319.4,72.6 318.8,72.3 325.1,71.4C337.1,69.5 365.5,72 385.1,76.6C430.8,87.4 472.5,115.1 516.9,164.3L528.7,177.3L545.5,174.6C616.7,163.3 689,172.3 749.5,200.1C766.1,207.7 792.4,222.9 795.7,226.8C796.7,228.1 798.6,236.1 799.9,244.6C804.4,274.2 802.2,296.9 793.1,313.9C788.1,323.1 787.8,326 791.2,333.9C793.8,340.2 801.2,344.9 808.6,344.9C823.6,344.9 839.8,320.7 847.3,287.1L850.3,273.7L856.2,280.4C888.6,316.8 914,366.5 918.3,401.9L919.5,411.1L914,402.7C904.7,388.3 895.3,378.5 883.2,370.6C861.5,356.3 838.5,351.4 777.7,348.2C722.8,345.4 691.7,340.7 660.9,330.7C608.5,313.7 582,291.1 519.7,209.9C492.1,173.8 475,153.9 458,137.8C419.3,101.3 381.3,82.1 332.7,74.6Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M358.6,249.3C331.5,212.2 314.8,155.4 318.4,112.9L319.5,99.8L325.7,100.9C337.3,103 357.2,110.4 366.6,116C392.3,131.5 403.4,151.9 414.7,204.2C418,219.6 422.3,236.9 424.3,242.8C427.5,252.3 439.7,274.4 449.6,288.7C456.7,299 452,303.9 436.2,302.5C412.2,300.4 379.6,278 358.6,249.3Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M775.2,525.2C648.6,474.5 604,430.5 604,356.3C604,345.4 604.3,336.5 604.8,336.5C605.3,336.5 610.2,340.1 615.7,344.5C641.4,365 670.1,373.7 749.7,385.2C796.6,392 822.9,397.5 847.2,405.5C924.5,431 972.3,482.7 983.8,553.1C987.1,573.6 985.1,611.9 979.8,632.1C975.5,648.1 962.6,676.9 959.1,678C958.2,678.3 957.2,674.7 957,669.8C955.7,643.3 942.3,617.6 919.7,598.3C894,576.4 859.5,558.9 775.2,525.2Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M686.3,546.2C684.7,536.9 682,524.9 680.2,519.6L676.9,510L682.9,516.7C691.3,526 697.8,537.9 703.4,553.6C707.6,565.7 708.1,569.3 708.1,588.9C708,608.1 707.5,612.1 703.6,623C697.4,640.1 689.7,652.2 676.9,665.2C653.7,688.6 624,701.5 581.1,706.9C573.6,707.9 551.9,709.4 532.8,710.4C484.6,712.9 452.9,718 424.4,728C420.3,729.4 416.6,730.3 416.3,729.9C415.1,728.8 434.5,717.3 450.5,709.6C473.1,698.8 495.6,692.9 546,684.6C570.9,680.4 596.6,675.5 603.1,673.5C664.8,654.7 696.4,606.2 686.3,546.2Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M744.3,648.7C727.5,612.7 723.7,578 732.9,545.7C733.9,542.2 735.4,539.4 736.4,539.4C737.3,539.4 741.3,541.5 745.2,544.1C753,549.3 768.5,558.1 809.9,580.5C861.6,608.5 891.1,630.2 911.2,655C928.7,676.7 939.6,701.4 944.8,731.5C947.8,748.6 946,789.7 941.6,806.8C927.7,861 895.4,903.6 849.3,928.5C842.6,932.1 836.5,935.1 835.9,935.1C835.2,935.1 837.7,928.9 841.3,921.3C856.8,889.1 858.6,857.8 846.9,822.9C839.7,801.6 825.1,775.5 795.5,731.5C761.2,680.3 752.8,666.7 744.3,648.7Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M268.7,842.6C315.7,803.2 374.2,775.2 427.4,766.6C450.4,762.9 488.6,764.3 509.9,769.7C543.9,778.4 574.4,797.8 590.3,820.9C605.8,843.5 612.4,863.2 619.3,907C622.1,924.3 625,941.7 625.9,945.6C631.1,968.3 641.2,986.4 653.8,995.6C673.7,1010 707.9,1010.9 741.6,997.9C747.4,995.7 752.3,994.1 752.7,994.5C753.9,995.7 736.9,1007 724.9,1012.9C708.8,1020.9 696,1024 679,1024C648.1,1024 622.5,1008.4 601.1,976.6C596.9,970.3 587.4,951.5 580.1,934.9C557.5,883.7 546.3,868.1 520.1,851C497.3,836.2 467.9,833.5 445.7,844.3C416.6,858.5 408.5,895.4 429.4,918.8C437.6,928.1 453.1,936.1 465.7,937.7C489.3,940.6 509.6,922.8 509.6,899.1C509.6,883.7 503.7,874.9 488.7,868.2C468.2,859 446.2,869.7 446.3,888.8C446.4,897 449.9,902.1 458.2,905.8C463.4,908.2 463.6,908.4 459.3,907.5C440.5,903.6 436.1,881.1 451.2,866.2C469.3,848.3 506.8,856.2 519.6,880.6C525,890.9 525.7,911.4 521,923.7C510.4,951.4 479.7,965.9 448.5,958C427.2,952.6 418.6,946.8 393,920.6C348.4,875 331.2,866.2 267,856.2L254.7,854.3L268.7,842.6Z"
android:fillColor="#F50DB4"/>
<path
android:pathData="M59.9,27.2C208.5,206.5 310.9,280.5 322.3,296.1C331.6,309 328.1,320.6 312,329.7C303.1,334.7 284.7,339.8 275.5,339.8C265,339.8 261.5,335.9 261.5,335.9C255.4,330.2 252,331.2 221,276.4C177.9,210 141.9,155 140.9,154C138.6,151.9 138.7,152 216.6,290.5C229.2,319.4 219.1,330 219.1,334.1C219.1,342.5 216.8,346.9 206.4,358.4C189.1,377.6 181.4,399.2 175.8,443.8C169.5,493.9 151.9,529.2 103.1,589.7C74.5,625.1 69.8,631.6 62.6,645.9C53.6,663.8 51.1,673.9 50,696.6C49,720.6 51.1,736.1 58.4,759.1C64.9,779.1 71.6,792.4 88.9,818.9C103.8,841.8 112.3,858.8 112.3,865.5C112.3,870.8 113.3,870.8 136.4,865.6C191.5,853.3 236.3,831.5 261.5,804.8C277.1,788.3 280.8,779.2 280.9,756.5C281,741.7 280.4,738.6 276.4,730.1C269.9,716.3 257.9,704.7 231.6,686.9C197.2,663.5 182.5,644.6 178.4,618.7C175.1,597.4 178.9,582.4 198,542.7C217.7,501.7 222.6,484.1 225.9,442.7C228.1,416 231,405.4 238.8,396.9C246.8,388.1 254.1,385.1 274.1,382.4C306.6,378 327.3,369.6 344.4,354C359.2,340.5 365.4,327.4 366.3,307.8L367,292.9L358.8,283.3C328.9,248.7 39.9,0 38,0C37.6,0 47.5,12.3 59.9,27.2ZM129.1,723.8C135.9,711.9 132.3,696.6 121,689.1C110.3,682 93.7,685.3 93.7,694.6C93.7,697.4 95.2,699.4 98.8,701.2C104.7,704.2 105.1,707.7 100.4,714.6C95.7,721.7 96.1,727.9 101.5,732.1C110.3,738.9 122.6,735.2 129.1,723.8Z"
android:fillColor="#F50DB4"
android:fillType="evenOdd"/>
<path
android:pathData="M387.6,390.2C372.3,394.9 357.4,411 352.8,427.8C350,438.1 351.6,456.2 355.8,461.8C362.6,470.8 369.2,473.2 387,473C421.8,472.8 452,458 455.5,439.4C458.4,424.2 445.1,403.2 426.8,393.9C417.4,389.1 397.3,387.2 387.6,390.2ZM428.3,421.8C433.6,414.2 431.3,406 422.2,400.5C404.8,390 378.5,398.7 378.5,415C378.5,423.1 392.2,432 404.8,432C413.1,432 424.6,427 428.3,421.8Z"
android:fillColor="#F50DB4"
android:fillType="evenOdd"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground>
<inset android:drawable="@drawable/ic_launcher_foreground"
android:inset="25%"/>
</foreground>
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
\ No newline at end of file
<resources>
<color name="splashscreen_background">#000000</color>
<color name="splashscreen_background">#131313</color>
<color name="item_background">#303030</color>
<color name="text_primary">#ffffff</color>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FEF4FF</color>
</resources>
......@@ -2,14 +2,21 @@
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require_relative '../../../node_modules/react-native/scripts/react_native_pods'
require_relative '../../../node_modules/@react-native-community/cli-platform-ios/native_modules'
require_relative '../../../node_modules/react-native-permissions/scripts/setup'
platform :ios, '15.0'
prepare_react_native_project!
$FirebaseSDKVersion = '10.15.0'
setup_permissions([
'FaceID',
'Notifications',
])
$RNFirebaseAsStaticFramework = true
$RNFirebaseAnalyticsWithoutAdIdSupport=true
target 'Uniswap' do
use_frameworks! :linkage => :static
use_expo_modules!
post_integrate do |installer|
begin
......@@ -38,12 +45,6 @@ target 'Uniswap' do
pod 'EthersRS', :path => '../../../node_modules/@uniswap/ethers-rs-mobile'
pod 'Argon2Swift', '1.0.3'
permissions_path = '../../../node_modules/react-native-permissions/ios'
pod 'Permission-FaceID', :path => "#{permissions_path}/FaceID"
pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications"
pod 'FirebaseCore', $FirebaseSDKVersion, :modular_headers => true
pod 'GoogleUtilities', '7.11.5', :modular_headers => true
post_install do |installer|
react_native_post_install(installer, "../../../node_modules/react-native")
......@@ -57,27 +58,30 @@ target 'Uniswap' do
end
target 'OneSignalNotificationServiceExtension' do
use_frameworks! :linkage => :static
pod 'OneSignalXCFramework', '3.12.6'
end
def widget_pods
def prepare_target_commons
use_frameworks! :linkage => :static
pod 'Apollo', '1.2.1'
pod 'UIImageColors', '2.1.0'
end
target 'Widgets' do
widget_pods
prepare_target_commons
# Pods for widgets
end
target 'WidgetsCore' do
widget_pods
prepare_target_commons
# Pods for widgets core
end
target 'WidgetsCoreTests' do
widget_pods
prepare_target_commons
# Pods for widgets core test
end
target 'WidgetIntentExtension' do
widget_pods
prepare_target_commons
# Pods for intent extension
end
This diff is collapsed.
......@@ -8,7 +8,6 @@
#import <React/RCTBundleURLProvider.h>
#import <ReactNativePerformance/ReactNativePerformance.h>
#import <RCTAppSetupUtils.h>
#import "RNSplashScreen.h"
@implementation AppDelegate
......@@ -48,8 +47,6 @@
[super application:application didFinishLaunchingWithOptions:newLaunchOptions];
[RNSplashScreen show];
[[RCTI18nUtil sharedInstance] allowRTL:NO];
return YES;
......
{
"images" : [
{
"filename" : "AppIcon-20@2x.png",
"filename" : "40.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "AppIcon-20@3x.png",
"filename" : "60.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "AppIcon-29@1x.png",
"filename" : "29.png",
"idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "AppIcon-29@2x.png",
"filename" : "58.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "AppIcon-29@3x.png",
"filename" : "87.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "AppIcon-40@2x.png",
"filename" : "80.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "AppIcon-40@3x.png",
"filename" : "120.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "AppIcon-60@2x.png",
"filename" : "57.png",
"idiom" : "iphone",
"scale" : "1x",
"size" : "57x57"
},
{
"filename" : "114.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "57x57"
},
{
"filename" : "120.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "AppIcon-60@3x.png",
"filename" : "180.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "iPad-AppIcon-20@1x.png",
"filename" : "20.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "iPad-AppIcon-20@2x.png",
"filename" : "40.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "iPad-AppIcon-29@1x.png",
"filename" : "29.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "iPad-AppIcon-29@2x.png",
"filename" : "58.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "iPad-AppIcon-40@1x.png",
"filename" : "40.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "iPad-AppIcon-40@2x-1.png",
"filename" : "80.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "iPad-AppIcon-76@1x.png",
"filename" : "50.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "50x50"
},
{
"filename" : "100.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "50x50"
},
{
"filename" : "72.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "72x72"
},
{
"filename" : "144.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "72x72"
},
{
"filename" : "76.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "iPad-AppIcon-76@2x.png",
"filename" : "152.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "iPad-AppIcon-83.5@2x.png",
"filename" : "167.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "AppIcon-1024@1x.png",
"filename" : "1024.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment