reduce android image size with lossless webp
This commit is contained in:
+2
-2
@@ -21,9 +21,9 @@ import * as SplashScreen from 'expo-splash-screen'
|
||||
import {Logotype} from '#/view/icons/Logotype'
|
||||
import {atoms as a} from '#/alf'
|
||||
// @ts-expect-error
|
||||
import splashImagePointer from '../assets/splash/splash.png'
|
||||
import splashImagePointer from '../assets/splash/splash.webp'
|
||||
// @ts-expect-error
|
||||
import darkSplashImagePointer from '../assets/splash/splash-dark.png'
|
||||
import darkSplashImagePointer from '../assets/splash/splash-dark.webp'
|
||||
|
||||
const splashImageUri = RNImage.resolveAssetSource(splashImagePointer)!.uri
|
||||
const darkSplashImageUri = RNImage.resolveAssetSource(
|
||||
|
||||
@@ -77,7 +77,7 @@ export function InitialVerificationAnnouncement() {
|
||||
]}>
|
||||
<Image
|
||||
accessibilityIgnoresInvertColors
|
||||
source={require('../../../../assets/images/initial_verification_announcement_1.png')}
|
||||
source={require('../../../../assets/images/initial_verification_announcement_1.webp')}
|
||||
style={[
|
||||
{
|
||||
aspectRatio: 353 / 160,
|
||||
|
||||
@@ -79,7 +79,7 @@ function Inner({
|
||||
]}>
|
||||
<Image
|
||||
accessibilityIgnoresInvertColors
|
||||
source={require('../../../assets/images/initial_verification_announcement_1.png')}
|
||||
source={require('../../../assets/images/initial_verification_announcement_1.webp')}
|
||||
style={[
|
||||
{
|
||||
aspectRatio: 353 / 160,
|
||||
|
||||
@@ -448,8 +448,8 @@ export function useOTAUpdates() {
|
||||
export const splash = (scheme: 'light' | 'dark') => {
|
||||
const source =
|
||||
scheme === 'light'
|
||||
? require('../../../assets/splash/splash.png')
|
||||
: require('../../../assets/splash/splash-dark.png')
|
||||
? require('../../../assets/splash/splash.webp')
|
||||
: require('../../../assets/splash/splash-dark.webp')
|
||||
|
||||
return {
|
||||
image: RNImage.resolveAssetSource(source)!.uri,
|
||||
|
||||
@@ -13,10 +13,7 @@ export function AppIconImage({
|
||||
const t = useTheme()
|
||||
return (
|
||||
<Image
|
||||
source={platform({
|
||||
ios: icon.iosImage(),
|
||||
android: icon.androidImage(),
|
||||
})}
|
||||
source={icon.image()}
|
||||
style={[
|
||||
{width: size, height: size},
|
||||
platform({
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
export const appIconImages = {
|
||||
default_light: () =>
|
||||
require('../../../../assets/app-icons/android_icon_legacy_light.webp'),
|
||||
default_dark: () =>
|
||||
require('../../../../assets/app-icons/android_icon_legacy_dark.webp'),
|
||||
core_aurora: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_aurora.webp'),
|
||||
core_sunrise: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_sunrise.webp'),
|
||||
core_sunset: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_sunset.webp'),
|
||||
core_midnight: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_midnight.webp'),
|
||||
core_flat_blue: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_flat_blue.webp'),
|
||||
core_flat_white: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_flat_white.webp'),
|
||||
core_flat_black: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_flat_black.webp'),
|
||||
core_classic: () =>
|
||||
require('../../../../assets/app-icons/android_icon_core_classic.webp'),
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
export const appIconImages = {
|
||||
default_light: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_legacy_light.png'),
|
||||
default_dark: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_legacy_dark.png'),
|
||||
core_aurora: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_aurora.png'),
|
||||
core_sunrise: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_sunrise.png'),
|
||||
core_sunset: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_sunset.png'),
|
||||
core_midnight: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_midnight.png'),
|
||||
core_flat_blue: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_flat_blue.png'),
|
||||
core_flat_white: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_flat_white.png'),
|
||||
core_flat_black: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_flat_black.png'),
|
||||
core_classic: () =>
|
||||
require('../../../../assets/app-icons/ios_icon_core_classic.png'),
|
||||
}
|
||||
@@ -4,6 +4,5 @@ import type * as DynamicAppIcon from '@bsky.app/expo-dynamic-app-icon'
|
||||
export type AppIconSet = {
|
||||
id: DynamicAppIcon.IconName
|
||||
name: string
|
||||
iosImage: () => ImageSource
|
||||
androidImage: () => ImageSource
|
||||
image: () => ImageSource
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import {useMemo} from 'react'
|
||||
import {msg} from '@lingui/core/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
|
||||
import {appIconImages} from '#/screens/Settings/AppIconSettings/appIconImages'
|
||||
import {type AppIconSet} from '#/screens/Settings/AppIconSettings/types'
|
||||
|
||||
export function useAppIconSets() {
|
||||
@@ -12,30 +13,12 @@ export function useAppIconSets() {
|
||||
{
|
||||
id: 'default_light',
|
||||
name: _(msg({context: 'Name of app icon variant', message: 'Light'})),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_legacy_light.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_legacy_light.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.default_light,
|
||||
},
|
||||
{
|
||||
id: 'default_dark',
|
||||
name: _(msg({context: 'Name of app icon variant', message: 'Dark'})),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_legacy_dark.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_legacy_dark.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.default_dark,
|
||||
},
|
||||
] satisfies AppIconSet[]
|
||||
|
||||
@@ -46,118 +29,50 @@ export function useAppIconSets() {
|
||||
{
|
||||
id: 'core_aurora',
|
||||
name: _(msg({context: 'Name of app icon variant', message: 'Aurora'})),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_aurora.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_aurora.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_aurora,
|
||||
},
|
||||
// {
|
||||
// id: 'core_bonfire',
|
||||
// name: _(msg({ context: 'Name of app icon variant', message: 'Bonfire' })),
|
||||
// iosImage: () => {
|
||||
// return require(`../../../../assets/app-icons/ios_icon_core_bonfire.png`)
|
||||
// },
|
||||
// androidImage: () => {
|
||||
// return require(`../../../../assets/app-icons/android_icon_core_bonfire.png`)
|
||||
// },
|
||||
// image: appIconImages.core_bonfire,
|
||||
// },
|
||||
{
|
||||
id: 'core_sunrise',
|
||||
name: _(msg({context: 'Name of app icon variant', message: 'Sunrise'})),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_sunrise.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_sunrise.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_sunrise,
|
||||
},
|
||||
{
|
||||
id: 'core_sunset',
|
||||
name: _(msg({context: 'Name of app icon variant', message: 'Sunset'})),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_sunset.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_sunset.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_sunset,
|
||||
},
|
||||
{
|
||||
id: 'core_midnight',
|
||||
name: _(
|
||||
msg({context: 'Name of app icon variant', message: 'Midnight'}),
|
||||
),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_midnight.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_midnight.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_midnight,
|
||||
},
|
||||
{
|
||||
id: 'core_flat_blue',
|
||||
name: _(
|
||||
msg({context: 'Name of app icon variant', message: 'Flat Blue'}),
|
||||
),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_flat_blue.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_flat_blue.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_flat_blue,
|
||||
},
|
||||
{
|
||||
id: 'core_flat_white',
|
||||
name: _(
|
||||
msg({context: 'Name of app icon variant', message: 'Flat White'}),
|
||||
),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_flat_white.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_flat_white.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_flat_white,
|
||||
},
|
||||
{
|
||||
id: 'core_flat_black',
|
||||
name: _(
|
||||
msg({context: 'Name of app icon variant', message: 'Flat Black'}),
|
||||
),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_flat_black.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_flat_black.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_flat_black,
|
||||
},
|
||||
{
|
||||
id: 'core_classic',
|
||||
@@ -167,16 +82,7 @@ export function useAppIconSets() {
|
||||
message: 'Bluesky Classic™',
|
||||
}),
|
||||
),
|
||||
iosImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/ios_icon_core_classic.png`,
|
||||
)
|
||||
},
|
||||
androidImage: () => {
|
||||
return require(
|
||||
`../../../../assets/app-icons/android_icon_core_classic.png`,
|
||||
)
|
||||
},
|
||||
image: appIconImages.core_classic,
|
||||
},
|
||||
] satisfies AppIconSet[]
|
||||
|
||||
|
||||
@@ -12,9 +12,9 @@ import {Logotype} from '#/view/icons/Logotype'
|
||||
import {atoms as a, useTheme} from '#/alf'
|
||||
import {Button, ButtonText} from '#/components/Button'
|
||||
// @ts-expect-error
|
||||
import splashImagePointer from '../../../../assets/illustrations/illustration-mobile.png'
|
||||
import splashImagePointer from '../../../../assets/illustrations/illustration-mobile.webp'
|
||||
// @ts-expect-error
|
||||
import darkSplashImagePointer from '../../../../assets/illustrations/illustration-mobile-dark.png'
|
||||
import darkSplashImagePointer from '../../../../assets/illustrations/illustration-mobile-dark.webp'
|
||||
const splashImageUri = RNImage.resolveAssetSource(splashImagePointer)!.uri
|
||||
const darkSplashImageUri = RNImage.resolveAssetSource(
|
||||
darkSplashImagePointer,
|
||||
|
||||
@@ -42,8 +42,8 @@ export const Logo = forwardRef(function LogoImpl(props: Props, ref) {
|
||||
isJapanLogo
|
||||
? require('../../../assets/icons/custom_logo_japan.svg')
|
||||
: size > 100
|
||||
? require('../../../assets/kawaii.png')
|
||||
: require('../../../assets/kawaii_smol.png')
|
||||
? require('../../../assets/kawaii.webp')
|
||||
: require('../../../assets/kawaii_smol.webp')
|
||||
}
|
||||
accessibilityLabel="Bluesky"
|
||||
accessibilityHint=""
|
||||
|
||||
Reference in New Issue
Block a user