From 3842571b97dadbd067ca43ea543e6052792143d7 Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Sat, 14 Mar 2026 12:09:39 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=90=8D=E9=94=99=E8=AF=AF=EF=BC=8C=E5=B9=B6=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E5=AF=B9=E4=B9=8B=E5=89=8D=E7=89=88=E6=9C=AC=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/AddSteam.ets | 4 ++-- entry/src/main/ets/pages/Base.ets | 29 ++++++++++++++++++++++++++- entry/src/main/ets/pages/Detail.ets | 27 ++++++++++++++++++++++--- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/entry/src/main/ets/pages/AddSteam.ets b/entry/src/main/ets/pages/AddSteam.ets index 47f3e70..a5fac9a 100644 --- a/entry/src/main/ets/pages/AddSteam.ets +++ b/entry/src/main/ets/pages/AddSteam.ets @@ -476,7 +476,7 @@ export struct SteamConfirmLink { steamID: auth.steamid.toString(), serialNumber: authenticator.serialNumber.toString(), revocationCode: authenticator.revocationCode, - shardSecret: helper.encodeToStringSync(authenticator.sharedSecret), + sharedSecret: helper.encodeToStringSync(authenticator.sharedSecret), tokenGID: authenticator.tokenGid, identitySecret: helper.encodeToStringSync(authenticator.identitySecret), uri: authenticator.uri, @@ -623,7 +623,7 @@ export struct SteamConfirmTransferAuthenticator { steamID: auth.steamid.toString(), serialNumber: replacementToken.serialNumber!.toString(), revocationCode: replacementToken.revocationCode!, - shardSecret: helper.encodeToStringSync(replacementToken.sharedSecret), + sharedSecret: helper.encodeToStringSync(replacementToken.sharedSecret), tokenGID: replacementToken.tokenGid!, identitySecret: helper.encodeToStringSync(replacementToken.identitySecret), uri: replacementToken.uri!, diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index 928656d..3ebd2c2 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -26,7 +26,7 @@ export class SteamAuthData { public steamID: string = "" public serialNumber: string = "" public revocationCode: string = "" - public shardSecret: string = "" + public sharedSecret: string = "" public tokenGID: string = "" public identitySecret: string = "" public uri: string = "" @@ -300,6 +300,33 @@ export class AuthDataStore { } for (let index = 0; index < result.length; index++) { const element = result[index]; + if(element.issuer.toLowerCase()=='steam'){ + let authdata = JSON.parse(element.external) as Record + // 兼容前面版本导出的备份文件 + if (authdata["sharedSecret"] == undefined){ + let data = new SteamAuthData() + data.sharedSecret = authdata["shardSecret"] as string + + data.accountName = authdata["accountName"] as string + data.steamID = authdata["steamID"] as string + data.serialNumber = authdata["serialNumber"] as string + data.revocationCode = authdata["revocationCode"] as string + data.tokenGID = authdata["tokenGID"] as string + data.identitySecret = authdata["identitySecret"] as string + data.uri = authdata["uri"] as string + data.deviceID = authdata["deviceID"] as string + data.secret1 = authdata["secret1"] as string + data.accessToken = authdata["accessToken"] as string + data.refreshToken = authdata["refreshToken"] as string + + Object.entries(data).forEach((pair: [string, string]) => { + if (pair[1] == undefined) { + throw new Error(`缺少 ${pair[0]}`) + } + }) + element.external = JSON.stringify(data) + } + } element.id = this.next++ if (this.kvStore) { let authString = JSON.stringify(element) diff --git a/entry/src/main/ets/pages/Detail.ets b/entry/src/main/ets/pages/Detail.ets index a8d0a8e..b115473 100644 --- a/entry/src/main/ets/pages/Detail.ets +++ b/entry/src/main/ets/pages/Detail.ets @@ -48,7 +48,7 @@ function buildSteamInput(params: PromptParams) { data.steamID = authdata["steam_id"] as string data.serialNumber = authdata["serial_number"] as string data.revocationCode = authdata["revocation_code"] as string - data.shardSecret = authdata["shared_secret"] as string + data.sharedSecret = authdata["shared_secret"] as string data.tokenGID = authdata["token_gid"] as string data.identitySecret = authdata["identity_secret"] as string data.uri = authdata["uri"] as string @@ -126,7 +126,28 @@ export struct Detail { return } try { - this.steamAuthData = JSON.parse(this.item.external) as SteamAuthData + let authdata = JSON.parse(this.item.external) as Record + this.steamAuthData = new SteamAuthData() + + if (authdata["sharedSecret"] == undefined){ + this.steamAuthData.sharedSecret = authdata["shardSecret"] as string + }else{ + this.steamAuthData.sharedSecret = authdata["sharedSecret"] as string + } + + this.steamAuthData.accountName = authdata["accountName"] as string + this.steamAuthData.steamID = authdata["steamID"] as string + this.steamAuthData.serialNumber = authdata["serialNumber"] as string + this.steamAuthData.revocationCode = authdata["revocationCode"] as string + this.steamAuthData.tokenGID = authdata["tokenGID"] as string + this.steamAuthData.identitySecret = authdata["identitySecret"] as string + this.steamAuthData.uri = authdata["uri"] as string + this.steamAuthData.deviceID = authdata["deviceID"] as string + this.steamAuthData.secret1 = authdata["secret1"] as string + this.steamAuthData.accessToken = authdata["accessToken"] as string + this.steamAuthData.refreshToken = authdata["refreshToken"] as string + + let parts = this.steamAuthData.refreshToken.split(".") let base64 = new util.Base64Helper() let data = base64.decodeSync(parts[1], util.Type.BASIC_URL_SAFE) @@ -161,7 +182,7 @@ export struct Detail { try { scanBarcode.startScanForResult(getContext(this), options).then((result: scanBarcode.ScanResult) => { this.steamClient.approveQRLogin(this.steamAuthData.steamID, this.steamAuthData.refreshToken, - this.steamAuthData.shardSecret, false, result.originalValue, + this.steamAuthData.sharedSecret, false, result.originalValue, (err) => { if (err) { this.getUIContext().getPromptAction().showToast({ From 798c8472e9aa2d0fa1cfbcdd45b3696720eb5867 Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Sun, 15 Mar 2026 14:11:20 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=AD=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=20=EF=BC=88=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=89=20=E5=A2=9E=E5=8A=A0=E5=9B=BE=E6=A0=87=E5=8C=85?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8F=8A=E5=9B=BE=E6=A0=87=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/AddSteam.ets | 2 + entry/src/main/ets/pages/Base.ets | 14 ++++- entry/src/main/ets/pages/Detail.ets | 8 +-- entry/src/main/ets/pages/Index.ets | 49 ++++++------------ entry/src/main/ets/pages/Setting.ets | 7 ++- entry/src/main/ets/pages/proxy/Proxy.ets | 1 + entry/src/main/resources/rawfile/Aliyun.png | Bin 5207 -> 0 bytes .../src/main/resources/rawfile/Cloudflare.png | Bin 6937 -> 0 bytes .../src/main/resources/rawfile/Epic Games.png | Bin 7678 -> 0 bytes entry/src/main/resources/rawfile/Github.png | Bin 15446 -> 0 bytes entry/src/main/resources/rawfile/Gitlab.png | Bin 12572 -> 0 bytes entry/src/main/resources/rawfile/Google.png | Bin 14171 -> 0 bytes entry/src/main/resources/rawfile/Huawei.png | Bin 42210 -> 0 bytes .../src/main/resources/rawfile/Jetbrains.png | Bin 13406 -> 0 bytes .../src/main/resources/rawfile/Microsoft.png | Bin 1602 -> 0 bytes .../src/main/resources/rawfile/Namecheap.png | Bin 14964 -> 0 bytes .../main/resources/rawfile/NeteaseMail.png | Bin 23068 -> 0 bytes entry/src/main/resources/rawfile/Nintendo.png | Bin 16796 -> 0 bytes entry/src/main/resources/rawfile/Nvidia.png | Bin 10272 -> 0 bytes entry/src/main/resources/rawfile/Steam.png | Bin 21258 -> 0 bytes entry/src/main/resources/rawfile/Twitter.png | Bin 4407 -> 0 bytes entry/src/main/resources/rawfile/Ubisoft.png | Bin 15266 -> 0 bytes .../rawfile/icons/token_image_1and1.svg | 1 + .../rawfile/icons/token_image_1password.svg | 1 + .../rawfile/icons/token_image_23andme.svg | 1 + .../rawfile/icons/token_image_adafruit.svg | 1 + .../rawfile/icons/token_image_adguard.svg | 1 + .../rawfile/icons/token_image_adobe.svg | 1 + .../rawfile/icons/token_image_airbnb.svg | 1 + .../rawfile/icons/token_image_airbrake.svg | 1 + .../rawfile/icons/token_image_airtable.svg | 1 + .../rawfile/icons/token_image_allegropl.svg | 1 + .../rawfile/icons/token_image_alwaysdata.svg | 1 + .../rawfile/icons/token_image_amazon.svg | 1 + .../icons/token_image_amazonwebservices.svg | 1 + .../rawfile/icons/token_image_angellist.svg | 1 + .../rawfile/icons/token_image_animebytes.svg | 1 + .../rawfile/icons/token_image_anonaddy.svg | 1 + .../rawfile/icons/token_image_apache.svg | 1 + .../rawfile/icons/token_image_apple.svg | 1 + .../rawfile/icons/token_image_appveyor.svg | 1 + .../rawfile/icons/token_image_arenanet.svg | 1 + .../icons/token_image_atlantic_net.svg | 1 + .../rawfile/icons/token_image_atlassian.svg | 1 + .../rawfile/icons/token_image_avm.svg | 1 + .../rawfile/icons/token_image_backblaze.svg | 1 + .../rawfile/icons/token_image_battlenet.svg | 1 + .../rawfile/icons/token_image_betterment.svg | 1 + .../rawfile/icons/token_image_binance.svg | 1 + .../rawfile/icons/token_image_bitbucket.svg | 1 + .../rawfile/icons/token_image_bitcoin.svg | 1 + .../rawfile/icons/token_image_bitdefender.svg | 1 + .../rawfile/icons/token_image_bitfinex.svg | 1 + .../rawfile/icons/token_image_bitmex.svg | 1 + .../rawfile/icons/token_image_bitpanda.svg | 1 + .../rawfile/icons/token_image_bitstamp.svg | 1 + .../rawfile/icons/token_image_bittrex.svg | 1 + .../rawfile/icons/token_image_bitwala.svg | 1 + .../rawfile/icons/token_image_bitwarden.svg | 1 + .../icons/token_image_blockchain_info.svg | 1 + .../rawfile/icons/token_image_bugcrowd.svg | 1 + .../rawfile/icons/token_image_cexio.svg | 1 + .../icons/token_image_church_tools.svg | 1 + .../rawfile/icons/token_image_cisco.svg | 1 + .../icons/token_image_cloud_download.svg | 1 + .../rawfile/icons/token_image_cloudflare.svg | 1 + .../rawfile/icons/token_image_cobranded.svg | 1 + .../rawfile/icons/token_image_codegiant.svg | 1 + .../rawfile/icons/token_image_coinbase.svg | 1 + .../rawfile/icons/token_image_coinjar.svg | 1 + .../icons/token_image_computerbase.svg | 1 + .../icons/token_image_connectwise_manage.svg | 1 + .../rawfile/icons/token_image_cozycloud.svg | 1 + .../rawfile/icons/token_image_crowdin.svg | 1 + .../rawfile/icons/token_image_dashlane.svg | 1 + .../rawfile/icons/token_image_debian.svg | 1 + .../rawfile/icons/token_image_degiro.svg | 1 + .../rawfile/icons/token_image_denic.svg | 1 + .../icons/token_image_deutsche_bahn.svg | 1 + .../rawfile/icons/token_image_diaspora.svg | 1 + .../rawfile/icons/token_image_digidentity.svg | 1 + .../icons/token_image_digital_ocean.svg | 1 + .../rawfile/icons/token_image_discord.svg | 1 + .../rawfile/icons/token_image_discourse.svg | 1 + .../rawfile/icons/token_image_disroot.svg | 1 + .../rawfile/icons/token_image_docker.svg | 1 + .../rawfile/icons/token_image_docusign.svg | 1 + .../rawfile/icons/token_image_dreamhost.svg | 1 + .../rawfile/icons/token_image_dropbox.svg | 1 + .../rawfile/icons/token_image_drupal.svg | 1 + .../icons/token_image_electronic_arts.svg | 1 + .../rawfile/icons/token_image_email.svg | 1 + .../rawfile/icons/token_image_epic_games.svg | 1 + .../rawfile/icons/token_image_etsy.svg | 1 + .../rawfile/icons/token_image_eveonline.svg | 1 + .../rawfile/icons/token_image_evernote.svg | 1 + .../rawfile/icons/token_image_facebook.svg | 1 + .../rawfile/icons/token_image_faceit.svg | 1 + .../rawfile/icons/token_image_fanatical.svg | 1 + .../rawfile/icons/token_image_fastmail.svg | 1 + .../rawfile/icons/token_image_feishu.svg | 7 +++ .../rawfile/icons/token_image_figma.svg | 1 + .../rawfile/icons/token_image_fingerprint.svg | 1 + .../rawfile/icons/token_image_finnair.svg | 1 + .../rawfile/icons/token_image_firefox.svg | 1 + .../icons/token_image_flight_takeoff.svg | 1 + .../rawfile/icons/token_image_floatplane.svg | 1 + .../rawfile/icons/token_image_friendica.svg | 1 + .../rawfile/icons/token_image_fritz.svg | 1 + .../rawfile/icons/token_image_gamepad.svg | 1 + .../rawfile/icons/token_image_gandi.svg | 1 + .../rawfile/icons/token_image_git.svg | 1 + .../rawfile/icons/token_image_gitea.svg | 1 + .../rawfile/icons/token_image_github.svg | 1 + .../rawfile/icons/token_image_gitlab.svg | 1 + .../rawfile/icons/token_image_gmx.svg | 1 + .../rawfile/icons/token_image_godaddy.svg | 1 + .../rawfile/icons/token_image_gogs.svg | 1 + .../rawfile/icons/token_image_google.svg | 1 + .../rawfile/icons/token_image_govuk.svg | 1 + .../rawfile/icons/token_image_grav.svg | 1 + .../rawfile/icons/token_image_greenhost.svg | 1 + .../rawfile/icons/token_image_hackerone.svg | 1 + .../rawfile/icons/token_image_heroku.svg | 1 + .../rawfile/icons/token_image_hetzner.svg | 1 + .../rawfile/icons/token_image_hitbtc.svg | 1 + .../rawfile/icons/token_image_hmrc.svg | 1 + .../icons/token_image_home_assistant.svg | 1 + .../rawfile/icons/token_image_hover.svg | 1 + .../icons/token_image_humblebundle.svg | 1 + .../icons/token_image_hurricane_electric.svg | 1 + .../rawfile/icons/token_image_ibm.svg | 1 + .../rawfile/icons/token_image_iconomi.svg | 1 + .../rawfile/icons/token_image_ifttt.svg | 1 + .../rawfile/icons/token_image_ing.svg | 1 + .../rawfile/icons/token_image_instagram.svg | 1 + .../rawfile/icons/token_image_inwx.svg | 1 + .../rawfile/icons/token_image_itchio.svg | 1 + .../rawfile/icons/token_image_jagex.svg | 1 + .../rawfile/icons/token_image_jetbrains.svg | 1 + .../rawfile/icons/token_image_joomla.svg | 1 + .../rawfile/icons/token_image_keeper.svg | 1 + .../rawfile/icons/token_image_kickstarter.svg | 1 + .../rawfile/icons/token_image_kraken.svg | 1 + .../rawfile/icons/token_image_kucoin.svg | 1 + .../rawfile/icons/token_image_lastpass.svg | 1 + .../rawfile/icons/token_image_librenms.svg | 1 + .../rawfile/icons/token_image_lichess.svg | 1 + .../rawfile/icons/token_image_linkedin.svg | 1 + .../rawfile/icons/token_image_linode.svg | 1 + .../rawfile/icons/token_image_liqui.svg | 1 + .../rawfile/icons/token_image_livelyme.svg | 1 + .../rawfile/icons/token_image_lobsters.svg | 1 + .../icons/token_image_localbitcoins.svg | 1 + .../rawfile/icons/token_image_localmonero.svg | 1 + .../rawfile/icons/token_image_login_gov.svg | 1 + .../rawfile/icons/token_image_logmein.svg | 1 + .../rawfile/icons/token_image_mailbox.svg | 1 + .../rawfile/icons/token_image_mailchimp.svg | 1 + .../rawfile/icons/token_image_mailcow.svg | 1 + .../rawfile/icons/token_image_mailgun.svg | 1 + .../rawfile/icons/token_image_mailru.svg | 1 + .../rawfile/icons/token_image_mapbox.svg | 1 + .../rawfile/icons/token_image_mastodon.svg | 1 + .../rawfile/icons/token_image_matomo.svg | 1 + .../rawfile/icons/token_image_mega.svg | 1 + .../icons/token_image_mercadolibre.svg | 1 + .../rawfile/icons/token_image_microsoft.svg | 1 + .../icons/token_image_microsoft_teams.svg | 1 + .../rawfile/icons/token_image_migadu.svg | 1 + .../icons/token_image_miles_and_more.svg | 1 + .../rawfile/icons/token_image_mint.svg | 1 + .../rawfile/icons/token_image_miraheze.svg | 1 + .../rawfile/icons/token_image_mixer.svg | 1 + .../rawfile/icons/token_image_mongodb.svg | 1 + .../rawfile/icons/token_image_mvpsnet.svg | 1 + .../rawfile/icons/token_image_namecheap.svg | 1 + .../rawfile/icons/token_image_namecom.svg | 1 + .../rawfile/icons/token_image_nas.svg | 1 + .../rawfile/icons/token_image_netcup.svg | 1 + .../rawfile/icons/token_image_nextcloud.svg | 1 + .../rawfile/icons/token_image_nexus_mods.svg | 1 + .../rawfile/icons/token_image_nintendo.svg | 1 + .../icons/token_image_no_starch_press.svg | 1 + .../rawfile/icons/token_image_npm.svg | 1 + .../rawfile/icons/token_image_oculus.svg | 1 + .../rawfile/icons/token_image_office.svg | 1 + .../rawfile/icons/token_image_okta.svg | 1 + .../rawfile/icons/token_image_online.svg | 1 + .../rawfile/icons/token_image_openvz.svg | 1 + .../rawfile/icons/token_image_opnsense.svg | 1 + .../rawfile/icons/token_image_orcid.svg | 1 + .../rawfile/icons/token_image_origin.svg | 1 + .../rawfile/icons/token_image_ovh.svg | 1 + .../rawfile/icons/token_image_packet.svg | 1 + .../icons/token_image_parsecgaming.svg | 1 + .../icons/token_image_passwordstate.svg | 1 + .../rawfile/icons/token_image_patreon.svg | 1 + .../rawfile/icons/token_image_paypal.svg | 1 + .../rawfile/icons/token_image_paysafecard.svg | 1 + .../icons/token_image_paywithprivacy.svg | 1 + .../rawfile/icons/token_image_pcloud.svg | 1 + .../rawfile/icons/token_image_phabricator.svg | 1 + .../rawfile/icons/token_image_phpmyadmin.svg | 1 + .../rawfile/icons/token_image_pluralsight.svg | 1 + .../rawfile/icons/token_image_plurk.svg | 1 + .../rawfile/icons/token_image_posteo.svg | 1 + .../rawfile/icons/token_image_pretix.svg | 1 + .../rawfile/icons/token_image_prey.svg | 1 + .../token_image_private_internet_access.svg | 1 + .../rawfile/icons/token_image_protonmail.svg | 1 + .../rawfile/icons/token_image_proxmox.svg | 1 + .../rawfile/icons/token_image_pushover.svg | 1 + .../rawfile/icons/token_image_pypi.svg | 1 + .../icons/token_image_python_anywhere.svg | 1 + .../rawfile/icons/token_image_rackspace.svg | 1 + .../rawfile/icons/token_image_reddit.svg | 1 + .../rawfile/icons/token_image_revolt.svg | 1 + .../rawfile/icons/token_image_ripe_ncc.svg | 1 + .../rawfile/icons/token_image_ripio.svg | 1 + .../rawfile/icons/token_image_robinhood.svg | 1 + .../icons/token_image_rocketbeanstv.svg | 1 + .../rawfile/icons/token_image_rockstar.svg | 1 + .../rawfile/icons/token_image_rss.svg | 1 + .../rawfile/icons/token_image_sap.svg | 1 + .../rawfile/icons/token_image_scaleway.svg | 1 + .../rawfile/icons/token_image_school.svg | 1 + .../rawfile/icons/token_image_sciebo.svg | 1 + .../rawfile/icons/token_image_sentry.svg | 1 + .../rawfile/icons/token_image_sevdesk.svg | 1 + .../rawfile/icons/token_image_skrill.svg | 1 + .../rawfile/icons/token_image_slack.svg | 1 + .../rawfile/icons/token_image_snapchat.svg | 1 + .../rawfile/icons/token_image_sophos.svg | 1 + .../rawfile/icons/token_image_sourceforge.svg | 1 + .../rawfile/icons/token_image_squarespace.svg | 1 + .../icons/token_image_standardnotes.svg | 1 + .../rawfile/icons/token_image_starcitizen.svg | 1 + .../rawfile/icons/token_image_steam.svg | 1 + .../rawfile/icons/token_image_stripe.svg | 1 + .../rawfile/icons/token_image_sync.svg | 1 + .../rawfile/icons/token_image_synology.svg | 1 + .../rawfile/icons/token_image_teahub.svg | 1 + .../rawfile/icons/token_image_teamviewer.svg | 1 + .../token_image_tencent_cloud_services.svg | 1 + .../rawfile/icons/token_image_terminal.svg | 1 + .../icons/token_image_todoalojamiento.svg | 1 + .../rawfile/icons/token_image_transip.svg | 1 + .../rawfile/icons/token_image_trello.svg | 1 + .../rawfile/icons/token_image_tumblr.svg | 1 + .../rawfile/icons/token_image_turbotax.svg | 1 + .../rawfile/icons/token_image_tutanota.svg | 1 + .../icons/token_image_tuwien_ac_at.svg | 1 + .../rawfile/icons/token_image_twilio.svg | 1 + .../rawfile/icons/token_image_twitch.svg | 1 + .../rawfile/icons/token_image_twitter.svg | 1 + .../rawfile/icons/token_image_uber.svg | 1 + .../rawfile/icons/token_image_ubisoft.svg | 1 + .../rawfile/icons/token_image_ubnt.svg | 1 + .../rawfile/icons/token_image_ubuntu_one.svg | 1 + .../rawfile/icons/token_image_unity.svg | 1 + .../rawfile/icons/token_image_uphold.svg | 1 + .../rawfile/icons/token_image_usaa.svg | 1 + .../icons/token_image_vagrant_cloud.svg | 1 + .../rawfile/icons/token_image_vexxhost.svg | 1 + .../rawfile/icons/token_image_vk.svg | 1 + .../rawfile/icons/token_image_vultr.svg | 1 + .../rawfile/icons/token_image_wallabag.svg | 1 + .../rawfile/icons/token_image_wallet.svg | 1 + .../rawfile/icons/token_image_wargaming.svg | 1 + .../rawfile/icons/token_image_wasabi.svg | 1 + .../rawfile/icons/token_image_weclapp.svg | 1 + .../rawfile/icons/token_image_wikimedia.svg | 1 + .../rawfile/icons/token_image_wordpress.svg | 1 + .../rawfile/icons/token_image_workplace.svg | 1 + .../rawfile/icons/token_image_xero.svg | 1 + .../rawfile/icons/token_image_xerox.svg | 1 + .../rawfile/icons/token_image_xing.svg | 1 + .../icons/token_image_yandex_money.svg | 1 + .../rawfile/icons/token_image_zapier.svg | 1 + .../rawfile/icons/token_image_zendesk.svg | 1 + .../rawfile/icons/token_image_zoho.svg | 1 + .../rawfile/icons/token_image_zoom.svg | 1 + 283 files changed, 309 insertions(+), 39 deletions(-) delete mode 100644 entry/src/main/resources/rawfile/Aliyun.png delete mode 100644 entry/src/main/resources/rawfile/Cloudflare.png delete mode 100644 entry/src/main/resources/rawfile/Epic Games.png delete mode 100644 entry/src/main/resources/rawfile/Github.png delete mode 100644 entry/src/main/resources/rawfile/Gitlab.png delete mode 100644 entry/src/main/resources/rawfile/Google.png delete mode 100644 entry/src/main/resources/rawfile/Huawei.png delete mode 100644 entry/src/main/resources/rawfile/Jetbrains.png delete mode 100644 entry/src/main/resources/rawfile/Microsoft.png delete mode 100644 entry/src/main/resources/rawfile/Namecheap.png delete mode 100644 entry/src/main/resources/rawfile/NeteaseMail.png delete mode 100644 entry/src/main/resources/rawfile/Nintendo.png delete mode 100644 entry/src/main/resources/rawfile/Nvidia.png delete mode 100644 entry/src/main/resources/rawfile/Steam.png delete mode 100644 entry/src/main/resources/rawfile/Twitter.png delete mode 100644 entry/src/main/resources/rawfile/Ubisoft.png create mode 100644 entry/src/main/resources/rawfile/icons/token_image_1and1.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_1password.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_23andme.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_adafruit.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_adguard.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_adobe.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_airbnb.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_airbrake.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_airtable.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_allegropl.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_amazon.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_angellist.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_animebytes.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_apache.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_apple.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_appveyor.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_arenanet.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_atlassian.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_avm.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_backblaze.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_battlenet.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_betterment.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_binance.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitmex.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bittrex.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitwala.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cexio.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_church_tools.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cisco.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cobranded.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_codegiant.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_coinbase.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_coinjar.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_computerbase.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_crowdin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_dashlane.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_debian.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_degiro.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_denic.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_diaspora.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_digidentity.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_discord.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_discourse.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_disroot.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_docker.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_docusign.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_dropbox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_drupal.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_email.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_epic_games.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_etsy.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_eveonline.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_evernote.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_facebook.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_faceit.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_fanatical.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_fastmail.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_feishu.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_figma.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_finnair.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_firefox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_floatplane.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_friendica.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_fritz.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gamepad.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gandi.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_git.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gitea.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_github.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gitlab.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gmx.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_godaddy.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_gogs.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_google.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_govuk.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_grav.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_greenhost.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hackerone.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_heroku.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hetzner.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hmrc.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hover.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ibm.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_iconomi.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ifttt.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ing.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_instagram.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_inwx.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_itchio.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_jagex.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_joomla.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_keeper.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_kraken.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_kucoin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_lastpass.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_librenms.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_lichess.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_linkedin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_linode.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_liqui.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_livelyme.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_lobsters.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_localmonero.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_login_gov.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_logmein.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailbox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailcow.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailgun.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailru.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mapbox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mastodon.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_matomo.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mega.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_microsoft.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_migadu.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mint.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_miraheze.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mixer.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mongodb.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_namecheap.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_namecom.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_nas.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_netcup.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_nintendo.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_npm.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_oculus.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_office.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_okta.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_online.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_openvz.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_opnsense.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_orcid.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_origin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ovh.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_packet.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_patreon.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_paypal.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_pcloud.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_phabricator.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_plurk.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_posteo.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_pretix.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_prey.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_protonmail.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_proxmox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_pushover.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_pypi.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_rackspace.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_reddit.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_revolt.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ripio.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_robinhood.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_rockstar.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_rss.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sap.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_scaleway.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_school.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sciebo.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sentry.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_skrill.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_slack.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_snapchat.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sophos.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_squarespace.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_steam.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_stripe.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_sync.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_synology.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_teahub.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_terminal.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_transip.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_trello.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_tumblr.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_turbotax.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_tutanota.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_twilio.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_twitch.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_twitter.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_uber.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubnt.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_unity.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_uphold.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_usaa.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_vk.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_vultr.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wallabag.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wallet.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wargaming.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wasabi.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_weclapp.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_wordpress.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_workplace.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_xero.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_xerox.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_xing.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_zapier.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_zendesk.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_zoho.svg create mode 100644 entry/src/main/resources/rawfile/icons/token_image_zoom.svg diff --git a/entry/src/main/ets/pages/AddSteam.ets b/entry/src/main/ets/pages/AddSteam.ets index a5fac9a..4b621b6 100644 --- a/entry/src/main/ets/pages/AddSteam.ets +++ b/entry/src/main/ets/pages/AddSteam.ets @@ -468,6 +468,7 @@ export struct SteamConfirmLink { digits: 5, password: token, external: "", + tokenIconPath: "" } let helper = new util.Base64Helper() @@ -615,6 +616,7 @@ export struct SteamConfirmTransferAuthenticator { digits: 5, password: "", external: "", + tokenIconPath: "" } let helper = new util.Base64Helper() diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index 3ebd2c2..c663891 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -19,6 +19,7 @@ export class AuthData { digits: number = 6 password: string = "" external: string = "" + tokenIconPath: string = "" } export class SteamAuthData { @@ -67,6 +68,9 @@ export class AuthDataStore { for (let i = 0; i < data.length; i++) { let element = data[i]; let authdata = JSON.parse(element.value.value as string) as AuthData + if (authdata.tokenIconPath == undefined) { + authdata.tokenIconPath = ""; + } authdata.password = this.generatePassword(authdata) this.items.push(authdata) if (authdata.id >= this.next) { @@ -229,6 +233,7 @@ export class AuthDataStore { digits: parameter.digits == googleapi.MigrationPayload.DigitCount.DIGIT_COUNT_EIGHT ? 8 : 6, password: "", external: "", + tokenIconPath: "" } authdata.password = this.generatePassword(authdata) this.next++ @@ -271,6 +276,7 @@ export class AuthDataStore { digits: digits == "8" ? 8 : digits == "7" ? 7 : 6, password: "", external: "", + tokenIconPath: "" } if (issuer == "Steam") { authdata.digits = 5 @@ -293,6 +299,9 @@ export class AuthDataStore { for (let index = 0; index < result.length; index++) { const element = result[index]; Object.entries(element).forEach((pair: [string, string]) => { + if (pair[0] == 'password' || pair[0] == 'tokenIconPath') { + return; + } if (pair[1] == undefined) { throw new Error(`第 ${index} 个令牌密钥缺少 ${pair[0]}`) } @@ -300,10 +309,10 @@ export class AuthDataStore { } for (let index = 0; index < result.length; index++) { const element = result[index]; - if(element.issuer.toLowerCase()=='steam'){ + if (element.issuer.toLowerCase() == 'steam') { let authdata = JSON.parse(element.external) as Record // 兼容前面版本导出的备份文件 - if (authdata["sharedSecret"] == undefined){ + if (authdata["sharedSecret"] == undefined) { let data = new SteamAuthData() data.sharedSecret = authdata["shardSecret"] as string @@ -328,6 +337,7 @@ export class AuthDataStore { } } element.id = this.next++ + if (this.kvStore) { let authString = JSON.stringify(element) this.kvStore.put(`/data/auth/${element.id}`, authString) diff --git a/entry/src/main/ets/pages/Detail.ets b/entry/src/main/ets/pages/Detail.ets index b115473..bc8bdd0 100644 --- a/entry/src/main/ets/pages/Detail.ets +++ b/entry/src/main/ets/pages/Detail.ets @@ -129,9 +129,9 @@ export struct Detail { let authdata = JSON.parse(this.item.external) as Record this.steamAuthData = new SteamAuthData() - if (authdata["sharedSecret"] == undefined){ + if (authdata["sharedSecret"] == undefined) { this.steamAuthData.sharedSecret = authdata["shardSecret"] as string - }else{ + } else { this.steamAuthData.sharedSecret = authdata["sharedSecret"] as string } @@ -146,8 +146,8 @@ export struct Detail { this.steamAuthData.secret1 = authdata["secret1"] as string this.steamAuthData.accessToken = authdata["accessToken"] as string this.steamAuthData.refreshToken = authdata["refreshToken"] as string - - + + let parts = this.steamAuthData.refreshToken.split(".") let base64 = new util.Base64Helper() let data = base64.decodeSync(parts[1], util.Type.BASIC_URL_SAFE) diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 33bef22..14ff27a 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -169,38 +169,9 @@ struct Index { } } - private vendors: Map= new Map([ - ["google", "Google.png"], - ["microsoft", "Microsoft.png"], - ["github", "Github.png"], - ["gitlab", "Gitlab.png"], - ["steam", "Steam.png"], - ["huawei", "Huawei.png"], - ["aliyun", "Aliyun.png"], - ["namecheap", "Namecheap.png"], - ["neteasemail", "NeteaseMail.png"], - ["nintendo", "Nintendo.png"], - ["nintendo account", "Nintendo.png"], - ["epic games", "Epic Games.png"], - ["cloudflare", "Cloudflare.png"], - ["twitter", "Twitter.png"], - ["nvidia", "Nvidia.png"], - ["ubisoft", "Ubisoft.png"], - ["uplay", "Ubisoft.png"], - ["jetbrains", "Jetbrains.png"], - ]); - @Builder - Logo(issuer: string) { - if (this.vendors.has(issuer.toLowerCase())) { - Image($rawfile(this.vendors.get(issuer.toLowerCase()))) - .width(40) - .padding(5) - .margin(10) - .backgroundColor($r("app.color.vendor_background_color")) - .borderRadius(20) - .draggable(false) - } else { + Logo(issuer: string, iconPath: string) { + if (iconPath == "") { SymbolGlyph($r("sys.symbol.person")) .fontSize(30) .padding(5) @@ -208,7 +179,21 @@ struct Index { .fontColor([$r("app.color.vendor_icon_color")]) .backgroundColor($r("app.color.vendor_background_color")) .borderRadius(20) + } else { + //todo 添加图标包管理 + //todo 添加图标显示 } + // if (this.vendors.has(issuer.toLowerCase())) { + // Image($rawfile(this.vendors.get(issuer.toLowerCase()))) + // .width(40) + // .padding(5) + // .margin(10) + // .backgroundColor($r("app.color.vendor_background_color")) + // .borderRadius(20) + // .draggable(false) + // } else { + // + // } } build() { @@ -237,7 +222,7 @@ struct Index { ForEach(this.items, (item: AuthData, index: number) => { ListItem() { Row() { - this.Logo(item.issuer) + this.Logo(item.issuer, item.tokenIconPath) Column() { Text(item.alias) .fontSize(20) diff --git a/entry/src/main/ets/pages/Setting.ets b/entry/src/main/ets/pages/Setting.ets index a6a4d87..9ed1dab 100644 --- a/entry/src/main/ets/pages/Setting.ets +++ b/entry/src/main/ets/pages/Setting.ets @@ -175,7 +175,12 @@ export struct Setting { return } let file = fs.openSync(uris[0], fs.OpenMode.READ_WRITE) - let data = JSON.stringify(this.authDataStore.items) + let data = JSON.stringify(this.authDataStore.items, (key: string, value: string | number) => { + if (key == "password" || key == "tokenIconPath") { + return undefined; + } + return value; + }) fs.writeSync(file.fd, data) fs.close(file) this.getUIContext().getPromptAction().showToast({ diff --git a/entry/src/main/ets/pages/proxy/Proxy.ets b/entry/src/main/ets/pages/proxy/Proxy.ets index 745c85e..905d870 100644 --- a/entry/src/main/ets/pages/proxy/Proxy.ets +++ b/entry/src/main/ets/pages/proxy/Proxy.ets @@ -1,2 +1,3 @@ export let proxyServer = "" + export let proxyAuthToken = "" diff --git a/entry/src/main/resources/rawfile/Aliyun.png b/entry/src/main/resources/rawfile/Aliyun.png deleted file mode 100644 index 75c67bf6e9ffd320f055262f6a4d56dfcd77bf8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5207 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 diff --git a/entry/src/main/resources/rawfile/Cloudflare.png b/entry/src/main/resources/rawfile/Cloudflare.png deleted file mode 100644 index 2c0c470d97d3df844ee1f712fda69614eeda39e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6937 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 diff --git a/entry/src/main/resources/rawfile/Epic Games.png b/entry/src/main/resources/rawfile/Epic Games.png deleted file mode 100644 index c7990c9c68e188f3647faaa8f60851e27a2574a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7678 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 T4RSsG{sT~wQ6{3sEy8FelDdd0h@}` zs>^0=Gx-)JkR>P>ZTOEP;&#^N*>BWt`lO{FPv6Wha!SEN{tff|>)iXScgx>My*cx_ zt~RR&nePp5494{d)h8=bO)Nx$tcEe0%Gdb?bas7sLYf zuVF68|Nh|Q*~|IydDqUpFx?(o@W1f+mg;}%-E|F@&%Ios$I9@-UYLPHjX}VNL16}i zg8^eh0u#eQ7KSEH29}W^acwC>$km7J%dZyS|8v;?|LXp_&6iK@{D0ux3co*DxBYE* z#C=`%zHj=k#m&u?n=iH9TM=GXmS!&(U-f)uTGWf5_iI0HOjchNzO0%(weCVsP0iQf zHw8<>%kIygd)wykwWVoqd;C}u>Ykl>aO~LC^}SwOO=g~*HPvhl@9(F-=HA>Iyua%E zTc9~R@7ruC%vt*X>CKe=Z_K6NO047a+G<|;nLU2julH$8&{UccYaX}c$L9ULr*8fD zow{L9(6{$y%4;K}rxz7}|5{Y{Cup-y$%k7XHm6?s{cX>`&((?v)qL^U@w(HC^7B7@ zzGz{2P)kmGHe`W1{IO%fu^m!6BRRud` zzFl9v@pf@V>)L5XKac;3Uc9+ly#Ls{7j6uCIlZq#;&i*Rf?NWxa)#~p3_jcYnGxy=!10yx5!86$gV5yQ4 zdqZk^TCvO^eL<_4=W5^W(kYr|2Y~n=CgCaNPPBrRm=_BNVlo=p0~C|+5gIm-5-2z z?k!*xKC9R8{(SeU@Y6Em3-f;IY24nP|7D)Wyu0|zO0evL$zDJCn|P*Yomo&|0TS_a L^>bP0l+XkK3x;3a diff --git a/entry/src/main/resources/rawfile/Namecheap.png b/entry/src/main/resources/rawfile/Namecheap.png deleted file mode 100644 index 13686694c9fc7947d6ba466946b474f4ab18657a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14964 zcmdVB3lw)KR*GA2DDLhQX^T6>DH7Z*#REl3aEA~M&+|Ly z?0sIGKVV;1awYTXJISp3{;XNECRRsF85@Hf0{{SEtEwpK0RRZEUl9OrP+vbxzkIj< z&&X3xSsqX~O?mV>Kz5MRlmh@7lQCgdD6eDm&nm{A006$%f8Ge2_B4I~fH=CUqMU)B z`AH#q0n>Z$m$TZtfZSj^GDSIT?hc*{_eD{J0VbL<$H){%tdeaE#ax6$2(L@iS5y@2 zI83}mJi$3fIBR@bh;>3S?z622)Au(F6TE{^fsM1J=i;qj2b-Pm>jNsgs=5x|&pb?b zi%&?suiyH0SMW2Sp5z;AT-pC&uZ0An9|>V5p6jOVpFz89`pE)jPbPa~wvJmVzotfV zyELnwYywZI?u^y5=G$lYjC|9Kt*(|+H`b+!h-c(&zQDB;W_J%-9v*ZiVB?#kw+Us~ zC8)j+;}M0f#VSW)MKvTw&M~&%-AkgPUU0}9+=Zuuhq18N3ktojxXC`;(z#VQ`F?0g zauU0W5ftgut|KyVRI2tVlSN+2b#3X1TC4}-UESSM*ngwRHE%&+ta;fzkaQnwCa!PG z4aR1&-zqv{`ReJ06x+v-bjkoO-hzkTu?wie#hZC&nng@(X3B1^SP9$zB33052GA*m zeZNek!kKjf{_-7<$k8B3Ie+U^-0*Ebc)?q#!9oO}*6=)x znJl{T_jZuE-IH=7J5`IqIZM(G=zFw4(t1eUl{!l_pj|ToUoG;Sz!|R4Kw8tL243q_ zc}j7me~Xj9U7D~=Z6s8N-0@$mJkSo-jc=T=j579nFhx>?CJWL~D zCW?7g0n6&WJ3Z=>c62YNgDa@Oq@7P~ca$g!G#h(621G6BK6e;iZ|sn~FR4D~Nq|cR zJ9(%*Ed_D6pZq$B-o!tDc@O@%Ce6rghcT*64GYfhs@J)|iQ*JsGQNF+ki5=4En^WB z03jHK5ekJZRQ*I3{Gxk?eMi-9eTpw~M$?$$RQH|G!da%{v7=h3&033|^kA!(3mC-Vs$6*xXbb2R6a z{`iJ}>k#NzmzCMM0yV@2*cBze-LkBe!WeeD_&0~F^5ueI%i5D5)FQ9HbB(&qpZbq4 zfgFM8W2-f5y6wsjB<(5F+dBi$AXGN&ORDvSY=AfC*e6FsHYb}mgVG&Pq~-2mD)(tz z=la!p^8Owk85pJ7b#?I0!ix^ni6Euy;6Vk}C7kf*W-Fw;5j)fz=XpXp-NI)Q52DAc z0{m$_J3Xc8g_vu?rt-3_gmUzrM+t97GuDt%L*UGKST4!NmHxc0aaz8)oDdA}zoy&ub zp#QG|iSC8W90?OKW|!1#HJnvR6`35t8B(2CdxgG7UVc0`vsW+VIV8l^FytU*@Vjlv z%}g_0M2E1CP;&Y)<-F0t%l2KKtP2Js%_E#)#Cyz*)r;)>_i4Q_JT_-sbWEGtFK=Rf zExs&6vjO4yr%aNvQd}{qejK9i0Rg{rk)!y&3m?lca1H>x%2NngvA-P-`k;(R5F42_ z{WvCioFa+Z$5-gO;j&=1)@dt5+zAXKDU>?@m*D~V2u8`Ra8|+P2jOEz)`oXZey~x! zbc!S)D<_H4fO+?Z3Y?W!hgMi?<~)}n7&**f4nt@5Qc6eTn#Jmy30eguy(TV)g4dOm8ALiKj0%Q=1M^>1}f+%^p30~_!$%~g6Bt=ytM zi*Z(5$YQtBB)Y&cML!aYrP&5Fwb+fx!LyVH zZtdSXPCaTCP4MP}TyBa~mJzFqzwtqQ)A_DXf7cKl{RmSyI(#uE8Pzba?U2Cwg9w20 zbAahk6pk|Mq0#F39FnGNT=C2`G<#p?MxDTKPuav}bIhqB*T~son_FtX!kXQN_i{vR z<{SMplCUGyd1Q?B2?Az?PLKJ;(&+t|?1sm}2yV3Td}Ra8F>(GutPov8xdYd+cF^M4 zoV-PD(T&XoOPVKEA*N~2tWq>bDE)G7kl>8)vx~EhJ5o-Yg!UHZs+93QcZpEOFlQ&@7<0p9ZZGxs*rn1WxC}9gpHMhiH7urM zh{WbE1_0QJJ$k9-*(dg<_)P~#lGF!{ir=FYF%~Kiqds868`_@nbaVZoZgk;L^BZM0 zwT9S689Ei~mDCqT#Jmi)e{<|xX!AD;Wht1QX7U zw<+IpXD9Am?*_8B+m~6wxA#vLA4mFf(ep-1b<9q^1+tbTom0CJv`8&fVJ5?RzJMh z6wy9+X%J)sOdy#W!pYS9gM8=4SiQ6xz8&#q&`l-;2f%d1-@ME+Oyc-6#`+H52Txxx zQhr2~JLuwlK7bM2fpM55_{hEu-XH&F!L$!lKN#>=UNF8xxqwTDqtLQjN?jz9>>iQRS5SxU6xXJuv+fwc%oqsJ{Gnkk60)(k3d5uGt5I1%U6E$JM)SjTMU)A1J&&yDNQJnpbQCIf2U!eC zxX~V+FkxTzu<@2mnbw!94HFk%LHE;SOp_-pkr#_363@PGS8c!QOT=ENihNNCOun0s z3`EkqnQGGB%l;!-N=F{%>z+Xy`!J>*?-mcX5{`FRKff%-mgGO%Hq@0biZ1_bF25sR zD;P#CLlW$W$Oyg#-l|?GG!b#K|B5-3 zVPW7c(YqyU(&}6qzG+m&`oJM{tbE{--4Jp8f`hP2>A{ z^H3J-a(rTnP6fH+CT-AiXUo=8*R)YCuUtSWa3Cw+)%Me^X`p(8?q*uuw6bvEW zc4lAGh%Xw!=odV)Z0`uWhZ?v&9I2r=GY97r@=ykuwY}o+KcEhV2rwyJVF?=jQRE5` zU4v@=qS;L#P|jxffqg((1&mFtgLz7#dq%dh?llIkvT z(RlIsXi7Nz#FE$ao5$w#_7gm9f2ODR;eTiYjFmh6UxLzdnv2Yi5Bl=VuLb@=8x#%e23ah=fj^hNkm7 z7XzdSf6mYyv8qtBVstOED&E;-GKU7M^F<|~B;S`*NoTKV%DBS<5e|L{aj@J7>}!Tk z!(BTcKnL(5^Wi~e*Kmo%c=3VP2dZ+!l#Akrs3IP^EL4h{gK3y)vMIeb{Pk}iV*3!@ zG`LV;GS7Srq}Ic`Vu*?Z8EJ;vti~wgSFGaG8%-?a-*|E1sUVx37{=1bf%IIE)D0kDV5VCe1|E9bqpa=hBsN*H0 z7hl(Nbl1Mn5PJT${3V<tI1_U+#xvXi&V7Srjlkx zm8?rj7hvS?sF@W<-T%>r;mj=^GaLLfO6b9A0FD_7^zfd=k#_md)|Y&ena(~2-g)!S z_&wsls~i@t&|G@`4+go5!vWp<*I(d#0 z{;7?8DKMGhI(K4&u2J%a6M--HyN$IHO3lJgwP1~4)AO641eUT@7It&Hbm0N)rC&1+ zA~{_{0#4*BfJ*_O^H+R7b8%HV9vh)Bo$r313Hrf#XaSh(GTr8D$Z3f6Y8Ej3yXU{hzbYV4l^e<$a7Z-f3Wf=CV`p|8#_MHJ z_o)C1UH{C6d{pW3$>n~Tj_*NHZ_|a2iWJFKpW6T>OJd4}V}YwUL3I~AJA9ANId83n3;BbS9wD_q3jZk-X( zDZS$m5Dd#{NXrln$E4}Jr!&Tm!X#3{9P>~La(P?87aP+zk2Md8+1u5fy!C!H*V-{d zgxf~9&B3a#U?XuKx*pUgBfeNEkuYL$;=dP1SHKC~t_ozLvy@(*I-J1yf2Na`sR|)c8cRY}wVoER+n?)$_>r zqUWhS$8au^z3FG3L}B~@v6x>E6q}6pyGG(2Ck6pTF#(wA8TeY*VVC!-nkDq;($j7u z&cO)gk}2kXsuYjK63rW4$~^WjgmXEl4Yr>TOxVQG0y)^+R3uZpZ|6uA3#Zd)jmJG3 z9^}yQrG&%uE+#yFi>fy*gyTr7xV=dtP6_n0w4JaJKVUzT7Qu4fO1HSVq-!LP7({1m z_PPaOB_U{j^v6m!(h127RpmC&W=ff2d}|OSdYfZGVsnHz8N~k7{mYP2U!H+n7Wl6T zMNs5yzbuXsh04n|CD>L0z%IQUA%mq-3K>|K)^oW4p&>(ztr^}#+9oyz-+c%eS5trgWFi)beS=al}+ z&L$UAj#l5f9d8g+!y=sq^Nu=TeQM8hxz@YTAWL)vNF40DS8#G3v_zNl3JoV>sc9rA z4Kxi^ioRntm+U~_c9}xLM+zZNKdc}Hi;T!-8mR=V_iePujKf=fy=pwA`ur=6S3TGB zG6$`%r5?a&Qv%aHF$Yubq`7RHmDfc_6K{<*i@tyGp-e9b zX^lJ}oACGUR754pI3n&%KjT%P46Zu@zD#xLYH8VbIx7}UTEUp2J2ZKLh6ne{Uk^g0 z*xT%())a8_Pzjd4%ZGcTw)(Ldqs|oOUDNCjg4LV1&1h*JsOc=9s05j-CkPfBEb&EO zDF&thMF@Gc+}5?OIoixXTqOJBqrX z4v0|&bBd&LuqUl5cuE5ZwsGrhKgbsPGnln;nDEq?lQ{UX>vxC0m-F&gf>8`d=HDD` z8Fe-wB4(e)_kND5J@(|my`2B(6i}9x)SBO+xKoV_lguT{eGGh&wGas{6qbn}!k23;V=-k7`9G4v{KY*PXpYg((y8M~w)D*Si-HEL#?MUr@I3~eJQ-<3uiI47g%7n%So)OxAURlUv zMu$!4C{wSZ9T|d*Z*PRtCOLh=sRP#c{4 zi&V37F;k-W@&R6NL$OrkVnRET+ie_0-<`*VwanUuP=^zSBp}Sv4bfQFjGc)!w4M`4 zilX|Q{3)or$O|U2oRrvT1x*q4xUXK{qD*{o{$S;E52v|8jIdqG!p^65&n}7O8VMU3 znzb!n%KpRwG8Cx{{Lyov%rNT{BNcSCC2;^(pB#~^f1qu)JIJ-Z z#da0&BMx?rA1Xf@MwXk8*xSns9aVwQzW1ULcF(mmd!vB zfq*lV*|xdjH#$frg|EIDWqs=T`L;?`R6uI!QX_E*8KCZdZ;WEa%R2&=ko{T1tgW+a ztxon0{Y|-6U`Yv9Cu-fmIn6y^d+qSsZA^!0>FBHV~ zLrSSsV~$I397KuOvz4ZXx+0>F@#U06qac;3sZrwKS0_!w8M@$lk_&2ELZNeE#D&i% z>-1(;`;tM+nPXRaanj7ZjV$LEme=u9Dbtz&c9@^ry&}$2MqcQ|nYqu4dz}MFv~;6j ztm!TutOGSZ{g-()yz1cMKOyIZ$al6kR^pVJyYn(vCm3ely>N#4Q*Mb_hx*PYmgl?G z0OL7(!mivOoVDYr1Q=p$?-N+SwmubTT0WFGs?McYK?}PAP&BAI zENGK3RQIQUFL_gql~PC<&YGOOfy|z^z57+ud3(Uc>p;0%==u6R5~)w^l9w3U8Ef{! zgs`a!;h2;Ng3O+3JcUHy4w7x3cp(!4TL9_Z6aYtz`suPO%X|4*NS-;an`9QMjm+UN~kM(RW3(quRyC%zxjAj(!wHEGL>#wThNekB_*A1@C+= zc+k0ZYF4Uos&aqLiEhPW_C^ZnDz`D4RB$RJG;qiMZ#ga!`mTy3gndpBOxivO*TO0C z$+C`@@!W_%Nwl92c|&XBeY|ogc1GCjp@Wgt(H5AUBaqa(;aSt{Me$oepD>tq^}6`I z0c*5Xzp^k%?P`;isB|MkPLK?1h7I%OLPQJv%)Qk&tJgKC^C%y6*0pt0)1UOJeJV1@ zqiq*CRo1FW9_K?kj&oy+bUJS_t<0 zYu#v{P+P@iA(wv9X4EhF!f5n}Zu=hAzb2WxX=&VOw-x^L#FtIqXY|vhVrvsY?y|k% zpXA(HNG{&v>oz#>sz6!yPHL)(F_*6L6DE_db!4}EQx~fxYAi7s2sc|8KP%7;vHP1K zLcZ_HpVoVQ*FfdKt9bXyr~VL<*FT_$xJxTAGew|v0pih%oKAB`o=GpJm=EUm6I?V~B=zVsgeAVQz2QL3xqZ?rm|Cp$P&r+tm zO%EvY8l%vNdqUbJ0O;t_2|mEKe99e6E+xzWwgs(g(nhB22?)3#H`EY&rU7e`4nff) zaRat}L)!e&4M{9?ssYPX8`Xg?>?cd@ThM~1-W*Na)UhtFcSU645Bo;|9a$%u_p|+%=8>b`vlFK2uw)31CYcDpKG1o zFZ6UV>&U+9g7GyfWlI(b$A_orq49h^U#TJNPxl8CAuZ?iH1KY}Dr9lNqVM1{lx-j^ zf+IU#$kj#kW_!?)cr&ADu4f22)iPh;UyM8@9%wu6Db}{Uq>;_1T8FFzMNeFDM)a-W zt?_~Mc~0=>TePPZ1gIZq)`rc>oiP1-d7TT!(zUKm4sBMC4_mJ-BTC}-E2E4Tk2ulO zjEm~&!g?w*T$XCL%26K8_$Xq8d`dl$7Jx*vpStemJ+Uv4RXm=4N6X`Ayj=rk!BUcu zoCv)PaaHP$FneFxrZgk!1y0@f|+e zk6(Pg?bPcRP8U#uTVtfd{SzUwttTY*N?Sz9rNs|O-5cqnw=Z8z&vUUY?6(BvERc$7jh>nzJ);`@IBgQo zTeGA;`8`s%S$WGo;4@ul1)+O`lm6k=jF_wyi&S*gLvOH!xXeQnew~f*1{t(8$XNoAQ~j-rN_) zTe*{5_tK|at7!cN zMbI95EvFqN=2|Yf`s&o3;#PZXgSyOwdF>1lPO`+d#MdCkgPgMwJTs-2HGVSHOfrN` ze3I`dzuJ5r_HdEh`IV!HqGV(jO8j1w6V5!e-4q;hizcuM_+xw*G_G{noz}!Summ(F zM_#h3w5RE?#XruIMZYA`&k{t~1Y?fYU-K(hmjxG3F;4tohG6vQs*ych&8C()Q4C6&Le9uCbANtB5SmUSuvNE|( z0Fqg79}isbIzc$p%$>}So$0x?pfrUk%Nm)6H8H|EMgPR19xWlW64B~&3TH4sAYT}6 z)Wqh)XsdzPL8tR|qU#`)9W76+X{miXICS3}#Yh5Vdm3!5MZPw*8Q&~3gF+d5jUyA= zI&3!Q?*`TdqXn#|aP92;qk~dx5fYjRV}V$FLSZjb9YJf^L+b~Vj!2HV%YPE;&=dmb zi3mP>j0~a1$@<(0hK-9V^v-)QqWYZ6HJM;Y$yxyNyGuhQU)ueP*Zl-)f)NV&rwLk1 zSM@Ke&ACI00wIzxmKf>8xKqX=A3~b3lB;VuJBc|ye@1oj#geOa{7vH_xnzpub|Ev8=sfjl&DVckLR(mYXdID>I4b22-aS526e5-z$FT0|uY;nqY8 za!U2oXhk2DZgKK{SM|3GJ~FZW)8r+Wo5mgQ6@=z7Q-`cCv8Q7x4sKkvbmq;yvv$IY z$?B~4#&`Hb5ay$easpkP#wAh8WIO9Y6eOzwRL-7(#snv|*S$bWC6nbv#y9aFbMsQc~ln7oJ zf;FIHr}H+{3?m)j`%a=6pI^a5UTIKF6fXUD$>r#l^VV7Tg%$0_nUGVbx2vPMv?Buv zyHO{;5p)gzT$Ai-#<-UHy@0!`j5(>ODaFEf;EW{0W;}lRrnU~y67sl2Vi$TOZrU!~ z4|jGY!@D#10$VJr4)GAPOY?ObAV%fGC9-3ZJLh&B)EPJlxm3Xzd>4jGSyMK=)ur`e?O<)cgV>DWw*>#2n=aDYo zw@>0AJ>TtSTDsr|E{>n#k#z z+t87fA=zwNtZTjK20sXeZskmKhBkx|Oq~~6&L}sIee0{zpiuYVS3QOdyHI*D)0D3# zNmOkl{hAg3w30)kVaTf1rs`03Lygr7$18D6uvnJhdv4q#5bt z4&YiCrf?|0h$c{?P$g9ea6ufH(M#B72#D{7oHx%aT%Z8rv~em*+W{VhI)XKh6p&Y9Xg&8^Z+t#jyQGm#&pjgcTdW*bb3cLK$QDu zRh(U+fX27%Psp$E3v$5%1yA@)%=U!P6g>~L2#2OFL|e#``H4A%3ozZ+WCkaQhW9y8 z>Uboz(u8$`-s4{gCs*`yP0!!GxsN!n>}g)e4r${EysO>%R_|FH%=oL_$Qh08pzE2~ zArB$H>z16IH3XQ#b~&tFw~B0w&-YepD2==8YvCdPg)Ylcj8eA3@+pA`wfh2TwAD7Q z^+M*KyFcn}*C&#i&Pa}bAC$@h(#n;jQb#QqAC=IB1(KL`Hp9++E-3knB8U0zM;kV# zsgR2Q+)|xEWopKzzg-(xINFr(z`P&qK$LX$ICoSbt5;5y$x4={s5=Cqv&cVztMkY( zhFEmqa-*u3hN$Y9S`rhml00U&QNyLfGG(&Ro9lS`Y^7Nyr|mW1`CpCrGa-evL`~LL zfn5~axn_c&9vc6xJ}v>=CtC1?c0cO^xOlU@uX;Q0>a7ifF+&u#DK%C_X{W~ZzAli~cQ$0y;+ z3WQnbs$Ua4veee8kC9(BSnZipiD@jDf=9iSl94a4?Orsh$ID=2&gxIZ(H}krO#EGLB z?Pa1ERHdw5&3I+ujNj?<^%a;#LmNr7;@SFB8qeG2CJ-|&CH+6l?61vGlx;TdsI0sA z8MCr~8c755f5Azq?_l&v1Mjy+-uKJ+Rr}A1la*A5Vh-6lVw|4<5A+cpkCf=-KVXOv z1C^352DB0FNN3=5sO&guk`j9V3x`A=TV%Zf`dcA=BZ6iKwj@uA{kTkjn$U&c^hT~C zkGsiJ##&U0UcC2-YtDttAdLw=Ztx}-o^nMLZ$8v-ZXvIKe4KxJ)MyTbI$xl!8jE`}0>rG>vE8$i+!?Ph> z)eGM(1~Y3rPtdNt@BSW4?uK1%37_mGm+sZJUI%b)E!e1)=U{_-OE4{1H+g%8xe$f_ zqA9A%lU1WH9=)+swxc=pKx^J`VJv<&n(g?0_sBSU>lf+adCa(RMNElk5?rUa9OB4tKyl(9Fvil}3LU~z2EYW$GpYw60t|iJ zZtOXKP(S+~8wEVfB!ev-QsC?*1;l)M7Bj#Cb8R-QghjM(wh_N~lJ&9A+a#4&6892e zscX=JwU_iE!|o-?`zM$LSc%)+Oa(=e=p);G3teQRr2=*_Ad*?TUu_;xaqyu;t$>V& z)~Rzy<@*R8r6B?N*LEVNZdc{5Ez(Z6CmgUN{jaW+I>g6+Ra4C2t+)4KC=q=do^2$? z;=3`VqkPl%oTZhTv^C`=F*z+I`ckPil{0i6n=>z-?K_dKbeg{U$%JOm)?B$k=s!4Q+XQ7euSC6{Pf^U2-9jO(%WB37_j0Hu>hW zx2|M#n|y^y&eUj-g8kFQ7U=M6+DC=ry9Ad!*F zJzmgO*59Thv<>4BJ;|$?;_XfuJfhWWfGv{7iatvDE(=3EU)Te;0Onhd3Ti_OyXp={ z&3eZK-Wva`jjA+ffRH!vB9G9wOrID%wxKfo^H7;?T`Rwv6PYq5uwh@Io4gJa7Z75d zN5RHR*ew`g)RMA}dpnD~4S{Iqg%OJIL~-B&n1t2G4%r*Mf02dR`O@_ z{(^}8oB^c>ZmG4WwXiP(plZZ>oqo>Y=(uOP1&{AUGCVP#G|m;W%N$-aHq|rIY@u7^ zCSPnzrCV~f)%0NIp&_$qXq{l&T z)AlY7B#@VUtegTc4bLdpixIUR!B?diUCe$|x|!#Y(xhDtv$n@Kz6kq7sqoHvP3!K; z({0r|JEu9xY{X1nXmcvTKNDNXCs{q zmK&v#qzJ-yN!FRcwv$z@507${m3$AVpFjK1S3qJnx4HP~=P`MlkjR2)Z{q(|7~ZZT zhbu%TpP|zmioHE2+zm-;4%s{$TO$~(c6%c0+3dq>PUQqb=w%XFwb<+}&ZFu@2V>-K zd|Fd%b_}nrLoU*{4^;92)+Lvg=Uw^4rg!}>{R;-S`^1(+dV1U+RQ_WJvZxknY;W~4 z(u#!#PzSPc^JT%BUl}f5k8(C&0>qzQ242O5{d0TzD3rb9Yz zV(HN0ibJP_d-Zkz{>+TS+*P2l0hS^~)SkvdUR))o+r#){hje%sY`~iZ)&*de(fF_k{6T(jmqA$zn zxW>CguTyZ(3{Z2`&`9NK`}gcEt*ftQZ-#Z;q8bEi z4K3;juSpN_IX&>%WZ16(*`MO)RqFClfC~N&`Z$7dr)*dq+3W=o1S7T`q(GXn1rR5Wmr*>bV?8G7dz`zfiZK9_E)>Y5W7sDPIpcz$uy4fOiRt zE6p_8PKykZ)r_5PF&o{UAGV$h8_zmV+yee4_F@>pZ2fs;r~gSA0(M+zn50DC>IG41 zt83Xj+=P$ydmJ^(L5lLW%SX2zNQj3*=t|pIFv`7Iz}TO5Jx492ii&AE&q^@ zL{YYI@@-;I!omT8z#XtmSwtpsh`ssFnA?EPe(8S;HC84W*KjH}(2n!Y4|Ry+rB6%S zDJ(SSi3t491Sm&#Uz3vjEv8yZt3EOhS|V2`6&cc)H6cZY?83KhR9@|F`FALTcSQbXy&nQM+)}c*QI~ zcoQ~a@d>g!t)D`Funt| zf*1m(Ip4|OBZvyf53hKt>u@+B86Q-KRoVMC+B|eVSlAWw;rN5#@l*}j;s-vlV9{5I zy`_mf!&G@S0YoX_q1^B}np+ z3G-s1(iV*kE?)fI9F?h*9ErVm{TElQSr_-sGCcA5%H*t671olIXnUkj{OFGJt}zAz zGL5k&mJva?R~V>j^wy*$lu{>S@mtS1&Igxb zl2-8j$#5CH07@F&H|hF%--=x|__9hUpH%$vxJm3rz~Z4A-=~&bA6_q8{bgBEvcM54 zs?|iwQV626<6PBgl(7|en_Q-o5a)2GVOa;T(on>?j3JfxDxO{hBFj2)mXcFc7zWgF z|I{g%*w}YDsN)#=hU>W%d@QvLb{=+NR4?irwXmH>O7muSTh<+#tso;b1k5AP3rMe} z2%=JaBISV<=Y>2g+&#^KhljS1MkkZm_^xrlbfT)}Tn~zs!+mSb!s@TiMWgau7I2iw z=gx<`c4BVVXDJ-_1Gx#tueS5HksLIeHsEqf=h?XfrQv??hc{w{|JRoju{D45RC&Gd zy0u{+Ff`wO+l}2qT(@0LKi^16XXgJ`#%Oa$!n(N4KB5@g=0Y2RlQE+I`i%TgPYU50 znx*CtY%sWeOBww!@^vM~^ojK{nH{_dee@1@uxRSA!e1>oJ<4sp+k*h<97AA{YkFFfrFqA1uz}7!7@c* zj-jhvPzI??T;e56NTVu$ZN?Qp>=3l8*oRyOeIuiKXz(WPzTQhzui2hKso{ncnltCx;tlP`Wc7OVNs&k$nE5<7WTAvFJKf=fzz@`v4eK`DB$&gP3c0$jXzc3(cOD83Kkpcb9e@}naVrW-KqGnILJ>{VEnkPgM@ z#8_p1x7+`|KYVcC>j6rQL8FeKj*Jgn4!*cEM^GW?7qvZI#%cZ242R+{ZvdL=^DOk4 zLKHQ$3bM;&7a#DA0~C1wm6hA9{!dsojb1%LXGfPd^+puh9<$J#gvp;1xz&psXY&%W z1eOsnO!MSe{chD6w(a!UfYQe#jWk99yBlL%r%*fhIzUPTCadpoyE1+1dopibH9q+6 zz$mq~G3sl$Ukc)gT*d9i zX%zPLty{gWh71W$fU8kcb{K@6wJI6uE2tR>DYDGDymZ5-u6rZS?3l8cTxlbc*|1)T zf76e>!4v;OBNPffJ1H>^3QiBvalA+;Y1yX~%>gmfHg&Y%3|rg`qUF0qbUsi(sivM& zk7ApA4FQU`zWYA-Av;`Q&iG_@6BFOjqQ2h;-%lTn|`BHcawR2cw*GIod|%Z z_nu-*H{^T-KFvwLbu!8_U@dH5xi~z<)6-T7W%JApOY*08ANni}H*V3@oNf9ZDx}uO zsl6vJwS+CNbfB*gPBD^zR6$s{WUgl2pPS}F-uv@wXd=n7_kEf!F$Ef!78vm;?L-E) z_O8;s9!r-T8o+!V3YW*B?&){*89imK|CT*jo9~Uo1a}jyKI?XAYWCYH7@y9-;REXE z;^vuxVU&2kBzF1QVP*Ts!cRK^`RuI4%arcZO#bLpt27dlNOdztEB}jjl2mrpkVPm?cpT*_Imj+FdT- zJ=}K}UHcfwog3fXZVdHvG=!grNJ4yEDZz&>zyX}MFApHC?l~_zzdojnl@>Weq?p;i zE9?Q4BD3jSyHy(T;;#lQtt|cBi%6E>uUi$0->+x+yALuyCk0OjIY_#+jx{=?r3))Z zUVILtWm%HCRD&jgAsel?BQ&lz=1dt|ExYhZtS-%cJFgERL`0WoX~!O3cA@c2<%doT z7IL67W9swGEO^3qP^m(X*9N;p4gOJ}O5jt`5;d>7Asa zk3EXc$U*VEXFDvpKF5~%`3m31_vhGr?N_o|lj4AZ_EX}WGZqdaJkLMO0&Q$U&PxAJ lyTADVbK&xuX#^IM1?J_`nP{VZy(tP%Rnk(dleY~2zW@ZXGeiIY diff --git a/entry/src/main/resources/rawfile/NeteaseMail.png b/entry/src/main/resources/rawfile/NeteaseMail.png deleted file mode 100644 index 95ee528e8e5013d5401cf539065256987d0c6e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23068 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%0DU~`-|v3E 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 E0H99yNdN!< diff --git a/entry/src/main/resources/rawfile/Nintendo.png b/entry/src/main/resources/rawfile/Nintendo.png deleted file mode 100644 index d4f67591607164fb05d2d85b4d3357f3ad7cbb1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16796 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

`( z-H=?WHm;5QvlfST@ zFSK0KT7a+@qt3IR_z2OD;KwOpE|}9Voy*#I8SPfTkIfB!k0-=1L05vL7Tsnm{OU)6r36~VYo)f(!8}v~v!A40dRCmF!L&t(unelksMAz( zDey}WPeU{5D~sTakurOZOpLm5qU9OQ%wy;b`ne>yrCK5lY8B$7)z(?aVh*Ewc10cr(6x^> zgT5-{Z`Z4_h5zQ1(qVEX<2NbJ#sBpxZa;Vj4oeGjZh72sS?@rc>5UTeyQH-&sjVn@ zPU_8snsJQig4gZSw98nL`*0aUu{#Zeix0Q#R`0<^il$S>tA)kKZQ5NOyibn2IwV;E zK!D44;=aFnP4}=-zX|PQ3r)aj=3dghQ^J0( zxlI1Bn#&$Xy~k(@bXk{+fV=o4rEzS7h+wXbxu$^Q8p(7foC(HyYwlUCZ=Y7+siwhk zaIuUUq&MY<4+<=jL;{*GnC!RZOGHReLl{aOhI5GRR)oRHu`JkrM#9%;UH_|>I7$7; zcj>d#uBW3R_;OrkBLLWWTfoBC@7gozn1f^wLvKXQrozvvJ1}Wt51d_DM^;iY!_HAo zse~_EW=SJPi$*Pz;$LVp^+ckFSppxN%Lh<*%V)j0g_K=6(x|RA#A-+Xxy<;JDoUU9 z%-kg(Dk!V44!7%H_T)Ns;0BjFU&nTfQ9-wU_BbBYW|)cxju@h+ z7}C|(JmR;r!#}7cEx-%kdhIiq>rHZA(I#Gu8J}l}NVw=>`Z-}y(-bO9`kl`hG#J?W zCqVW$JZu?YD^iIe6ds4aBdTT}->vikP?ywRvP!K_Tiocm|h1 z+5l!2QCjNlhG=e)dVV1WfJWt3EH2IYZ6%^TG4SZwqTLqb-jZgX7n`CVevCzpE&hUz zt^OP)A6%M3U}TybeBAO$*rfZ>o)Uyd#QuWQWgBEy2_jWoKwsMHR)&!2i5Een zvrk*sYb$o!$sBm&^lQ6HL$0>k`^E)Z!Gf*S_c zUr?b~qChFo2#-X-3a7<@&+nN`7Z3g!uo(1=vx3nS18N10FEEr9cq8=LFGP*b5pN}w zTj=*6iD9C>kaKxHFIT*%ih7PT`h1+B~dq?{7Bw0BwYA}4A|Lxk$tnIT4Xk8wz#TvZ82F(iU1Z)MAnT4<3;kdxLaO?B7hJC zOzqgS$2NHXbP6BN(0yxM$j}MeM_S kCikqsX9|g&YJ%;SB_8_}?p7{HIh2Qg$_( zTUig?nB60_GsM_!x5{mHJP*8;*~yv^Ip}1)dpP%5fBzO2nhm`!kBfFP z@jri;P@px0#ZrQb8ZmrQF;F0&G;oKZj5xwURH+XYi6*-*?7}ZB*Vq4PT^JK}*X^+R zYGIjoy)o^~h&xC*pV$Sr@mlQC!NX_XBf#k(Ab>T0!@{zydHt&i_8?vIu80$w3C4z+ zB#!`EFYEZXmij4q@l?jvzp_O?UU zm@niI7bkro1XrJKLn4z zO>UQcrw6$3>^fJvR4Njwzj&>N+xQ0RtyY=t2A-T5UAq$gY3@cHWwJpSNq>BOi=>yD66oZrK zH#!Fuikd=Cx|(WR4fBy?4Fy=JfR0b#!iKdJU6;|+J|9O}Bxrfg`xu?|vJt0O#MAoI zl+88%!qtey-z@O?tw39RNvEjm>L1a=Pk`RPpJ8zEC(F4y4xfZBm55yHUz!NYUhMV9 z7Lvxzv8_NH$80zdha~DC z+-H{7dE3U*!(Q?KI=h?GFQ7LfF@n{OY$IC!&-{VM)<|N8r5)X;t&lUgU63t;)la~T z&T#*h<5GSSf|V#mUS1JxZ9EIdNeD{Ku*GIqb!)M7)y}d=(RW6snCq$$mSX?LX@yNu zbfyMbcsF$-^iHxm$KiIUaeURx_hdnU4q}O|)HsSMgPT3M4=C^u4}F6n9YPedYWA>g zYc#hP@XVi^xDY9u(4`td{kTLn_&e6?ZM(bFf@tCD3bG;Sy%)44l=LnV$k%y8`#~01t+I8Ng83C-a zEuQ+4(4|1ia|a91wy&ndCs?#x16^;N$>}(_SG=I3W2{|l(O=_= z_=ak;Qk^LV@P&674J~tPaS`b~3~OV(%9_{aXCd-br$QN0WEMrpN7c@o+@{IpcAeF5 zFtq~rBn|J~Z+kl?U&bKwD8~Aa_DKEW&E~ao)+}-PvOlPH5k#>TqSTavkYsvxYknmd zsY3b&C@xnFL{OH<4;m=}hH+VU{XZ%o{0y)|JJq0b_`8wfa+VlQ5{&9hDAL4L{+u5> zJ~Vp#6f)+@eU%qOB6gd$Lcwn?lK*MJ$Kiby-} zik(~93U(?CFVS<*MYH9bcNRoEAvuE=hA-UnT5(@nIlGt^srXkGcA*RYgHE(6u^y6Z zNpL%8f`uzgM#ZHem~B4(b}|SG?zDo9LsfO7&WkSxBl7#1X~iIuG%&EaXg_l8(Jq#W z6PkaIkE{+d(Aj*7kffaHxC0KA2kh@#jUja;gbwet9!kh_gZow4mPm&Y;0#}HSRQrC zNuO)OtWrMmBrY#Jges>i^yZUe!+Y7%(!Nw zV#KfGG-oVtV@!ifPH=t%pM>jimm`~#k-gFPoK95;AZl1lk48Y~^!(DyV`jr{vwWY2 z|0CW3{?eH7wzIEreUi@zI4clf(3-%_O2g3ExQ}abj58lu$p)X5`^-!F2chHA!?+N~ zomQ4H-S_mj+qtSOM=XRMlgthZz1_FAbi!Yn?@7QhuBB>(Z@OM5`W(udp5Y8g2+%Vu zU)9mMe{vngu%a?9i-Y!Osf#O9Q(+fNr5FE$Nc~sDNmXDW+-BiZY6F3qaQSQ{)nz6! zW1hM%)nJwD_*t1Md1afrlqbu6W!m*$;G%kD(HRew(qb>B^rpbEGRtC{aS1^h;gfc4 zwXU&DA;jF^lcc>Bt{UL{!LD*Rj3et_fI|pQRfkcdfM;c|>f}j2H>H5$!5By z!g&kLxVQXwST>%e{YIqymbskpo1udLA)$qEg1xk) z?J|{>OazxZ`H|XizcsS@+Iz{S06RCYfbF*PvmG0JOfTo$@VS+D=4%`lUKYWz4#EGP z1l_Tz!xcQdj2V}$tFcIU(Y`TkhaRjs^T6R>rMZhxJqOh6{7FrCJR&?NV=U!`h zzI{~W@&s{d-WaSB|^g zL5|X|jl~Ciwv-dD9ip{4)Yiq9art`dcM|yu(@NA(lOKmYqBr0y6eZAaudP>{_g!9r zU>-B+zK|NxhFi1%3+YIJRMfO|Y?EX|Y8~A+$C{w@7b|3FI1KnB- z`l_deRGr3El1EX2+)s*;@NUR$XzzPh7MltT=TR1?IUMBUULp4zmKMJA452sPpd7y` zDrjp3&j)_KiGR|LN@aVqC+*)H@o#E}c#9p4RPgarQ98WUD)ISW4y`=Cn%ub7C#&lg zYBhIq3o7HIIuN>`4#xbw=rn4Z2rTAPZNh@cL~8{uo0+#0M;lQQz7I$;^%~T9?GU$!UjQcF zlPQ>{&|j+-$yPSU2$~4{rpd@|ewDl@2?DqVV=Ad|dP~zN_r*$F-;WxE)5R^kK{#`uC|N`GH>^w3pfb!uG`5U>g7R+hZe=;6#72 zVj~@^s{A!yYh`=A+^K+qXDXl|*3?i5F)Lf9OH!iIXHHRa7mPVhK3z z$JZ@-zYk)zIS@}CC-M<<-G$7mb}LT)bMQ%DRiX?4$Q1i(Tto63ck={)Iuc&X3V}U^ zkn0yLPAec%aR>zca^(UGnuba>e}F5A!1jz1RK5G z&AQ%qQX5p>T0 z5Um1F1A`#XnUY8=p1a@$O?&2IyfJ3r^un`yI}Uez`$V z6f(@z8ri)L8%6-sy=EaL&Ocv?a_Uyg0 zmOFm={d9Ia6L6*2ZH63f^pZtYHhXh=RrTpsdTWU6;id8uFNZL>&dbWftS!IF zbr$KQo`am%f5qg>XgLzU_xMwDu&yR%U6~PfneNWpzj{<81)lq@{h86BG=y`g4<8`) z2o+ks*vgYUs=wC$+K(~J%+Meyeqh#C8V%id`=Uku-KsA;V8I3s zMnLU#=VgTZj66Mep&A;1q*E>2B>MMW$6->=A=IW+Sw%?Np@TrWIn2Igyx!juA5(~m z`7(y6v)6y#mtlD5Jeiw(A0;3lBQ^Z&ogb6Q;iLJb==EyiAE}Nb#F(%~j!HKrr1M<( zopthWre&V!l(Lwz%|(6%!^KRci!%%xvCsRv7VRnnOF=IxQ z{?j7P23)eQw35?fbo~`%wb|azb*O={jB0l;ffrWrH+iguezChmq!-5~^VA zz()!R5Z4G4y#ZAa6sK%3nYC<02g4G?IM&T-+BQz;(83No__^27;M<& z-7)I#A{fEdpGi$IpZgc<;~d8{i$?R6pg3$ooYV8WvD#s^()l1CF;V}mO1zORy?s(U z9r3!N@ns>XbI1>H?aZAk%!!`J(6s&Oe`x54*L3ei?`N;}dizPQ zWM$u>ix%ezh(-;a|NWCaoNk<71Cr7d`~0G$xrPwN@j;ERg&+l%&U646bk(l{EUKHo zQ2zTC_6P$eB(Kcs@(u`!=p;$x)JLfm_8fk}LURRrAq^5_mzbWxbu6#tQUm-yrbi)J zlbdY|Ho8rce8%Jj-!~8K_5O~r+3Tli*AM*t;k?Y1oyqxrMlFn8zAGjKeW%D`yn7sH zHe{D!R{#i0BuaMrgK&adac2r!;mw&n>B}0mEaC2)7_v?a@>|YYJ~A^B!)Xm6!2})$ z6EJHzC&a4|I+D&9{_#ME3>LO$KiOz1dsi?Kdw;%kAPo34ZuEe=P0aHfj5*EK?0t?) zsIPMU+pHQSDCHz|rXC`ON0zql??r0K0V~MLD466lt~qY;*2dxV-VXnWgtXCw zKUaL3{t|ckV#mM52tl!*LLW-fO#bzJKh9ZNa#c4WN$}JxylT)rCOE&F=T`;-lKl0r z&%e|6ag)eT-)h<*Yx+IJ_|DT?Y4y02F2}wy5iYkE@!B({+hJ*%zQDHm^S8g1$J`Aq)gF?+cPx%@fMX zutWEge`@todfb_PUSo+1ySn{+4bK}^(-|PYy8E#cN6=Hh=a>IZ`~b$)nbm5@Os+-) zCu7`>k7qu8D6aiAK}P8HJLaZ)3?0N+*WV(ILZBSByY9)i<=Y8p!9LH3aBS0U3;mW` zfBuHuRJC#Y8Vvh)py(sKWI!<{mT+ zgk+m2A5IWtb1tt)=GwYmX+`|nK?G-kA7cLh_&+l6^9%a^2P9wvN*PJrxAnh`3Lw(r L3SxC4zk~k=(0I?T diff --git a/entry/src/main/resources/rawfile/Nvidia.png b/entry/src/main/resources/rawfile/Nvidia.png deleted file mode 100644 index 4bf1f6ffcba65b7186466ea051d496c3b4acba29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10272 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 diff --git a/entry/src/main/resources/rawfile/Steam.png b/entry/src/main/resources/rawfile/Steam.png deleted file mode 100644 index a61433a9f7a3459487f0267450f245a394ee6e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21258 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 diff --git a/entry/src/main/resources/rawfile/Ubisoft.png b/entry/src/main/resources/rawfile/Ubisoft.png deleted file mode 100644 index 949344df9c8f33949086048c0fefe09780d74dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15266 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 diff --git a/entry/src/main/resources/rawfile/icons/token_image_1and1.svg b/entry/src/main/resources/rawfile/icons/token_image_1and1.svg new file mode 100644 index 0000000..c82806a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_1and1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_1password.svg b/entry/src/main/resources/rawfile/icons/token_image_1password.svg new file mode 100644 index 0000000..76f6448 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_1password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_23andme.svg b/entry/src/main/resources/rawfile/icons/token_image_23andme.svg new file mode 100644 index 0000000..26bee5a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_23andme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg b/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg new file mode 100644 index 0000000..4e4a396 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adguard.svg b/entry/src/main/resources/rawfile/icons/token_image_adguard.svg new file mode 100644 index 0000000..6e85601 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_adguard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adobe.svg b/entry/src/main/resources/rawfile/icons/token_image_adobe.svg new file mode 100644 index 0000000..4b20290 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_adobe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg b/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg new file mode 100644 index 0000000..cb85c7b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg b/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg new file mode 100644 index 0000000..e67f35c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airtable.svg b/entry/src/main/resources/rawfile/icons/token_image_airtable.svg new file mode 100644 index 0000000..8d99e74 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_airtable.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg b/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg new file mode 100644 index 0000000..d71196e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg b/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg new file mode 100644 index 0000000..60ecdf0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_amazon.svg b/entry/src/main/resources/rawfile/icons/token_image_amazon.svg new file mode 100644 index 0000000..2582aa2 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_amazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg b/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg new file mode 100644 index 0000000..6e17998 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_angellist.svg b/entry/src/main/resources/rawfile/icons/token_image_angellist.svg new file mode 100644 index 0000000..4f12e69 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_angellist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg b/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg new file mode 100644 index 0000000..710968a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg b/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg new file mode 100644 index 0000000..adf4421 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_apache.svg b/entry/src/main/resources/rawfile/icons/token_image_apache.svg new file mode 100644 index 0000000..82c07e6 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_apache.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_apple.svg b/entry/src/main/resources/rawfile/icons/token_image_apple.svg new file mode 100644 index 0000000..543b885 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg b/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg new file mode 100644 index 0000000..1af0459 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg b/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg new file mode 100644 index 0000000..b26a227 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg b/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg new file mode 100644 index 0000000..e5d2066 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg b/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg new file mode 100644 index 0000000..6438c1b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_avm.svg b/entry/src/main/resources/rawfile/icons/token_image_avm.svg new file mode 100644 index 0000000..7506c14 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_avm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg b/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg new file mode 100644 index 0000000..6b033c4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg b/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg new file mode 100644 index 0000000..3484a58 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_betterment.svg b/entry/src/main/resources/rawfile/icons/token_image_betterment.svg new file mode 100644 index 0000000..81c004e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_betterment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_binance.svg b/entry/src/main/resources/rawfile/icons/token_image_binance.svg new file mode 100644 index 0000000..14e88d0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_binance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg b/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg new file mode 100644 index 0000000..086a1d0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg b/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg new file mode 100644 index 0000000..19b4c5f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg b/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg new file mode 100644 index 0000000..977617a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg b/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg new file mode 100644 index 0000000..06abdfc --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg b/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg new file mode 100644 index 0000000..29801ab --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg b/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg new file mode 100644 index 0000000..cc431da --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg b/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg new file mode 100644 index 0000000..48d7024 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg b/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg new file mode 100644 index 0000000..df5a245 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg b/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg new file mode 100644 index 0000000..d7e280d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg b/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg new file mode 100644 index 0000000..fb0778f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg b/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg new file mode 100644 index 0000000..6132f22 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg b/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg new file mode 100644 index 0000000..fc3c540 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cexio.svg b/entry/src/main/resources/rawfile/icons/token_image_cexio.svg new file mode 100644 index 0000000..c8679d9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cexio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg b/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg new file mode 100644 index 0000000..539e2c7 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cisco.svg b/entry/src/main/resources/rawfile/icons/token_image_cisco.svg new file mode 100644 index 0000000..60090fd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cisco.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg b/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg new file mode 100644 index 0000000..dd1742c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg b/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg new file mode 100644 index 0000000..c75ec9c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg b/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg new file mode 100644 index 0000000..b7fc741 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg b/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg new file mode 100644 index 0000000..72b2f75 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg b/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg new file mode 100644 index 0000000..585e794 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg b/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg new file mode 100644 index 0000000..089b9bb --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg b/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg new file mode 100644 index 0000000..05ea358 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg b/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg new file mode 100644 index 0000000..aee0571 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg b/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg new file mode 100644 index 0000000..5975953 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg b/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg new file mode 100644 index 0000000..0c200d6 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg b/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg new file mode 100644 index 0000000..165bbc1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_debian.svg b/entry/src/main/resources/rawfile/icons/token_image_debian.svg new file mode 100644 index 0000000..850d699 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_debian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_degiro.svg b/entry/src/main/resources/rawfile/icons/token_image_degiro.svg new file mode 100644 index 0000000..9c6c1d6 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_degiro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_denic.svg b/entry/src/main/resources/rawfile/icons/token_image_denic.svg new file mode 100644 index 0000000..e0cb793 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_denic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg b/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg new file mode 100644 index 0000000..373da3b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg b/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg new file mode 100644 index 0000000..de8cb5f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg b/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg new file mode 100644 index 0000000..17ce9d4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg b/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg new file mode 100644 index 0000000..5b1b755 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_discord.svg b/entry/src/main/resources/rawfile/icons/token_image_discord.svg new file mode 100644 index 0000000..323f9a3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_discourse.svg b/entry/src/main/resources/rawfile/icons/token_image_discourse.svg new file mode 100644 index 0000000..93d02bf --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_discourse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_disroot.svg b/entry/src/main/resources/rawfile/icons/token_image_disroot.svg new file mode 100644 index 0000000..c45ccd5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_disroot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_docker.svg b/entry/src/main/resources/rawfile/icons/token_image_docker.svg new file mode 100644 index 0000000..e46dbd1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_docusign.svg b/entry/src/main/resources/rawfile/icons/token_image_docusign.svg new file mode 100644 index 0000000..1bc726a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_docusign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg b/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg new file mode 100644 index 0000000..73e36cd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg b/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg new file mode 100644 index 0000000..471e95e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_drupal.svg b/entry/src/main/resources/rawfile/icons/token_image_drupal.svg new file mode 100644 index 0000000..5afac4e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_drupal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg b/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg new file mode 100644 index 0000000..40ea878 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_email.svg b/entry/src/main/resources/rawfile/icons/token_image_email.svg new file mode 100644 index 0000000..d384dfd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg b/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg new file mode 100644 index 0000000..128641e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_etsy.svg b/entry/src/main/resources/rawfile/icons/token_image_etsy.svg new file mode 100644 index 0000000..18596cd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_etsy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg b/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg new file mode 100644 index 0000000..a6642a5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_evernote.svg b/entry/src/main/resources/rawfile/icons/token_image_evernote.svg new file mode 100644 index 0000000..1a43416 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_evernote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_facebook.svg b/entry/src/main/resources/rawfile/icons/token_image_facebook.svg new file mode 100644 index 0000000..c475e2d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_faceit.svg b/entry/src/main/resources/rawfile/icons/token_image_faceit.svg new file mode 100644 index 0000000..655ff61 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_faceit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg b/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg new file mode 100644 index 0000000..7cd4ab3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg b/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg new file mode 100644 index 0000000..fbd7ac0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_feishu.svg b/entry/src/main/resources/rawfile/icons/token_image_feishu.svg new file mode 100644 index 0000000..88448b8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_feishu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/entry/src/main/resources/rawfile/icons/token_image_figma.svg b/entry/src/main/resources/rawfile/icons/token_image_figma.svg new file mode 100644 index 0000000..c252b02 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_figma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg b/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg new file mode 100644 index 0000000..e07619b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_finnair.svg b/entry/src/main/resources/rawfile/icons/token_image_finnair.svg new file mode 100644 index 0000000..095d223 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_finnair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_firefox.svg b/entry/src/main/resources/rawfile/icons/token_image_firefox.svg new file mode 100644 index 0000000..f133265 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg b/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg new file mode 100644 index 0000000..89861da --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg b/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg new file mode 100644 index 0000000..62305f8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_friendica.svg b/entry/src/main/resources/rawfile/icons/token_image_friendica.svg new file mode 100644 index 0000000..301e1c3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_friendica.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fritz.svg b/entry/src/main/resources/rawfile/icons/token_image_fritz.svg new file mode 100644 index 0000000..2bc5dd0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_fritz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg b/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg new file mode 100644 index 0000000..8a4b4aa --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gandi.svg b/entry/src/main/resources/rawfile/icons/token_image_gandi.svg new file mode 100644 index 0000000..dc8f7a5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gandi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_git.svg b/entry/src/main/resources/rawfile/icons/token_image_git.svg new file mode 100644 index 0000000..54a8773 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gitea.svg b/entry/src/main/resources/rawfile/icons/token_image_gitea.svg new file mode 100644 index 0000000..638306a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gitea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_github.svg b/entry/src/main/resources/rawfile/icons/token_image_github.svg new file mode 100644 index 0000000..03fd102 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg b/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg new file mode 100644 index 0000000..5f0751e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gmx.svg b/entry/src/main/resources/rawfile/icons/token_image_gmx.svg new file mode 100644 index 0000000..e795333 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gmx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg b/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg new file mode 100644 index 0000000..5489357 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gogs.svg b/entry/src/main/resources/rawfile/icons/token_image_gogs.svg new file mode 100644 index 0000000..8f643be --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_gogs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_google.svg b/entry/src/main/resources/rawfile/icons/token_image_google.svg new file mode 100644 index 0000000..50d0ab1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_govuk.svg b/entry/src/main/resources/rawfile/icons/token_image_govuk.svg new file mode 100644 index 0000000..9058fd6 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_govuk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_grav.svg b/entry/src/main/resources/rawfile/icons/token_image_grav.svg new file mode 100644 index 0000000..290a654 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_grav.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg b/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg new file mode 100644 index 0000000..aadaf0f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg b/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg new file mode 100644 index 0000000..ac5e64d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_heroku.svg b/entry/src/main/resources/rawfile/icons/token_image_heroku.svg new file mode 100644 index 0000000..c71ee94 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_heroku.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg b/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg new file mode 100644 index 0000000..b3d8543 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg b/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg new file mode 100644 index 0000000..6d3e3b5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg b/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg new file mode 100644 index 0000000..a2f3ca0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg b/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg new file mode 100644 index 0000000..2c4b570 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hover.svg b/entry/src/main/resources/rawfile/icons/token_image_hover.svg new file mode 100644 index 0000000..2650bbf --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg b/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg new file mode 100644 index 0000000..38d52a9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg b/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg new file mode 100644 index 0000000..355fda9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ibm.svg b/entry/src/main/resources/rawfile/icons/token_image_ibm.svg new file mode 100644 index 0000000..e1e732e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ibm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg b/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg new file mode 100644 index 0000000..42c2ab0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg b/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg new file mode 100644 index 0000000..33a5c7e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ing.svg b/entry/src/main/resources/rawfile/icons/token_image_ing.svg new file mode 100644 index 0000000..5678bdb --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_instagram.svg b/entry/src/main/resources/rawfile/icons/token_image_instagram.svg new file mode 100644 index 0000000..ca67360 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_inwx.svg b/entry/src/main/resources/rawfile/icons/token_image_inwx.svg new file mode 100644 index 0000000..e95d151 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_inwx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_itchio.svg b/entry/src/main/resources/rawfile/icons/token_image_itchio.svg new file mode 100644 index 0000000..9cde8ad --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_itchio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_jagex.svg b/entry/src/main/resources/rawfile/icons/token_image_jagex.svg new file mode 100644 index 0000000..0944c06 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_jagex.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg b/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg new file mode 100644 index 0000000..dc08e20 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_joomla.svg b/entry/src/main/resources/rawfile/icons/token_image_joomla.svg new file mode 100644 index 0000000..55ed248 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_joomla.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_keeper.svg b/entry/src/main/resources/rawfile/icons/token_image_keeper.svg new file mode 100644 index 0000000..93fac87 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_keeper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg b/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg new file mode 100644 index 0000000..eae435f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kraken.svg b/entry/src/main/resources/rawfile/icons/token_image_kraken.svg new file mode 100644 index 0000000..af79b9b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_kraken.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg b/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg new file mode 100644 index 0000000..6bd197c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg b/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg new file mode 100644 index 0000000..9a83a9b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_librenms.svg b/entry/src/main/resources/rawfile/icons/token_image_librenms.svg new file mode 100644 index 0000000..272c32b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_librenms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lichess.svg b/entry/src/main/resources/rawfile/icons/token_image_lichess.svg new file mode 100644 index 0000000..2500de9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_lichess.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg b/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg new file mode 100644 index 0000000..00e9afa --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_linode.svg b/entry/src/main/resources/rawfile/icons/token_image_linode.svg new file mode 100644 index 0000000..0e9aab9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_linode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_liqui.svg b/entry/src/main/resources/rawfile/icons/token_image_liqui.svg new file mode 100644 index 0000000..b129d53 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_liqui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg b/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg new file mode 100644 index 0000000..97ec62c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg b/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg new file mode 100644 index 0000000..c5aed73 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg b/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg new file mode 100644 index 0000000..c0e0af1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg b/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg new file mode 100644 index 0000000..f109e1f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg b/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg new file mode 100644 index 0000000..156d9c8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_logmein.svg b/entry/src/main/resources/rawfile/icons/token_image_logmein.svg new file mode 100644 index 0000000..e3b22bc --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_logmein.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg b/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg new file mode 100644 index 0000000..6a361a2 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg b/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg new file mode 100644 index 0000000..5a4a9bb --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg b/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg new file mode 100644 index 0000000..9557d8d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg b/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg new file mode 100644 index 0000000..626d9c4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailru.svg b/entry/src/main/resources/rawfile/icons/token_image_mailru.svg new file mode 100644 index 0000000..d130685 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mailru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg b/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg new file mode 100644 index 0000000..6851983 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg b/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg new file mode 100644 index 0000000..7f84aa8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_matomo.svg b/entry/src/main/resources/rawfile/icons/token_image_matomo.svg new file mode 100644 index 0000000..42a1cb9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_matomo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mega.svg b/entry/src/main/resources/rawfile/icons/token_image_mega.svg new file mode 100644 index 0000000..92f251d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mega.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg b/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg new file mode 100644 index 0000000..44121b7 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg b/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg new file mode 100644 index 0000000..fab0008 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg b/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg new file mode 100644 index 0000000..73140f2 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_migadu.svg b/entry/src/main/resources/rawfile/icons/token_image_migadu.svg new file mode 100644 index 0000000..59a46ad --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_migadu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg b/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg new file mode 100644 index 0000000..138345a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mint.svg b/entry/src/main/resources/rawfile/icons/token_image_mint.svg new file mode 100644 index 0000000..b2cdaf3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg b/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg new file mode 100644 index 0000000..953070e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mixer.svg b/entry/src/main/resources/rawfile/icons/token_image_mixer.svg new file mode 100644 index 0000000..4a59b41 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mixer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg b/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg new file mode 100644 index 0000000..7db6106 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg b/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg new file mode 100644 index 0000000..a5a6193 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg b/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg new file mode 100644 index 0000000..48d2480 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_namecom.svg b/entry/src/main/resources/rawfile/icons/token_image_namecom.svg new file mode 100644 index 0000000..1936507 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_namecom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nas.svg b/entry/src/main/resources/rawfile/icons/token_image_nas.svg new file mode 100644 index 0000000..e2286a8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_nas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_netcup.svg b/entry/src/main/resources/rawfile/icons/token_image_netcup.svg new file mode 100644 index 0000000..55c85e0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_netcup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg b/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg new file mode 100644 index 0000000..0f45422 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg b/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg new file mode 100644 index 0000000..63b2c22 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg b/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg new file mode 100644 index 0000000..75b1907 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg b/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg new file mode 100644 index 0000000..ccb5b72 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_npm.svg b/entry/src/main/resources/rawfile/icons/token_image_npm.svg new file mode 100644 index 0000000..4a6bc3e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_npm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_oculus.svg b/entry/src/main/resources/rawfile/icons/token_image_oculus.svg new file mode 100644 index 0000000..7d5d6a5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_oculus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_office.svg b/entry/src/main/resources/rawfile/icons/token_image_office.svg new file mode 100644 index 0000000..1153a9b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_office.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_okta.svg b/entry/src/main/resources/rawfile/icons/token_image_okta.svg new file mode 100644 index 0000000..eab1e91 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_okta.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_online.svg b/entry/src/main/resources/rawfile/icons/token_image_online.svg new file mode 100644 index 0000000..ead1312 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_openvz.svg b/entry/src/main/resources/rawfile/icons/token_image_openvz.svg new file mode 100644 index 0000000..41357e9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_openvz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg b/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg new file mode 100644 index 0000000..63ecb9f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_orcid.svg b/entry/src/main/resources/rawfile/icons/token_image_orcid.svg new file mode 100644 index 0000000..f6244c4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_orcid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_origin.svg b/entry/src/main/resources/rawfile/icons/token_image_origin.svg new file mode 100644 index 0000000..322458f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_origin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ovh.svg b/entry/src/main/resources/rawfile/icons/token_image_ovh.svg new file mode 100644 index 0000000..660b305 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ovh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_packet.svg b/entry/src/main/resources/rawfile/icons/token_image_packet.svg new file mode 100644 index 0000000..7fa979b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_packet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg b/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg new file mode 100644 index 0000000..b423f02 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg b/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg new file mode 100644 index 0000000..747e20d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_patreon.svg b/entry/src/main/resources/rawfile/icons/token_image_patreon.svg new file mode 100644 index 0000000..41781fd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_patreon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paypal.svg b/entry/src/main/resources/rawfile/icons/token_image_paypal.svg new file mode 100644 index 0000000..a592d1b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg b/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg new file mode 100644 index 0000000..c82ae95 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg b/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg new file mode 100644 index 0000000..ac55871 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg b/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg new file mode 100644 index 0000000..a03336b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg b/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg new file mode 100644 index 0000000..194f996 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg b/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg new file mode 100644 index 0000000..6d87f99 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg b/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg new file mode 100644 index 0000000..93b1d84 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_plurk.svg b/entry/src/main/resources/rawfile/icons/token_image_plurk.svg new file mode 100644 index 0000000..b1e1459 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_plurk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_posteo.svg b/entry/src/main/resources/rawfile/icons/token_image_posteo.svg new file mode 100644 index 0000000..a37eb0f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_posteo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pretix.svg b/entry/src/main/resources/rawfile/icons/token_image_pretix.svg new file mode 100644 index 0000000..fba4ac6 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_pretix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_prey.svg b/entry/src/main/resources/rawfile/icons/token_image_prey.svg new file mode 100644 index 0000000..dd666e1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_prey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg b/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg new file mode 100644 index 0000000..7506f41 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg b/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg new file mode 100644 index 0000000..59ee737 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg b/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg new file mode 100644 index 0000000..3bb8737 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pushover.svg b/entry/src/main/resources/rawfile/icons/token_image_pushover.svg new file mode 100644 index 0000000..561405a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_pushover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pypi.svg b/entry/src/main/resources/rawfile/icons/token_image_pypi.svg new file mode 100644 index 0000000..43b746f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_pypi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg b/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg new file mode 100644 index 0000000..3676fba --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg b/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg new file mode 100644 index 0000000..7a501b9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_reddit.svg b/entry/src/main/resources/rawfile/icons/token_image_reddit.svg new file mode 100644 index 0000000..2ad6782 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_revolt.svg b/entry/src/main/resources/rawfile/icons/token_image_revolt.svg new file mode 100644 index 0000000..6ab0799 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_revolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg b/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg new file mode 100644 index 0000000..024687c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ripio.svg b/entry/src/main/resources/rawfile/icons/token_image_ripio.svg new file mode 100644 index 0000000..f5128d8 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ripio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg b/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg new file mode 100644 index 0000000..e960c34 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg b/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg new file mode 100644 index 0000000..28194be --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg b/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg new file mode 100644 index 0000000..20dadff --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rss.svg b/entry/src/main/resources/rawfile/icons/token_image_rss.svg new file mode 100644 index 0000000..9038681 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sap.svg b/entry/src/main/resources/rawfile/icons/token_image_sap.svg new file mode 100644 index 0000000..aefe1e4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg b/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg new file mode 100644 index 0000000..4e764a0 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_school.svg b/entry/src/main/resources/rawfile/icons/token_image_school.svg new file mode 100644 index 0000000..48f0907 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_school.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg b/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg new file mode 100644 index 0000000..8ec8cc5 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sentry.svg b/entry/src/main/resources/rawfile/icons/token_image_sentry.svg new file mode 100644 index 0000000..8fd2177 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sentry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg b/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg new file mode 100644 index 0000000..981cf55 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_skrill.svg b/entry/src/main/resources/rawfile/icons/token_image_skrill.svg new file mode 100644 index 0000000..99cc929 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_skrill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_slack.svg b/entry/src/main/resources/rawfile/icons/token_image_slack.svg new file mode 100644 index 0000000..236ed30 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_slack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg b/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg new file mode 100644 index 0000000..e58e4e4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sophos.svg b/entry/src/main/resources/rawfile/icons/token_image_sophos.svg new file mode 100644 index 0000000..7cb1f98 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sophos.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg b/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg new file mode 100644 index 0000000..da18dac --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg b/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg new file mode 100644 index 0000000..ae0ed2b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg b/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg new file mode 100644 index 0000000..c514dda --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg b/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg new file mode 100644 index 0000000..193187d --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_steam.svg b/entry/src/main/resources/rawfile/icons/token_image_steam.svg new file mode 100644 index 0000000..ccaa365 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_stripe.svg b/entry/src/main/resources/rawfile/icons/token_image_stripe.svg new file mode 100644 index 0000000..a89b925 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_stripe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sync.svg b/entry/src/main/resources/rawfile/icons/token_image_sync.svg new file mode 100644 index 0000000..93bfa2e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_sync.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_synology.svg b/entry/src/main/resources/rawfile/icons/token_image_synology.svg new file mode 100644 index 0000000..12368ea --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_synology.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_teahub.svg b/entry/src/main/resources/rawfile/icons/token_image_teahub.svg new file mode 100644 index 0000000..3c6cb16 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_teahub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg b/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg new file mode 100644 index 0000000..a543511 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg b/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg new file mode 100644 index 0000000..75faf3c --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_terminal.svg b/entry/src/main/resources/rawfile/icons/token_image_terminal.svg new file mode 100644 index 0000000..e4acd15 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg b/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg new file mode 100644 index 0000000..c899b86 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_transip.svg b/entry/src/main/resources/rawfile/icons/token_image_transip.svg new file mode 100644 index 0000000..13a5d03 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_transip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_trello.svg b/entry/src/main/resources/rawfile/icons/token_image_trello.svg new file mode 100644 index 0000000..d60fbdb --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_trello.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg b/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg new file mode 100644 index 0000000..35263dd --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg b/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg new file mode 100644 index 0000000..8096f93 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg b/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg new file mode 100644 index 0000000..6291b29 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg b/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg new file mode 100644 index 0000000..e4c3f4e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twilio.svg b/entry/src/main/resources/rawfile/icons/token_image_twilio.svg new file mode 100644 index 0000000..ed030f9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_twilio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twitch.svg b/entry/src/main/resources/rawfile/icons/token_image_twitch.svg new file mode 100644 index 0000000..2c6187a --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_twitch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twitter.svg b/entry/src/main/resources/rawfile/icons/token_image_twitter.svg new file mode 100644 index 0000000..c00baef --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_twitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_uber.svg b/entry/src/main/resources/rawfile/icons/token_image_uber.svg new file mode 100644 index 0000000..bbf0ce4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_uber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg b/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg new file mode 100644 index 0000000..4d8325f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg b/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg new file mode 100644 index 0000000..06f1004 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg b/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg new file mode 100644 index 0000000..f1d7df4 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_unity.svg b/entry/src/main/resources/rawfile/icons/token_image_unity.svg new file mode 100644 index 0000000..1800df3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_unity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_uphold.svg b/entry/src/main/resources/rawfile/icons/token_image_uphold.svg new file mode 100644 index 0000000..013b06b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_uphold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_usaa.svg b/entry/src/main/resources/rawfile/icons/token_image_usaa.svg new file mode 100644 index 0000000..bbfcd78 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_usaa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg b/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg new file mode 100644 index 0000000..1d39e69 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg b/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg new file mode 100644 index 0000000..52b28c3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vk.svg b/entry/src/main/resources/rawfile/icons/token_image_vk.svg new file mode 100644 index 0000000..33d7a72 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_vk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vultr.svg b/entry/src/main/resources/rawfile/icons/token_image_vultr.svg new file mode 100644 index 0000000..5ebc436 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_vultr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg b/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg new file mode 100644 index 0000000..40d1816 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wallet.svg b/entry/src/main/resources/rawfile/icons/token_image_wallet.svg new file mode 100644 index 0000000..5ab5948 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg b/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg new file mode 100644 index 0000000..06c3369 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg b/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg new file mode 100644 index 0000000..dc07b9b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg b/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg new file mode 100644 index 0000000..ec30c1b --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg b/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg new file mode 100644 index 0000000..ac83e71 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg b/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg new file mode 100644 index 0000000..ee97e70 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_workplace.svg b/entry/src/main/resources/rawfile/icons/token_image_workplace.svg new file mode 100644 index 0000000..159038e --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_workplace.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xero.svg b/entry/src/main/resources/rawfile/icons/token_image_xero.svg new file mode 100644 index 0000000..cebe9af --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_xero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xerox.svg b/entry/src/main/resources/rawfile/icons/token_image_xerox.svg new file mode 100644 index 0000000..0e1e7ed --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_xerox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xing.svg b/entry/src/main/resources/rawfile/icons/token_image_xing.svg new file mode 100644 index 0000000..3e13cf1 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_xing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg b/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg new file mode 100644 index 0000000..7716863 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zapier.svg b/entry/src/main/resources/rawfile/icons/token_image_zapier.svg new file mode 100644 index 0000000..050ec1f --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_zapier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg b/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg new file mode 100644 index 0000000..47c7022 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zoho.svg b/entry/src/main/resources/rawfile/icons/token_image_zoho.svg new file mode 100644 index 0000000..d67e8c3 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_zoho.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zoom.svg b/entry/src/main/resources/rawfile/icons/token_image_zoom.svg new file mode 100644 index 0000000..3f8bdc9 --- /dev/null +++ b/entry/src/main/resources/rawfile/icons/token_image_zoom.svg @@ -0,0 +1 @@ + \ No newline at end of file From 8a6702f4863d8811b48ab1499d9156e8289a2acf Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Sun, 15 Mar 2026 20:16:13 +0800 Subject: [PATCH 3/6] =?UTF-8?q?-=E5=A2=9E=E5=8A=A0=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E5=8C=85=E7=AE=A1=E7=90=86=E5=8F=8A=E5=9B=BE=E6=A0=87=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=EF=BC=88=E5=A2=9E=E5=8A=A0=E6=9B=B4=E5=A4=9A=E5=86=85?= =?UTF-8?q?=E7=BD=AE=E5=9B=BE=E6=A0=87=EF=BC=89=20-=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/components/IconPackManager.ets | 199 +++++ entry/src/main/ets/components/TokenIcon.ets | 98 +++ .../main/ets/entryability/EntryAbility.ets | 19 +- entry/src/main/ets/pages/Add.ets | 153 ++-- entry/src/main/ets/pages/AddSteam.ets | 153 ++-- entry/src/main/ets/pages/Base.ets | 32 +- entry/src/main/ets/pages/Detail.ets | 71 +- entry/src/main/ets/pages/Index.ets | 111 +-- entry/src/main/ets/pages/PrivacyView.ets | 44 +- entry/src/main/ets/pages/Setting.ets | 85 ++- entry/src/main/ets/pages/Steam.ets | 10 +- .../ets/pages/SteamConfirmationDetail.ets | 28 +- .../main/ets/pages/SteamConfirmationList.ets | 52 +- entry/src/main/ets/utils/IconPackUtils.ets | 260 +++++++ .../main/resources/base/element/color.json | 4 + .../main/resources/base/element/string.json | 680 +++++++++++++++++ .../main/resources/dark/element/color.json | 4 + .../main/resources/en_US/element/string.json | 680 +++++++++++++++++ .../main/resources/zh_CN/element/string.json | 688 +++++++++++++++++- 19 files changed, 2944 insertions(+), 427 deletions(-) create mode 100644 entry/src/main/ets/components/IconPackManager.ets create mode 100644 entry/src/main/ets/components/TokenIcon.ets create mode 100644 entry/src/main/ets/utils/IconPackUtils.ets diff --git a/entry/src/main/ets/components/IconPackManager.ets b/entry/src/main/ets/components/IconPackManager.ets new file mode 100644 index 0000000..26abea0 --- /dev/null +++ b/entry/src/main/ets/components/IconPackManager.ets @@ -0,0 +1,199 @@ +import { common } from '@kit.AbilityKit'; +import { AegisIconPack, IconPackRegistry } from '../utils/IconPackUtils'; +import { DefaultToastDuration } from '../pages/Base'; + +@Component +export struct IconPackManager { + @StorageLink('selectedIconPackKey') selectedIconPackKey: string = IconPackRegistry.getDefaultPackKey(); + @StorageLink('iconPackRevision') iconPackRevision: number = 0; + @State installedPacks: AegisIconPack[] = []; + @State expanded: boolean = false; + + aboutToAppear(): void { + this.reloadPacks(); + } + + private reloadPacks(): void { + const context = getContext(this) as common.UIAbilityContext; + IconPackRegistry.loadInstalledPacks(context).then((packs) => { + this.installedPacks = packs; + if (this.selectedIconPackKey !== IconPackRegistry.getDefaultPackKey() + && !packs.some((pack) => pack.getKey() === this.selectedIconPackKey && !pack.invalid)) { + this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); + this.bumpRevision(); + } + }); + } + + private bumpRevision(): void { + this.iconPackRevision = this.iconPackRevision + 1; + } + + private showToast(message: ResourceStr | string): void { + this.getUIContext().getPromptAction().showToast({ + duration: DefaultToastDuration, + message + }); + } + + private getInstalledCount(): number { + return this.installedPacks.filter((pack) => !pack.invalid).length; + } + + private getPackName(pack: AegisIconPack): ResourceStr | string { + if (pack.invalid) { + return $r('app.string.icon_pack_invalid_name_format', pack.name); + } + return pack.name; + } + + private getPackSubtitle(pack: AegisIconPack): ResourceStr | string { + if (pack.invalid) { + return $r('app.string.icon_pack_invalid_desc'); + } + return $r('app.string.icon_pack_meta_format', pack.icons.length, `${pack.version}`); + } + + private async onImportPressed(): Promise { + const context = getContext(this) as common.UIAbilityContext; + try { + const paths = await IconPackRegistry.pickZipFiles(context); + if (paths.length === 0) { + return; + } + for (const path of paths) { + await IconPackRegistry.importFromZip(context, path); + } + this.reloadPacks(); + this.bumpRevision(); + this.showToast($r('app.string.icon_pack_import_success')); + } catch (error) { + this.showToast($r('app.string.icon_pack_import_failed_format', + IconPackRegistry.formatImportError(error as Object))); + } + } + + private async onRemovePressed(pack: AegisIconPack): Promise { + try { + await IconPackRegistry.removePack(pack); + if (this.selectedIconPackKey === pack.getKey()) { + this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); + } + this.reloadPacks(); + this.bumpRevision(); + this.showToast($r('app.string.icon_pack_remove_success')); + } catch (error) { + this.showToast($r('app.string.icon_pack_remove_failed_format', + IconPackRegistry.formatImportError(error as Object))); + } + } + + @Builder + private packRow(value: string, name: ResourceStr | string, subtitle: ResourceStr | string, selected: boolean, + enabled: boolean, onSelect: () => void, onRemove?: () => void) { + Row() { + Radio({ value, group: 'icon-pack-group' }) + .checked(selected) + .enabled(enabled) + .onChange((checked) => { + if (checked && enabled) { + onSelect(); + } + }) + + Column() { + Text(name) + .fontWeight(FontWeight.Bold) + .textAlign(TextAlign.Start) + Text(subtitle) + .fontSize(12) + .textAlign(TextAlign.Start) + } + .alignItems(HorizontalAlign.Start) + .layoutWeight(1) + + if (onRemove) { + Button($r('app.string.icon_pack_remove')) + .type(ButtonType.Capsule) + .buttonStyle(ButtonStyleMode.TEXTUAL) + .onClick(() => onRemove()) + } + } + .width('100%') + .padding(12) + .borderRadius(12) + .backgroundColor($r("app.color.icon_pack_row_background")) + } + + build() { + Column() { + Row() { + Text($r('app.string.icon_pack_title')) + .width('85%') + .fontWeight(FontWeight.Bold) + .textAlign(TextAlign.Start) + Button(this.expanded ? $r('app.string.icon_pack_hide') : $r('app.string.icon_pack_manage')) + .type(ButtonType.Capsule) + .buttonStyle(ButtonStyleMode.TEXTUAL) + .onClick(() => { + this.expanded = !this.expanded; + }) + } + .width('100%') + .alignItems(VerticalAlign.Center) + + Row() { + Text($r('app.string.icon_pack_desc')) + .padding({ left: 10 }) + .fontSize(12) + // .fontColor('#666666') + } + .width('100%') + + if (this.expanded) { + Column({ space: 8 }) { + this.packRow( + IconPackRegistry.getDefaultPackKey(), + $r('app.string.icon_pack_builtin'), + $r('app.string.icon_pack_builtin_desc'), + this.selectedIconPackKey === IconPackRegistry.getDefaultPackKey(), + true, + () => { + this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); + this.bumpRevision(); + } + ) + + ForEach(this.installedPacks, (pack: AegisIconPack) => { + this.packRow( + pack.getKey(), + this.getPackName(pack), + this.getPackSubtitle(pack), + this.selectedIconPackKey === pack.getKey(), + !pack.invalid, + () => { + this.selectedIconPackKey = pack.getKey(); + this.bumpRevision(); + }, + () => this.onRemovePressed(pack) + ) + }, (pack: AegisIconPack) => pack.getKey()) + + Row({ space: 12 }) { + Button($r('app.string.icon_pack_import')) + .type(ButtonType.Capsule) + .onClick(() => this.onImportPressed()) + Text($r('app.string.icon_pack_installed_count_format', this.getInstalledCount())) + .fontSize(12) + .fontColor('#666666') + } + .margin({ top: 4 }) + } + .width('100%') + .margin({ top: 12, left: 30, right: 20 }) + } + } + .width('100%') + .padding({ top: 8, bottom: 8 }) + } +} diff --git a/entry/src/main/ets/components/TokenIcon.ets b/entry/src/main/ets/components/TokenIcon.ets new file mode 100644 index 0000000..165eb29 --- /dev/null +++ b/entry/src/main/ets/components/TokenIcon.ets @@ -0,0 +1,98 @@ +import { fileIo as fs } from '@kit.CoreFileKit'; +import { common } from '@kit.AbilityKit'; +import { AegisIconPack, IconPackRegistry } from '../utils/IconPackUtils'; + +@Component +export struct TokenIcon { + @Prop issuer: string = ''; + @Prop iconPath: string = ''; + @StorageLink('selectedIconPackKey') selectedIconPackKey: string = IconPackRegistry.getDefaultPackKey(); + @StorageLink('iconPackRevision') iconPackRevision: number = 0; + @State installedPacks: AegisIconPack[] = []; + + aboutToAppear(): void { + this.reloadIconPacks(); + } + + aboutToReuse(): void { + this.reloadIconPacks(); + } + + private reloadIconPacks(): void { + const context = getContext(this) as common.UIAbilityContext; + IconPackRegistry.loadInstalledPacks(context).then((packs) => { + this.installedPacks = packs; + }); + } + + private resolveIconPath(): string { + if (this.iconPath && this.isValidPath(this.iconPath)) { + return this.iconPath; + } + return IconPackRegistry.getIconPathByIssuer(this.issuer, this.selectedIconPackKey, this.installedPacks); + } + + private isValidPath(path: string): boolean { + if (path.startsWith('rawfile://')) { + return true; + } + if (path.startsWith('file://')) { + return fs.accessSync(path.slice(7)); + } + return fs.accessSync(path); + } + + private getImageSource(): ResourceStr | string | undefined { + const path = this.resolveIconPath(); + if (!path) { + return undefined; + } + if (path.startsWith('rawfile://')) { + return $rawfile(path.slice(10)); + } + return path; + } + + private hasImageSource(): boolean { + return this.getImageSource() !== undefined; + } + + private stringToColor(input: string): string { + let hash = 0; + for (let index = 0; index < input.length; index++) { + hash = input.charCodeAt(index) + ((hash << 5) - hash); + } + + let color = '#'; + for (let index = 0; index < 3; index++) { + const value = (hash >> (index * 8)) & 0xff; + const hex = `00${value.toString(16)}`; + color += hex.substring(hex.length - 2); + } + return color; + } + + build() { + Stack() { + if (this.hasImageSource()) { + Image(this.getImageSource()) + .width(40) + .height(40) + .objectFit(ImageFit.Contain) + } else { + Text(this.issuer.length > 0 ? this.issuer.charAt(0).toUpperCase() : '?') + .fontSize(20) + .fontWeight(FontWeight.Bold) + .fontColor('#FFFFFF') + } + } + .width(50) + .height(50) + .padding(5) + .margin(10) + .backgroundColor(this.hasImageSource() ? $r('app.color.vendor_background_color') : + this.stringToColor(this.issuer || 'k')) + .borderRadius(20) + } +} + diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index acdd00c..393c8f2 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -1,15 +1,26 @@ -import { AbilityConstant, bundleManager, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { AbilityConstant, bundleManager, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { window } from '@kit.ArkUI'; import { distributedKVStore } from '@kit.ArkData'; - +import resourceManager from '@ohos.resourceManager'; export let kvManager: distributedKVStore.KVManager; +export let appResourceManager: resourceManager.ResourceManager; + +export function getLocalizedString(resource: Resource, ...args: Array): string { + try { + return appResourceManager.getStringSync(resource.id, ...args) + } catch (_) { + return "" + } +} + export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); let context = this.context + appResourceManager = context.resourceManager try { let bundleName = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).name @@ -43,6 +54,8 @@ export default class EntryAbility extends UIAbility { PersistentStorage.persistProp("enhanceNetwork", false) PersistentStorage.persistProp("developmentMode", false) PersistentStorage.persistProp("privacyState", "Unknown") + PersistentStorage.persistProp("selectedIconPackKey", "default") + PersistentStorage.persistProp("iconPackRevision", 0) if (AppStorage.get("enableAutoDarkMode")) { this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); } else { @@ -66,3 +79,5 @@ export default class EntryAbility extends UIAbility { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); } } + + diff --git a/entry/src/main/ets/pages/Add.ets b/entry/src/main/ets/pages/Add.ets index 1b38573..564f44c 100644 --- a/entry/src/main/ets/pages/Add.ets +++ b/entry/src/main/ets/pages/Add.ets @@ -1,6 +1,7 @@ -import { AuthData, AuthDataStore, DefaultToastDuration } from "./Base" -import { picker, fileIo as fs } from "@kit.CoreFileKit"; -import { util } from "@kit.ArkTS"; +import { AuthDataStore, DefaultToastDuration } from "./Base"; +import { fileIo as fs, picker } from '@kit.CoreFileKit'; +import { util } from '@kit.ArkTS'; + @Component export struct Add { @@ -15,7 +16,7 @@ export struct Add { Column() { Row() { RelativeContainer() { - Text("通过 TOTP 密钥添加") + Text($r('app.string.add_totp_secret_title')) .fontWeight(FontWeight.Bold) .padding({ left: 10 }) .alignRules({ @@ -40,7 +41,7 @@ export struct Add { }) Row() { - Text("TOTP 密钥是由 A-Z,2-7 组成的字符串,例如:ABCDEFGHIJ234567") + Text($r('app.string.add_totp_secret_desc')) .padding({ left: 20 }) .fontSize(12) } @@ -51,7 +52,7 @@ export struct Add { Column() { Row() { RelativeContainer() { - Text("通过 TOTP URI 添加") + Text($r('app.string.add_totp_uri_title')) .fontWeight(FontWeight.Bold) .padding({ left: 10 }) .alignRules({ @@ -76,7 +77,7 @@ export struct Add { }) Row() { - Text("TOTP URI 是一串以 otpauth://totp/ 开头的链接,例如:otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567&issuer=Example") + Text($r('app.string.add_totp_uri_desc')) .padding({ left: 20 }) .fontSize(12) } @@ -87,7 +88,7 @@ export struct Add { Column() { Row() { RelativeContainer() { - Text("从令牌密钥文件(*.atsf)恢复") + Text($r('app.string.add_restore_title')) .fontWeight(FontWeight.Bold) .padding({ left: 10 }) .alignRules({ @@ -119,7 +120,7 @@ export struct Add { if (uris.length != 1) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "请选择一个令牌密钥文件" + message: $r('app.string.add_restore_pick_single') }) return } @@ -133,12 +134,12 @@ export struct Add { this.authDataStore.recoverAuthItem(data) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "恢复完成" + message: $r('app.string.add_restore_success') }) } catch (e) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `恢复错误:${e}` + message: $r('app.string.add_restore_error_format', `${e}`) }) } return @@ -146,7 +147,7 @@ export struct Add { }) Row() { - Text("令牌密钥文件为 *.atsf,可以从当前 App 的设置中导出。对令牌密钥文件做任何更改都可能导致无法恢复。\n注意:恢复操作不会覆盖已添加到 App 的令牌密钥,请自行删除重复的条目") + Text($r('app.string.add_restore_desc')) .padding({ left: 20 }) .fontSize(12) } @@ -157,7 +158,7 @@ export struct Add { Column() { Row() { RelativeContainer() { - Text("添加 Steam 令牌") + Text($r('app.string.add_steam_title')) .fontWeight(FontWeight.Bold) .padding({ left: 10 }) .alignRules({ @@ -186,7 +187,7 @@ export struct Add { }) Row() { - Text("支持 5 位令牌,扫码登陆和交易确认") + Text($r('app.string.add_steam_desc')) .padding({ left: 20 }) .fontSize(12) } @@ -196,7 +197,7 @@ export struct Add { } } } - .title("添加") + .title($r('app.string.add_title')) } } @@ -205,8 +206,7 @@ export struct Add { export struct AddSecret { @Consume("pageStack") pageStack: NavPathStack; @Consume("authDataStore") authDataStore: AuthDataStore; - @State provider: string = "Github" - @State isOtherProvider: boolean = false + @State provider: string = "" @State tokenLength: number = 6 @State account: string = "" @State secret: string = "" @@ -215,75 +215,27 @@ export struct AddSecret { NavDestination() { Column() { Row() { - Text("提供方") + Text($r('app.string.add_secret_provider')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - Button(this.isOtherProvider ? "其他" : this.provider) + TextInput({ text: this.provider, placeholder: $r('app.string.add_secret_provider_placeholder') }) .width("60%") - .bindMenu([ - { - value: "Github", - action: () => { - this.isOtherProvider = false - this.provider = "Github" - }, - }, - { - value: "Gitlab", - action: () => { - this.isOtherProvider = false - this.provider = "Gitlab" - }, - }, - { - value: "Google", - action: () => { - this.isOtherProvider = false - this.provider = "Google" - }, - }, - { - value: "Microsoft", - action: () => { - this.isOtherProvider = false - this.provider = "Microsoft" - }, - }, - { - value: "其他", - action: () => { - if (!this.isOtherProvider) { - this.provider = "" - } - this.isOtherProvider = true - }, - } - ]) + .fontWeight(FontWeight.Bold) + .textAlign(TextAlign.End) + .maxLength(50) + .onChange((v) => this.provider = v.trim()) } .height(40) .alignItems(VerticalAlign.Center) .margin({ bottom: 10 }) - if (this.isOtherProvider) { - Row() { - TextInput({ text: this.provider, placeholder: "请输入提供方名称" }) - .width("60%") - .fontWeight(FontWeight.Bold) - .textAlign(TextAlign.End) - .maxLength(50) - .onChange((v) => this.provider = v.trim()) - } - .alignSelf(ItemAlign.End) - .margin({ bottom: 10 }) - } - Row() { - Text("账号") + Text($r('app.string.add_secret_account')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - TextInput({ text: this.account, placeholder: "用户名或邮箱" }) + TextInput({ text: this.account, placeholder: $r('app.string.add_secret_account_placeholder') }) .width("60%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.End) @@ -295,11 +247,11 @@ export struct AddSecret { .margin({ bottom: 10 }) Row() { - Text("密钥") + Text($r('app.string.add_secret_secret')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - TextInput({ text: this.secret, placeholder: "由 A-Z,2-7 组成的字符串" }) + TextInput({ text: this.secret, placeholder: $r('app.string.add_secret_secret_placeholder') }) .width("60%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.End) @@ -309,7 +261,7 @@ export struct AddSecret { .margin({ bottom: 10 }) Row() { - Text("令牌位数") + Text($r('app.string.add_secret_digits')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -335,11 +287,15 @@ export struct AddSecret { .margin({ bottom: 10 }) Row() { - Button('添加') + Button($r('app.string.common_add')) .onClick(() => { try { if (this.secret.length <= 1 || !this.secret.match(/^[A-Z2-7]+$/)) { - throw new Error("密钥只能由 A-Z,2-7 组成,至少 2 个字符") + this.getUIContext().getPromptAction().showToast({ + duration: DefaultToastDuration, + message: $r('app.string.add_secret_invalid_secret') + }) + return } let encodedProvider = encodeURIComponent(this.provider) let encodedAccount = encodeURIComponent(this.account) @@ -350,7 +306,7 @@ export struct AddSecret { } catch (e) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `TOTP 错误:${e}` + message: $r('app.string.add_secret_error_format', `${e}`) }) } }) @@ -359,7 +315,7 @@ export struct AddSecret { } } } - .title("通过 TOTP 密钥添加") + .title($r('app.string.add_secret_title')) } } @@ -373,11 +329,11 @@ export struct AddUri { NavDestination() { Row() { Column() { - Text("输入 TOTP URI") + Text($r('app.string.add_uri_heading')) .fontSize(30) .fontWeight(FontWeight.Bold) .margin({ bottom: 10 }) - Text("如果需要同时添加多个,每行一个 URI") + Text($r('app.string.add_uri_desc')) .fontSize(14) .margin({ bottom: 20 }) TextArea({ text: "", placeholder: "otpauth://totp/xxx?secret=yyy" }) @@ -387,7 +343,7 @@ export struct AddUri { this.uri = value }) Row() { - Button('添加') + Button($r('app.string.common_add')) .onClick(() => { if (this.uri == "") { return @@ -406,7 +362,7 @@ export struct AddUri { } catch (e) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `已添加 ${count} 个,第 ${i + 1} 行的 TOTP URI 错误:${e}` + message: $r('app.string.add_uri_partial_error_format', count, i + 1, `${e}`) }) return } @@ -425,7 +381,7 @@ export struct AddUri { .width("90%") .height("90%") } - .title("通过 TOTP URI 添加") + .title($r('app.string.add_uri_title')) } } @@ -440,7 +396,7 @@ export struct AddSteamSecret { NavDestination() { Column() { Row() { - Text("提供方") + Text($r('app.string.add_secret_provider')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -454,11 +410,11 @@ export struct AddSteamSecret { .margin({ bottom: 10 }) Row() { - Text("账号") + Text($r('app.string.add_secret_account')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - TextInput({ text: this.account, placeholder: "用户名或邮箱" }) + TextInput({ text: this.account, placeholder: $r('app.string.add_secret_account_placeholder') }) .width("60%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.End) @@ -470,11 +426,11 @@ export struct AddSteamSecret { .margin({ bottom: 10 }) Row() { - Text("密钥") + Text($r('app.string.add_secret_secret')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - TextInput({ text: this.secret, placeholder: "由 A-Z,2-7 组成的字符串" }) + TextInput({ text: this.secret, placeholder: $r('app.string.add_secret_secret_placeholder') }) .width("60%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.End) @@ -484,7 +440,7 @@ export struct AddSteamSecret { .margin({ bottom: 10 }) Row() { - Text("令牌位数") + Text($r('app.string.add_secret_digits')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -498,11 +454,15 @@ export struct AddSteamSecret { .margin({ bottom: 10 }) Row() { - Button('添加') + Button($r('app.string.common_add')) .onClick(() => { try { if (this.secret.length <= 1 || !this.secret.match(/^[A-Z2-7]+$/)) { - throw new Error("密钥只能由 A-Z,2-7 组成,至少 2 个字符") + this.getUIContext().getPromptAction().showToast({ + duration: DefaultToastDuration, + message: $r('app.string.add_secret_invalid_secret') + }) + return } let encodedProvider = encodeURIComponent("Steam") let encodedAccount = encodeURIComponent(this.account) @@ -513,7 +473,7 @@ export struct AddSteamSecret { } catch (e) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `TOTP 错误:${e}` + message: $r('app.string.add_secret_error_format', `${e}`) }) } }) @@ -522,6 +482,7 @@ export struct AddSteamSecret { } } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_secret_title')) } -} \ No newline at end of file +} + diff --git a/entry/src/main/ets/pages/AddSteam.ets b/entry/src/main/ets/pages/AddSteam.ets index 4b621b6..f175061 100644 --- a/entry/src/main/ets/pages/AddSteam.ets +++ b/entry/src/main/ets/pages/AddSteam.ets @@ -1,9 +1,8 @@ -import { AuthData, AuthDataStore, DefaultToastDuration, SteamAccountData, SteamAuthData } from "./Base"; -import { SteamClient } from "./Steam"; -import * as steamapi from './steamapi/custom' -import * as steam2faapi from './steamapi/service_twofactor' -import { uri, util } from "@kit.ArkTS"; -import { systemDateTime } from "@kit.BasicServicesKit"; +import { AuthData, AuthDataStore, DefaultToastDuration, SteamAccountData, SteamAuthData } from './Base'; +import { SteamClient } from './Steam'; +import * as steamapi from './steamapi/custom'; +import { uri, util } from '@kit.ArkTS'; +import { systemDateTime } from '@kit.BasicServicesKit'; @Component export struct AddSteamToken { @@ -13,13 +12,13 @@ export struct AddSteamToken { NavDestination() { RelativeContainer() { Column() { - Text("流程说明") + Text($r('app.string.steam_intro_title')) .fontWeight(FontWeight.Bold) .margin(10) - Text("1. 登录 Steam\n2. 向 Steam 中添加身份验证器") + Text($r('app.string.steam_intro_steps')) .copyOption(CopyOptions.LocalDevice) .fontSize(14) - Text("注:期间需要输入 Steam 密码和验证码。\n如遇请求超时或请求失败等问题,请在设\n置中开启增强访问。") + Text($r('app.string.steam_intro_note')) .copyOption(CopyOptions.LocalDevice) .fontSize(14) .margin(10) @@ -29,7 +28,7 @@ export struct AddSteamToken { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("立即开始") + Button($r('app.string.steam_start_now')) .width(150) .margin({ bottom: 20 }) .alignRules({ @@ -41,7 +40,7 @@ export struct AddSteamToken { }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -60,13 +59,13 @@ export struct SteamLogin { RelativeContainer() { Column() { Row() { - Text("请输入 Steam 账户名称和密码") + Text($r('app.string.steam_login_prompt')) .fontWeight(FontWeight.Bold) } .margin({ bottom: 10 }) Row() { - Text("账户名称") + Text($r('app.string.steam_account_name')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -80,7 +79,7 @@ export struct SteamLogin { .margin({ bottom: 10 }) Row() { - Text("密码") + Text($r('app.string.steam_password')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -98,7 +97,7 @@ export struct SteamLogin { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("登录") + Button($r('app.string.common_login')) .enabled((!this.loggingIn) && (this.steamAccount != "") && (this.steamPassword != "")) .width(150) .margin({ bottom: 20 }) @@ -109,7 +108,7 @@ export struct SteamLogin { .onClick(() => { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `开始登录 Steam...` + message: $r('app.string.detail_steam_login_start') }) this.loggingIn = true this.steamClient.login(this.steamAccount, this.steamPassword, (err, auth) => { @@ -117,7 +116,7 @@ export struct SteamLogin { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录失败:${err.message}` + message: $r('app.string.detail_steam_login_failed_format', err.message) }) return } @@ -138,15 +137,15 @@ export struct SteamLogin { if (!this.accountData.confirmation) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录成功,正在获取认证信息...` + message: $r('app.string.steam_login_fetching_auth') }) this.loggingIn = true - this.steamClient.pollTokens(auth!.clientId, auth!.requestId, (err, tokens) => { + this.steamClient.pollTokens(auth!.clientId, auth!.requestId, (pollErr, tokens) => { this.loggingIn = false - if (err) { + if (pollErr) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 认证信息获取失败:${err.message}` + message: $r('app.string.steam_auth_fetch_failed_format', pollErr.message) }) return } @@ -159,7 +158,7 @@ export struct SteamLogin { }) } } - .title("登录 Steam") + .title($r('app.string.steam_login_title')) } } @@ -178,7 +177,7 @@ export struct SteamMFALogin { if (this.accountData.confirmation!.confirmationType == steamapi.EAuthSessionGuardType.k_EAuthSessionGuardType_DeviceConfirmation) { Column() { - Text("Steam 启用了多重身份验证,请在其他设备上确认本次登录,确认完成后再点击【完成登录】") + Text($r('app.string.steam_mfa_device_confirmation')) .fontWeight(FontWeight.Bold) .margin(10) } @@ -189,7 +188,7 @@ export struct SteamMFALogin { } else if (this.accountData.confirmation!.confirmationType == steamapi.EAuthSessionGuardType.k_EAuthSessionGuardType_EmailConfirmation) { Column() { - Text("Steam 启用了多重身份验证,确认邮件已发送,请点击邮件内的确认链接后再点击【完成登录】") + Text($r('app.string.steam_mfa_email_confirmation')) .fontWeight(FontWeight.Bold) .margin(10) } @@ -200,7 +199,7 @@ export struct SteamMFALogin { } else if (this.accountData.confirmation!.confirmationType == steamapi.EAuthSessionGuardType.k_EAuthSessionGuardType_DeviceCode) { Column() { - Text("Steam 启用了多重身份验证,请从已绑定的身份验证器获取令牌并输入") + Text($r('app.string.steam_mfa_device_code')) .fontWeight(FontWeight.Bold) .margin(10) TextInput() @@ -216,7 +215,7 @@ export struct SteamMFALogin { } else if (this.accountData.confirmation!.confirmationType == steamapi.EAuthSessionGuardType.k_EAuthSessionGuardType_EmailCode) { Column() { - Text("Steam 启用了多重身份验证,令牌已通过邮件发送,请输入令牌") + Text($r('app.string.steam_mfa_email_code')) .fontWeight(FontWeight.Bold) .margin(10) TextInput() @@ -231,7 +230,7 @@ export struct SteamMFALogin { }) } - Button("完成登录") + Button($r('app.string.steam_complete_login')) .enabled(!this.loggingIn) .width(150) .margin({ bottom: 20 }) @@ -248,7 +247,7 @@ export struct SteamMFALogin { if (this.steamToken == "") { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `请先输入令牌` + message: $r('app.string.common_enter_token_first') }) return } @@ -259,21 +258,21 @@ export struct SteamMFALogin { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录失败:${err.message}` + message: $r('app.string.detail_steam_login_failed_format', err.message) }) return } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录成功,正在获取认证信息...` + message: $r('app.string.steam_login_fetching_auth') }) this.loggingIn = true - this.steamClient.pollTokens(auth.clientId, auth.requestId, (err, tokens) => { + this.steamClient.pollTokens(auth.clientId, auth.requestId, (pollErr, tokens) => { this.loggingIn = false - if (err) { + if (pollErr) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 认证信息获取失败:${err.message}` + message: $r('app.string.steam_auth_fetch_failed_format', pollErr.message) }) return } @@ -284,7 +283,7 @@ export struct SteamMFALogin { } else { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `正在获取 Steam 认证信息...` + message: $r('app.string.steam_fetching_auth') }) this.loggingIn = true this.steamClient.pollTokens(auth.clientId, auth.requestId, (err, tokens) => { @@ -292,7 +291,7 @@ export struct SteamMFALogin { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 认证信息获取失败:${err.message}` + message: $r('app.string.steam_auth_fetch_failed_format', err.message) }) return } @@ -303,7 +302,7 @@ export struct SteamMFALogin { }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -319,7 +318,7 @@ export struct SteamLink { NavDestination() { RelativeContainer() { Column() { - Text(`${this.accountData.tokens!.accountName} 登录成功,请点击【添加】按钮将 Authenticator 添加到 Steam`) + Text($r('app.string.steam_link_success_format', this.accountData.tokens!.accountName)) .fontWeight(FontWeight.Bold) .margin(10) } @@ -328,7 +327,7 @@ export struct SteamLink { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("添加") + Button($r('app.string.common_add')) .enabled(!this.linking) .width(150) .margin({ bottom: 20 }) @@ -344,7 +343,7 @@ export struct SteamLink { let tokens = this.accountData.tokens! this.linking = true this.steamClient.addAuthenticator(auth.steamid.toString(), tokens.refreshToken, this.accountData.deviceId, - (err, auth) => { + (err, authData) => { this.linking = false if (err) { if (err.message == "DuplicateRequest") { @@ -353,18 +352,18 @@ export struct SteamLink { } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `添加 Authenticator 失败:${err.message}` + message: $r('app.string.steam_add_authenticator_failed_format', err.message) }) return } - this.accountData.authenticator = auth + this.accountData.authenticator = authData this.pageStack.pushPathByName("SteamConfirmLink", this.accountData) }) }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -383,7 +382,7 @@ export struct SteamConfirmLink { RelativeContainer() { if (this.accountData.authenticator!.confirmType == 1/*SMS*/) { Column() { - Text("正在向 Steam 添加身份验证器,请输入短信验证码") + Text($r('app.string.steam_confirm_link_sms')) .fontWeight(FontWeight.Bold) .margin(10) TextInput() @@ -398,7 +397,7 @@ export struct SteamConfirmLink { }) } else if (this.accountData.authenticator!.confirmType == 3/*Email*/) { Column() { - Text("正在向 Steam 添加身份验证器,验证码已通过邮件发送,请输入验证码") + Text($r('app.string.steam_confirm_link_email')) .fontWeight(FontWeight.Bold) .margin(10) TextInput() @@ -413,7 +412,7 @@ export struct SteamConfirmLink { }) } - Button("完成添加") + Button($r('app.string.steam_complete_add')) .enabled(!this.linking) .width(150) .margin({ bottom: 20 }) @@ -425,7 +424,7 @@ export struct SteamConfirmLink { if (this.steamToken == "") { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `请先输入验证码` + message: $r('app.string.common_enter_code_first') }) return } @@ -445,14 +444,14 @@ export struct SteamConfirmLink { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `添加身份验证器失败:${err.message}` + message: $r('app.string.steam_finalize_failed_format', err.message) }) return } if (resp!.wantMore) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `动态生成的令牌和 Steam 不一致,请再点击一次【完成添加】` + message: $r('app.string.steam_token_mismatch') }) return } @@ -489,14 +488,14 @@ export struct SteamConfirmLink { this.authDataStore.addOneAuthItem(authData, steamAuthData) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `添加成功` + message: $r('app.string.steam_add_success') }) this.pageStack.clear() }) }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -512,11 +511,11 @@ export struct SteamTransferAuthenticator { NavDestination() { RelativeContainer() { Column() { - Text("已经添加过其他身份验证器,是否迁移?") + Text($r('app.string.steam_transfer_prompt')) .fontWeight(FontWeight.Bold) .margin(10) - Text("特别说明:请确保 Steam 账户已经绑定了手机号码,否则将无法进行迁移") + Text($r('app.string.steam_transfer_note')) .fontWeight(FontWeight.Bold) .margin(10) } @@ -525,7 +524,7 @@ export struct SteamTransferAuthenticator { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("迁移") + Button($r('app.string.steam_transfer_button')) .enabled(!this.linking) .width(150) .margin({ bottom: 20 }) @@ -542,7 +541,7 @@ export struct SteamTransferAuthenticator { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `迁移身份验证器失败:${err.message}` + message: $r('app.string.steam_transfer_failed_format', err.message) }) return } @@ -551,7 +550,7 @@ export struct SteamTransferAuthenticator { }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -569,7 +568,7 @@ export struct SteamConfirmTransferAuthenticator { NavDestination() { RelativeContainer() { Column() { - Text("正在迁移 Steam 身份验证器,请输入短信验证码") + Text($r('app.string.steam_transfer_sms')) .fontWeight(FontWeight.Bold) .margin(10) TextInput() @@ -583,7 +582,7 @@ export struct SteamConfirmTransferAuthenticator { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("完成迁移") + Button($r('app.string.steam_complete_transfer')) .enabled(!this.linking && this.steamToken != "") .width(150) .margin({ bottom: 20 }) @@ -601,7 +600,7 @@ export struct SteamConfirmTransferAuthenticator { if (err || !account!.success) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `迁移身份验证器失败:${err?.message}` + message: $r('app.string.steam_transfer_failed_format', `${err?.message}`) }) return } @@ -637,14 +636,14 @@ export struct SteamConfirmTransferAuthenticator { this.authDataStore.addOneAuthItem(authData, steamAuthData) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `添加成功` + message: $r('app.string.steam_add_success') }) this.pageStack.clear() }) }) } } - .title("添加 Steam 令牌") + .title($r('app.string.add_steam_title')) } } @@ -669,13 +668,13 @@ export struct SteamRefreshToken { RelativeContainer() { Column() { Row() { - Text("更新需要重新登录 Steam,请输入密码") + Text($r('app.string.steam_refresh_prompt')) .fontWeight(FontWeight.Bold) } .margin({ bottom: 10 }) Row() { - Text("账户名称") + Text($r('app.string.steam_account_name')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -687,7 +686,7 @@ export struct SteamRefreshToken { .margin({ bottom: 10 }) Row() { - Text("密码") + Text($r('app.string.steam_password')) .width("30%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -705,7 +704,7 @@ export struct SteamRefreshToken { center: { anchor: "__container__", align: VerticalAlign.Center } }) - Button("登录") + Button($r('app.string.common_login')) .enabled((!this.loggingIn) && (this.steamAccount != "") && (this.steamPassword != "")) .width(150) .margin({ bottom: 20 }) @@ -716,7 +715,7 @@ export struct SteamRefreshToken { .onClick(() => { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `开始登录 Steam...` + message: $r('app.string.detail_steam_login_start') }) this.loggingIn = true this.steamClient.login(this.steamAccount, this.steamPassword, (err, auth) => { @@ -724,7 +723,7 @@ export struct SteamRefreshToken { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录失败:${err.message}` + message: $r('app.string.detail_steam_login_failed_format', err.message) }) return } @@ -739,38 +738,38 @@ export struct SteamRefreshToken { if (confirmation != steamapi.EAuthSessionGuardType.k_EAuthSessionGuardType_DeviceCode) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录成功,但确认类型错误:${confirmation}` + message: $r('app.string.steam_refresh_confirmation_type_error_format', confirmation) }) return } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录成功,正在提交令牌...` + message: $r('app.string.steam_refresh_submitting') }) this.loggingIn = true this.steamClient.submitLoginCode(auth!.steamid, auth!.clientId, - confirmation, this.authData.password, (err) => { + confirmation, this.authData.password, (submitErr) => { this.loggingIn = false - if (err) { + if (submitErr) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 令牌提交失败:${err.message}` + message: $r('app.string.steam_refresh_submit_failed_format', submitErr.message) }) return } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 令牌提交成功,正在获取认证信息...` + message: $r('app.string.steam_refresh_submit_success') }) this.loggingIn = true - this.steamClient.pollTokens(auth!.clientId, auth!.requestId, (err, tokens) => { + this.steamClient.pollTokens(auth!.clientId, auth!.requestId, (pollErr, tokens) => { this.loggingIn = false - if (err) { + if (pollErr) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 认证信息获取失败:${err.message}` + message: $r('app.string.steam_auth_fetch_failed_format', pollErr.message) }) return } @@ -780,7 +779,7 @@ export struct SteamRefreshToken { this.authDataStore.saveAuthItem(this.authData.id) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `更新 Steam 认证信息成功` + message: $r('app.string.steam_refresh_success') }) this.pageStack.clear() }) @@ -789,6 +788,6 @@ export struct SteamRefreshToken { }) } } - .title("更新 Steam 认证信息过期时间") + .title($r('app.string.steam_refresh_title')) } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index c663891..8bb3245 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -1,15 +1,16 @@ -import { systemDateTime } from '@kit.BasicServicesKit'; -import { ComponentContent } from "@kit.ArkUI"; +import { systemDateTime } from '@kit.BasicServicesKit'; +import { ComponentContent } from '@kit.ArkUI'; import { cryptoFramework } from '@kit.CryptoArchitectureKit'; import { buffer, JSON, uri, util } from '@kit.ArkTS'; import { distributedKVStore } from '@kit.ArkData'; -import { kvManager } from '../entryability/EntryAbility'; -import * as steamapi from './steamapi/custom' -import * as steam2faapi from './steamapi/service_twofactor' -import * as googleapi from './googleapi/otpauth_migrate' +import { getLocalizedString, kvManager } from '../entryability/EntryAbility'; +import * as steamapi from './steamapi/custom'; +import * as steam2faapi from './steamapi/service_twofactor'; +import * as googleapi from './googleapi/otpauth_migrate'; export let DefaultToastDuration = 5000 + export class AuthData { id: number = 0 alias: string = "" @@ -61,7 +62,7 @@ export class AuthDataStore { securityLevel: distributedKVStore.SecurityLevel.S2, }, (err: Error, store: distributedKVStore.DeviceKVStore) => { if (err) { - throw err + throw new Error(err.message) } this.kvStore = store this.kvStore.getEntries("/data/auth/", (err, data) => { @@ -253,7 +254,8 @@ export class AuthDataStore { return } if (authURI.scheme != "otpauth" || authURI.host != "totp") { - throw new Error(`无效的协议:${authURI.scheme}://${authURI.host}`); + throw new Error(getLocalizedString($r('app.string.base_invalid_scheme_format'), + `${authURI.scheme}://${authURI.host}`)); } let secret = authURI.getQueryValue("secret") let issuer = authURI.getQueryValue("issuer") @@ -294,7 +296,7 @@ export class AuthDataStore { recoverAuthItem(data: string) { let result = JSON.parse(data) as AuthData[] if (!result) { - throw new Error("未知的文件格式") + throw new Error(getLocalizedString($r('app.string.base_unknown_file_format'))) } for (let index = 0; index < result.length; index++) { const element = result[index]; @@ -303,7 +305,7 @@ export class AuthDataStore { return; } if (pair[1] == undefined) { - throw new Error(`第 ${index} 个令牌密钥缺少 ${pair[0]}`) + throw new Error(getLocalizedString($r('app.string.base_recover_item_missing_format'), index, pair[0])) } }) } @@ -327,10 +329,9 @@ export class AuthDataStore { data.secret1 = authdata["secret1"] as string data.accessToken = authdata["accessToken"] as string data.refreshToken = authdata["refreshToken"] as string - Object.entries(data).forEach((pair: [string, string]) => { if (pair[1] == undefined) { - throw new Error(`缺少 ${pair[0]}`) + throw new Error(getLocalizedString($r('app.string.base_missing_format'), pair[0])) } }) element.external = JSON.stringify(data) @@ -403,4 +404,9 @@ export class PromptParams { close() { this.ctx?.getPromptAction().closeCustomDialog(this.content) } -} \ No newline at end of file +} + + + + + diff --git a/entry/src/main/ets/pages/Detail.ets b/entry/src/main/ets/pages/Detail.ets index bc8bdd0..39cc635 100644 --- a/entry/src/main/ets/pages/Detail.ets +++ b/entry/src/main/ets/pages/Detail.ets @@ -1,9 +1,12 @@ -import { AuthData, AuthDataStore, DefaultToastDuration, PromptParams, SteamAuthData } from "./Base" -import { SymbolGlyphModifier } from "@kit.ArkUI"; -import { JSON, util } from "@kit.ArkTS"; -import { intl } from "@kit.LocalizationKit"; -import { scanBarcode, scanCore } from "@kit.ScanKit"; -import { SteamClient } from "./Steam"; +import { AuthData, AuthDataStore, DefaultToastDuration, PromptParams, SteamAuthData } from './Base'; +import { SymbolGlyphModifier } from '@kit.ArkUI'; +import { JSON, util } from '@kit.ArkTS'; +import { intl } from '@kit.LocalizationKit'; +import { scanBarcode, scanCore } from '@kit.ScanKit'; +import { SteamClient } from './Steam'; +import { TokenIcon } from '../components/TokenIcon'; +import { getLocalizedString } from '../entryability/EntryAbility'; + class SteamParams { public maFile: string = "" @@ -18,10 +21,10 @@ class SteamParams { function buildSteamInput(params: PromptParams) { Row() { Column() { - Text("输入 Steam 认证信息") + Text($r('app.string.detail_steam_input_title')) .fontSize(30) .fontWeight(FontWeight.Bold) - Text("认证通过后可以使用 Steam 扫码登陆和交易确认功能") + Text($r('app.string.detail_steam_input_desc')) .fontSize(12) .fontWeight(FontWeight.Normal) .margin({ bottom: 20 }) @@ -32,10 +35,10 @@ function buildSteamInput(params: PromptParams) { params.data.maFile = value }) Row() { - Button('取消').onClick(() => { + Button($r('app.string.common_cancel')).onClick(() => { params.close() }) - Button('确认').onClick(() => { + Button($r('app.string.common_confirm')).onClick(() => { try { let data = new SteamAuthData() let authdata = JSON.parse(params.data.maFile, (key: string, val: Object | undefined | null) => { @@ -57,10 +60,9 @@ function buildSteamInput(params: PromptParams) { let tokens = authdata["tokens"] as Record data.accessToken = tokens["access_token"] data.refreshToken = tokens["refresh_token"] - Object.entries(data).forEach((pair: [string, string]) => { if (pair[1] == undefined) { - throw new Error(`缺少 ${pair[0]}`) + throw new Error(getLocalizedString($r('app.string.base_missing_format'), pair[0])) } }) @@ -70,11 +72,10 @@ function buildSteamInput(params: PromptParams) { params.close() detail.authDataStore.saveAuthItem(detail.item.id) params.data.detail?.loadSteamAuthData() - } catch (e) { params.data.detail?.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `认证信息格式错误,请确保内容来自 maFile 文件,${e.toString()}` + message: $r('app.string.detail_steam_input_error_format', `${e.toString()}`) }) return } @@ -147,7 +148,6 @@ export struct Detail { this.steamAuthData.accessToken = authdata["accessToken"] as string this.steamAuthData.refreshToken = authdata["refreshToken"] as string - let parts = this.steamAuthData.refreshToken.split(".") let base64 = new util.Base64Helper() let data = base64.decodeSync(parts[1], util.Type.BASIC_URL_SAFE) @@ -160,7 +160,7 @@ export struct Detail { } catch (e) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `认证信息格式错误,${e.toString()}, 内容:${this.item.external}` + message: $r('app.string.detail_steam_invalid_error_format', `${e.toString()}`, this.item.external) }) } } @@ -187,24 +187,24 @@ export struct Detail { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `Steam 登录失败:${err.message}` + message: $r('app.string.detail_steam_login_failed_format', err.message) }) return } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "Steam 登录成功" + message: $r('app.string.detail_steam_login_success') }) }) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "开始登录 Steam..." + message: $r('app.string.detail_steam_login_start') }) }) } catch (error) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `扫码失败:${error}` + message: $r('app.string.common_scan_failed_format', `${error}`) }) } } @@ -220,15 +220,15 @@ export struct Detail { if (this.item.external != undefined && this.item.external.length > 0) { Row() { Column() { - Text("----- Steam 认证信息 -----") - Text("如遇扫码登录和交易确认出现请求超时或请求失败等问题,请在设置中开启增强访问。") + Text($r('app.string.detail_steam_section_title')) + Text($r('app.string.detail_steam_section_desc')) .padding({ left: 30, right: 30 }) .fontSize(12) } } Row() { - Text("Steam 账号") + Text($r('app.string.detail_steam_account')) .width("30%") .textAlign(TextAlign.Start) .margin(5) @@ -240,7 +240,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("Steam ID") + Text($r('app.string.detail_steam_id')) .width("30%") .textAlign(TextAlign.Start) Text(this.steamAuthData.steamID) @@ -251,7 +251,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("设备 ID") + Text($r('app.string.detail_device_id')) .width("30%") .textAlign(TextAlign.Start) Text(this.steamAuthData.deviceID.substring(this.steamAuthData.deviceID.indexOf(":") + 1)) @@ -262,7 +262,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("过期时间") + Text($r('app.string.detail_expire_time')) .width("30%") .textAlign(TextAlign.Start) Text(this.steamExpirationTime.toLocaleString((new intl.Locale()).toString(), { hour12: false })) @@ -273,17 +273,17 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Button("重新设置") + Button($r('app.string.detail_reset')) .onClick(() => this.onSteamButtonPressed()) .width("40%") .margin(5) - Button("更新过期时间") + Button($r('app.string.detail_update_expire')) .onClick(() => this.onSteamRefreshButtonPressed()) .width("40%") .margin(5) } } else { - Button("设置 Steam 认证信息") + Button($r('app.string.detail_setup_steam')) .onClick(() => this.onSteamButtonPressed()) } } @@ -293,18 +293,19 @@ export struct Detail { NavDestination() { Column() { Row() { + TokenIcon({ issuer: this.item.issuer, iconPath: this.item.tokenIconPath }) Text(this.safe ? this.item.password : "******") .fontSize(40) .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Center) .copyOption(CopyOptions.LocalDevice) } - .height(40) + .height(60) .alignItems(VerticalAlign.Center) .margin(20) Row() { - Text("别名") + Text($r('app.string.detail_alias')) .width("30%") .textAlign(TextAlign.Start) TextInput({ text: this.item.alias }) @@ -323,7 +324,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("账号") + Text($r('app.string.detail_account')) .width("30%") .textAlign(TextAlign.Start) Text(this.item.account) @@ -334,7 +335,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("发行商") + Text($r('app.string.detail_issuer')) .width("30%") .textAlign(TextAlign.Start) Text(this.item.issuer) @@ -345,7 +346,7 @@ export struct Detail { .alignItems(VerticalAlign.Center) Row() { - Text("位数") + Text($r('app.string.detail_digits')) .width("30%") .textAlign(TextAlign.Start) Text(this.item.digits.toString()) @@ -373,3 +374,5 @@ export struct Detail { ] : []) } } + + diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 14ff27a..61215d0 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -1,16 +1,16 @@ -import { SymbolGlyphModifier } from "@ohos.arkui.modifier" -import { scanCore, scanBarcode } from '@kit.ScanKit'; +import { SymbolGlyphModifier } from '@ohos.arkui.modifier'; +import { scanBarcode, scanCore } from '@kit.ScanKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { BusinessError, systemDateTime } from '@kit.BasicServicesKit'; import { cryptoFramework } from '@kit.CryptoArchitectureKit'; import { Setting } from './Setting'; import { userAuth } from '@kit.UserAuthenticationKit'; import { Detail } from './Detail'; -import { AuthData, AuthDataStore, DefaultToastDuration, PromptParams, SteamAccountData } from './Base'; +import { AuthData, AuthDataStore, DefaultToastDuration, SteamAccountData } from './Base'; import { SteamConfirmationList } from './SteamConfirmationList'; import { SteamConfirmationDetail } from './SteamConfirmationDetail'; import { Confirmation } from './Steam'; -import { Add, AddSecret, AddSteamSecret, AddUri } from "./Add"; +import { Add, AddSecret, AddSteamSecret, AddUri } from './Add'; import { AddSteamToken, SteamConfirmLink, @@ -18,11 +18,13 @@ import { SteamLink, SteamLogin, SteamMFALogin, - SteamTransferAuthenticator, - SteamRefreshToken -} from "./AddSteam"; -import { ShowPrivacyView } from "./PrivacyView"; -import { curves } from "@kit.ArkUI"; + SteamRefreshToken, + SteamTransferAuthenticator +} from './AddSteam'; +import { ShowPrivacyView } from './PrivacyView'; +import { curves } from '@kit.ArkUI'; +import { TokenIcon } from '../components/TokenIcon'; +import { getLocalizedString } from '../entryability/EntryAbility'; @Entry @Component @@ -55,7 +57,6 @@ struct Index { this.privacyState = state }) } - } aboutToDisappear(): void { @@ -104,7 +105,7 @@ struct Index { }; // 配置认证界面 const widgetParam: userAuth.WidgetParam = { - title: '请进行身份认证', + title: getLocalizedString($r('app.string.index_auth_title')), }; // 获取认证对象 const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam); @@ -132,6 +133,13 @@ struct Index { this.safe = false } + showSafeModeToast() { + this.getUIContext().getPromptAction().showToast({ + duration: DefaultToastDuration, + message: $r('app.string.common_safe_mode_unlock_first') + }) + } + @Builder PagesMap(name: string, param: object) { if (name == 'Add') { @@ -169,33 +177,6 @@ struct Index { } } - @Builder - Logo(issuer: string, iconPath: string) { - if (iconPath == "") { - SymbolGlyph($r("sys.symbol.person")) - .fontSize(30) - .padding(5) - .margin(10) - .fontColor([$r("app.color.vendor_icon_color")]) - .backgroundColor($r("app.color.vendor_background_color")) - .borderRadius(20) - } else { - //todo 添加图标包管理 - //todo 添加图标显示 - } - // if (this.vendors.has(issuer.toLowerCase())) { - // Image($rawfile(this.vendors.get(issuer.toLowerCase()))) - // .width(40) - // .padding(5) - // .margin(10) - // .backgroundColor($r("app.color.vendor_background_color")) - // .borderRadius(20) - // .draggable(false) - // } else { - // - // } - } - build() { Column() { Navigation(this.pageStack) { @@ -204,7 +185,7 @@ struct Index { Column() { SymbolGlyph($r("sys.symbol.info_shield")) .fontSize(35) - Text("还没有添加过令牌密钥\n请点击右上角的加号或扫码按钮添加") + Text($r('app.string.index_empty')) .fontWeight(FontWeight.Bold) .padding(20) .textAlign(TextAlign.Center) @@ -222,7 +203,7 @@ struct Index { ForEach(this.items, (item: AuthData, index: number) => { ListItem() { Row() { - this.Logo(item.issuer, item.tokenIconPath) + TokenIcon({ issuer: item.issuer, iconPath: item.tokenIconPath }) Column() { Text(item.alias) .fontSize(20) @@ -238,10 +219,7 @@ struct Index { .fontWeight(FontWeight.Bold) .onClick(() => { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } if (!this.hideToken) { @@ -255,10 +233,7 @@ struct Index { .opacity(item.id == this.dragItem?.id ? 0 : 1) .onClick(() => { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } this.pageStack.pushPathByName("Detail", item) @@ -329,10 +304,7 @@ struct Index { symbolIcon: new SymbolGlyphModifier($r('sys.symbol.gearshape')), action: () => { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } this.pageStack.pushPathByName("Setting", undefined) @@ -363,12 +335,9 @@ struct Index { .type(ButtonType.Normal) .width(60) .height("100%") - .onClick((event) => { + .onClick(() => { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } this.authDataStore.removeAuthItem(id) @@ -378,10 +347,7 @@ struct Index { onAddButtonPressed() { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } this.pageStack.pushPathByName("Add", undefined) @@ -389,10 +355,7 @@ struct Index { onScanButtonPressed() { if (!this.safe) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用安全模式,请先解锁" - }) + this.showSafeModeToast() return } let options: scanBarcode.ScanOptions = @@ -407,19 +370,19 @@ struct Index { this.authDataStore.addAuthItem(result.originalValue) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "成功添加令牌" + message: $r('app.string.index_add_success') }) } catch (error) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `扫码失败:${error}` + message: $r('app.string.common_scan_failed_format', `${error}`) }) } }) } catch (error) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `扫码失败:${error}` + message: $r('app.string.common_scan_failed_format', `${error}`) }) } } @@ -439,21 +402,25 @@ struct Index { if (steamTokenCount <= 0) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "没有 Steam 令牌,无法扫码登陆 Steam,请先添加 Steam 令牌" + message: $r('app.string.index_no_steam_token') }) return } if (steamAuthDataCount <= 0) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "Steam 令牌没有设置认证信息,无法扫码登陆 Steam,请在令牌详情页设置" + message: $r('app.string.index_no_steam_auth') }) return } this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "请在 Steam 令牌详情页扫码登陆" + message: $r('app.string.index_go_to_steam_detail') }) return } -} \ No newline at end of file +} + + + + diff --git a/entry/src/main/ets/pages/PrivacyView.ets b/entry/src/main/ets/pages/PrivacyView.ets index f5a348a..ccd0083 100644 --- a/entry/src/main/ets/pages/PrivacyView.ets +++ b/entry/src/main/ets/pages/PrivacyView.ets @@ -14,48 +14,14 @@ export function ShowPrivacyView(context: UIContext, setState: (state: string) => view.open() } - @Builder function PrivacyView(params: PromptParams) { Column() { - Text("隐私政策") + Text($r('app.string.privacy_title')) .fontSize(20) .margin({ top: 10 }) Scroll() { - Text(`更新日期:2025/04/03 -生效日期:2025/04/03 -导言 -千维验证器是一款由 郭维 (以下简称“我们”)提供的产品。 您在使用我们的服务时,我们不会收集和使用您的相关信息,我们希望通过本《隐私政策》向您说明。本《隐私政策》与您所使用的千维验证器服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。本《隐私政策》中涉及的相关技术词汇,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您的理解。 - -您使用或继续使用我们的服务,即意味着同意本《隐私政策》。 - -感谢您使用我们的服务!我们重视您的隐私,并承诺保护您的个人信息。在使用本服务时,我们希望向您明确声明,我们不会主动收集、存储或共享任何个人信息。请您在使用本服务前,仔细阅读本隐私政策。 - -1. 我们不收集个人信息 -在您使用本服务的过程中,我们不会主动收集您的任何个人信息。无论您是匿名使用服务,还是以其他方式与我们进行互动,我们都不会要求或获取您的姓名、电子邮件地址、电话号码、住址、支付信息等个人身份信息。 - -2. 不涉及第三方数据共享 -由于我们不收集任何个人信息,我们也不会将您的任何数据与第三方共享、出售或租赁。您的隐私安全对我们来说至关重要,我们不会向任何第三方提供与您身份相关的任何数据。 - -3. 技术数据收集 -尽管我们不会收集您的个人信息,但我们可能会使用一些常见的技术手段来收集非个人信息,例如您的设备类型、浏览器类型、操作系统版本、访问日期和时间等。这些信息仅用于改善服务质量和用户体验,不会用于识别您个人身份。 - -4. 数据存储 -由于我们不会收集个人信息,因此不会在服务器上存储任何与您身份相关的个人数据。任何与服务有关的日志数据都仅用于技术分析和系统维护,且不会用于任何身份识别。 - -5. 安全性 -虽然我们不收集您的个人信息,但我们依然采取合理的安全措施来保护我们服务的数据安全。这些措施包括但不限于加密技术、服务器安全和网络防护,以确保我们的系统免受外部攻击或数据泄露。 - -6. 儿童隐私 -我们的服务并不针对儿童,我们不会 knowingly 收集或请求未满18岁用户的个人信息。如果我们发现收集了未满18岁用户的个人信息,我们将尽快删除相关数据。 - -7. 政策变更 -我们可能会根据法律、政策或服务改进的需要,适时更新或修改本隐私政策。如果本隐私政策发生重要变更,我们将在适当的地方进行通知,以确保您及时了解我们的隐私保护措施。 - -8. 联系我们 -如果您对本隐私政策有任何疑问或需要更多信息,请随时联系我们。 -` - ) + Text($r('app.string.privacy_content')) } .backgroundColor("#00000000") .height(300) @@ -64,14 +30,14 @@ function PrivacyView(params: PromptParams) { Column() { Row() { - Button("不同意") + Button($r('app.string.privacy_disagree')) .width("30%") .margin({ right: 20 }) .onClick(() => { params.data.setState("Disagreed") params.close() }) - Button("同意") + Button($r('app.string.privacy_agree')) .width("30%") .margin({ left: 20 }) .onClick(() => { @@ -85,4 +51,4 @@ function PrivacyView(params: PromptParams) { .width("90%") .backgroundColor($r("app.color.mfa_dialog_background")) .borderRadius(10) -} \ No newline at end of file +} diff --git a/entry/src/main/ets/pages/Setting.ets b/entry/src/main/ets/pages/Setting.ets index 9ed1dab..1744b47 100644 --- a/entry/src/main/ets/pages/Setting.ets +++ b/entry/src/main/ets/pages/Setting.ets @@ -1,9 +1,9 @@ -import { bundleManager, common, ConfigurationConstant } from "@kit.AbilityKit"; -import { picker, fileIo as fs } from "@kit.CoreFileKit"; -import { AuthDataStore, DefaultToastDuration } from "./Base"; -import { ShowPrivacyView } from "./PrivacyView"; -import { proxyServer } from "./proxy/Proxy" - +import { bundleManager, common, ConfigurationConstant } from "@kit.AbilityKit"; +import { fileIo as fs, picker } from '@kit.CoreFileKit'; +import { AuthDataStore, DefaultToastDuration } from './Base'; +import { ShowPrivacyView } from './PrivacyView'; +import { proxyServer } from './proxy/Proxy'; +import { IconPackManager } from '../components/IconPackManager'; @Component export struct Setting { @StorageLink("enableAutoDarkMode") enableAutoDarkMode: boolean = true @@ -25,7 +25,7 @@ export struct Setting { RelativeContainer() { Column() { Row() { - Text("跟随系统深色模式") + Text($r('app.string.setting_auto_dark')) .width("80%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -44,14 +44,14 @@ export struct Setting { .alignItems(VerticalAlign.Center) Row() { - Text("启用后,系统打开或关闭深色模式时,App 也跟随切换。") + Text($r('app.string.setting_auto_dark_desc')) .padding({ left: 30, right: 20 }) .fontSize(12) } .width("100%") Row() { - Text("启用安全模式") + Text($r('app.string.setting_safe_mode')) .width("80%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -64,14 +64,14 @@ export struct Setting { .alignItems(VerticalAlign.Center) Row() { - Text("启用后,打开 App 时需要通过生物识别(人脸识别,指纹,密码)解锁,解锁成功后才能查看令牌。\n启用后会在下次打开 App 时生效。") + Text($r('app.string.setting_safe_mode_desc')) .padding({ left: 30, right: 20 }) .fontSize(12) } .width("100%") Row() { - Text("隐藏令牌") + Text($r('app.string.setting_hide_token')) .width("80%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -84,15 +84,19 @@ export struct Setting { .alignItems(VerticalAlign.Center) Row() { - Text("启用后,在 App 首页的令牌将显示为星号,点击星号显示令牌。\n详情页不受此设置影响,直接显示令牌。") + Text($r('app.string.setting_hide_token_desc')) .padding({ left: 30, right: 20 }) .fontSize(12) } .width("100%") + IconPackManager() + .margin({ top: 12, bottom: 12 }) + .padding({ left: 20, right: 20 }) + if (proxyServer != "") { Row() { - Text("增强访问") + Text($r('app.string.setting_network')) .width("80%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) @@ -101,17 +105,11 @@ export struct Setting { if (this.developmentCounter >= 10) { this.developmentCounter = 0 this.developmentMode = !this.developmentMode - if (this.developmentMode) { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已启用开发者模式" - }) - } else { - this.getUIContext().getPromptAction().showToast({ - duration: DefaultToastDuration, - message: "已关闭开发者模式" - }) - } + this.getUIContext().getPromptAction().showToast({ + duration: DefaultToastDuration, + message: this.developmentMode ? $r('app.string.setting_network_enabled') : + $r('app.string.setting_network_disabled') + }) } }) Toggle({ type: ToggleType.Switch, isOn: this.enhanceNetwork }) @@ -123,7 +121,7 @@ export struct Setting { .alignItems(VerticalAlign.Center) Row() { - Text("启用后,增强通过令牌访问特定服务的稳定性。") + Text($r('app.string.setting_network_desc')) .padding({ left: 30, right: 20 }) .fontSize(12) } @@ -131,11 +129,12 @@ export struct Setting { } Row() { - Text("隐私政策") + Text($r('app.string.setting_privacy_policy')) .width("75%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - Text(this.privacyState == "Agreed" ? "已同意" : "未同意") + Text(this.privacyState == "Agreed" ? $r('app.string.setting_privacy_agreed') : + $r('app.string.setting_privacy_disagreed')) .width("15%") .fontWeight(FontWeight.Bold) .onClick(() => { @@ -143,22 +142,17 @@ export struct Setting { this.privacyState = state }) }) - } .height(40) .alignItems(VerticalAlign.Center) - Row() { - Text("无论是否同意隐私政策,均可使用所有功能。点击选项右侧的【" + (this.privacyState == "Agreed" ? "已同意" : - "未同意") + "】,可再次查看隐私政策内容。") - .padding({ left: 30, right: 20 }) - .fontSize(12) - } - .width("100%") + Text($r('app.string.setting_privacy_desc_prefix')) + .padding({ left: 30, right: 20 }) + Row() { - Button("导出令牌密钥文件(*.atsf)") - .onClick((event: ClickEvent) => { + Button($r('app.string.setting_export')) + .onClick(() => { let saveOptions = new picker.DocumentSaveOptions() saveOptions.newFileNames = ["authenticator.atsf"] saveOptions.fileSuffixChoices = [".atsf"] @@ -170,7 +164,7 @@ export struct Setting { if (uris.length != 1) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "请选择一个文件保存路径" + message: $r('app.string.setting_export_pick_single') }) return } @@ -185,7 +179,7 @@ export struct Setting { fs.close(file) this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "导出完成" + message: $r('app.string.setting_export_success') }) return }) @@ -195,7 +189,7 @@ export struct Setting { .alignItems(VerticalAlign.Center) Row() { - Text("令牌密钥文件包含 App 内所有令牌的密钥,文件内容没有加密,请小心保存以免泄露。") + Text($r('app.string.setting_export_desc')) .padding({ left: 30, right: 20 }) .fontSize(12) } @@ -203,12 +197,12 @@ export struct Setting { } Column() { - Text(`版本:${this.appInfo?.versionName}(${this.appInfo?.versionCode})`) + Text($r('app.string.setting_version_format', this.appInfo?.versionName, this.appInfo?.versionCode)) .margin(5) .copyOption(CopyOptions.LocalDevice) .fontSize(12) .fontWeight(FontWeight.Bold) - Text(`用户 QQ 群:931132608`) + Text($r('app.string.setting_qq_group_format', '931132608')) .margin(5) .copyOption(CopyOptions.LocalDevice) .fontSize(12) @@ -222,6 +216,9 @@ export struct Setting { .id("version") } } - .title("设置") + .title($r('app.string.setting_title')) } -} \ No newline at end of file +} + + + diff --git a/entry/src/main/ets/pages/Steam.ets b/entry/src/main/ets/pages/Steam.ets index 9e55d20..8350c8c 100644 --- a/entry/src/main/ets/pages/Steam.ets +++ b/entry/src/main/ets/pages/Steam.ets @@ -3,10 +3,11 @@ import { cryptoFramework } from '@kit.CryptoArchitectureKit' import { url, util } from '@kit.ArkTS' import { AsyncCallback, systemDateTime } from '@kit.BasicServicesKit' import * as steamapi from './steamapi/custom' -import * as steam2faapi from './steamapi/service_twofactor' import { EAuthSessionGuardType } from './steamapi/custom' +import * as steam2faapi from './steamapi/service_twofactor' import Long from 'long' -import { proxyServer, proxyAuthToken } from './proxy/Proxy' +import { proxyAuthToken, proxyServer } from './proxy/Proxy' +import { getLocalizedString } from '../entryability/EntryAbility' export class Confirmation { // Test = 1 @@ -268,7 +269,7 @@ export class SteamClient { const regexp = new RegExp("^https://s.team/q/(\\d+)/(\\d+)(\\?|$)"); let matchResult = regexp.exec(challengeURL) if (!matchResult || matchResult.length != 4) { - callback(new Error("无效的 Steam 登陆二维码")) + callback(new Error(getLocalizedString($r("app.string.invalid_steam_qr_code")))) return } let version = matchResult[1] @@ -850,4 +851,5 @@ export class SteamClient { }) }) } -} \ No newline at end of file +} + diff --git a/entry/src/main/ets/pages/SteamConfirmationDetail.ets b/entry/src/main/ets/pages/SteamConfirmationDetail.ets index a493301..2d29ff6 100644 --- a/entry/src/main/ets/pages/SteamConfirmationDetail.ets +++ b/entry/src/main/ets/pages/SteamConfirmationDetail.ets @@ -1,5 +1,5 @@ -import { Confirmation } from "./Steam" -import { intl } from "@kit.LocalizationKit" +import { Confirmation } from './Steam' +import { intl } from '@kit.LocalizationKit' @Component export struct SteamConfirmationDetail { @@ -10,7 +10,7 @@ export struct SteamConfirmationDetail { Scroll() { Column() { Row() { - Text("标题") + Text($r('app.string.confirm_detail_headline')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.headline) @@ -22,7 +22,7 @@ export struct SteamConfirmationDetail { if (this.confirmation.summary.join(",").length > 0) { Row() { - Text("描述") + Text($r('app.string.confirm_detail_summary')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.summary.join(",")) @@ -34,7 +34,7 @@ export struct SteamConfirmationDetail { } Row() { - Text("创建时间") + Text($r('app.string.confirm_detail_created_at')) .width("30%") .textAlign(TextAlign.Start) Text((new Date(this.confirmation.creation_time * 1000)).toLocaleString((new intl.Locale()).toString(), @@ -46,7 +46,7 @@ export struct SteamConfirmationDetail { .alignItems(VerticalAlign.Center) Row() { - Text("创建者 ID") + Text($r('app.string.confirm_detail_creator_id')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.creator_id) @@ -57,7 +57,7 @@ export struct SteamConfirmationDetail { .alignItems(VerticalAlign.Center) Row() { - Text("类型编号") + Text($r('app.string.confirm_detail_type_id')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.type.toString()) @@ -68,7 +68,7 @@ export struct SteamConfirmationDetail { .alignItems(VerticalAlign.Center) Row() { - Text("类型名称") + Text($r('app.string.confirm_detail_type_name')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.type_name) @@ -79,7 +79,7 @@ export struct SteamConfirmationDetail { .alignItems(VerticalAlign.Center) Row() { - Text("确认 ID") + Text($r('app.string.confirm_detail_confirm_id')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.id) @@ -89,9 +89,8 @@ export struct SteamConfirmationDetail { .padding({ top: 5, bottom: 5 }) .alignItems(VerticalAlign.Center) - Row() { - Text("一次性编号") + Text($r('app.string.confirm_detail_nonce')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.nonce) @@ -101,10 +100,9 @@ export struct SteamConfirmationDetail { .padding({ top: 5, bottom: 5 }) .alignItems(VerticalAlign.Center) - if (this.confirmation.icon && this.confirmation.icon.length > 0) { Row() { - Text("图标地址") + Text($r('app.string.confirm_detail_icon_url')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.icon) @@ -114,11 +112,9 @@ export struct SteamConfirmationDetail { .padding({ top: 5, bottom: 5 }) .alignItems(VerticalAlign.Center) } - - } } } - .title("确认详情") + .title($r('app.string.confirm_detail_title')) } } diff --git a/entry/src/main/ets/pages/SteamConfirmationList.ets b/entry/src/main/ets/pages/SteamConfirmationList.ets index a256037..fbfc44a 100644 --- a/entry/src/main/ets/pages/SteamConfirmationList.ets +++ b/entry/src/main/ets/pages/SteamConfirmationList.ets @@ -1,8 +1,7 @@ -import { DefaultToastDuration, SteamAuthData } from "./Base"; -import { Confirmation, SteamClient } from "./Steam"; -import { SymbolGlyphModifier } from "@kit.ArkUI"; -import { intl } from "@kit.LocalizationKit"; - +import { DefaultToastDuration, SteamAuthData } from "./Base"; +import { Confirmation, SteamClient } from './Steam'; +import { SymbolGlyphModifier } from '@kit.ArkUI'; +import { intl } from '@kit.LocalizationKit'; @Component export struct SteamConfirmationList { public steamAuthData: SteamAuthData = new SteamAuthData() @@ -16,22 +15,22 @@ export struct SteamConfirmationList { this.loadSteamConfirmations() } - getType(conf: Confirmation): string { + getType(conf: Confirmation): ResourceStr { switch (conf.type) { case 1: - return "测试" + return $r('app.string.confirm_list_type_test') case 2: - return "交易" + return $r('app.string.confirm_list_type_trade') case 3: - return "出售" + return $r('app.string.confirm_list_type_sell') case 5: - return "修改手机号码" + return $r('app.string.confirm_list_type_change_phone') case 6: - return "解绑手机号码" + return $r('app.string.confirm_list_type_remove_phone') case 9: - return "创建访问密钥" + return $r('app.string.confirm_list_type_create_key') default: - return "未知类型" + return $r('app.string.confirm_list_type_unknown') } } @@ -55,14 +54,14 @@ export struct SteamConfirmationList { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `查询失败,错误:${err.message}` + message: $r('app.string.confirm_list_query_failed_format', err.message) }) return } this.steamConfirmations = info this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: `查询成功,共 ${info.length} 条待确认记录` + message: $r('app.string.confirm_list_query_success_format', info.length) }) }) } @@ -80,8 +79,8 @@ export struct SteamConfirmationList { allowAll() { this.getUIContext().getPromptAction().showActionMenu({ - title: "全部允许?", - buttons: [{ text: "是", color: $r("app.color.item_confirm_background_color") }], + title: $r('app.string.confirm_list_allow_all'), + buttons: [{ text: $r('app.string.common_yes'), color: $r("app.color.item_confirm_background_color") }], }).then((value) => { if (value.index == 0) { this.steamClient.allow(this.steamAuthData.steamID, this.steamAuthData.refreshToken, @@ -89,7 +88,7 @@ export struct SteamConfirmationList { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "确认请求失败,错误:${err.message}" + message: $r('app.string.confirm_list_allow_failed_format', err.message) }) return } @@ -101,8 +100,8 @@ export struct SteamConfirmationList { denyAll() { this.getUIContext().getPromptAction().showActionMenu({ - title: "全部拒绝?", - buttons: [{ text: "是", color: $r("app.color.item_delete_background_color") }], + title: $r('app.string.confirm_list_deny_all'), + buttons: [{ text: $r('app.string.common_yes'), color: $r("app.color.item_delete_background_color") }], }).then((value) => { if (value.index == 0) { this.steamClient.deny(this.steamAuthData.steamID, this.steamAuthData.refreshToken, @@ -110,7 +109,7 @@ export struct SteamConfirmationList { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "拒绝请求失败,错误:${err.message}" + message: $r('app.string.confirm_list_deny_failed_format', err.message) }) return } @@ -138,7 +137,7 @@ export struct SteamConfirmationList { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "确认请求失败,错误:${err.message}" + message: $r('app.string.confirm_list_allow_failed_format', err.message) }) return } @@ -161,7 +160,7 @@ export struct SteamConfirmationList { if (err) { this.getUIContext().getPromptAction().showToast({ duration: DefaultToastDuration, - message: "拒绝请求失败,错误:${err.message}" + message: $r('app.string.confirm_list_deny_failed_format', err.message) }) return } @@ -174,7 +173,7 @@ export struct SteamConfirmationList { build() { NavDestination() { if (this.loading) { - Text("查询中...") + Text($r('app.string.confirm_list_loading')) } else { List() { ForEach(this.steamConfirmations, (item: Confirmation) => { @@ -223,9 +222,8 @@ export struct SteamConfirmationList { } } } - .title("Steam 确认列表") + .title($r('app.string.confirm_list_title')) .menus([ - { value: "allow", isEnabled: !this.loading && this.steamConfirmations.length > 0, @@ -247,3 +245,5 @@ export struct SteamConfirmationList { ]) } } + + diff --git a/entry/src/main/ets/utils/IconPackUtils.ets b/entry/src/main/ets/utils/IconPackUtils.ets new file mode 100644 index 0000000..2f7f40b --- /dev/null +++ b/entry/src/main/ets/utils/IconPackUtils.ets @@ -0,0 +1,260 @@ +import { fileIo as fs, picker } from '@kit.CoreFileKit'; +import { common } from '@kit.AbilityKit'; +import { BusinessError, zlib } from '@kit.BasicServicesKit'; +import { util } from '@kit.ArkTS'; + +export interface AegisIconDefinition { + filename: string; + category?: string; + issuer?: string[]; +} + +export class AegisIconPack { + public invalid: boolean = false; + public onDevicePath: string = ''; + public uuid: string = ''; + public name: string = ''; + public version: number = 0; + public icons: AegisIconDefinition[] = []; + private iconMap: Map = new Map(); + + buildMap(): void { + this.iconMap.clear(); + this.icons.forEach((icon) => { + (icon.issuer ?? []).forEach((issuer) => { + this.iconMap.set(issuer.toLowerCase(), icon.filename); + }); + }); + } + + getIconPathByIssuer(issuer: string): string { + const filename = this.iconMap.get(IconPackRegistry.normalizeIssuer(issuer)); + if (!filename) { + return ''; + } + return `file://${this.onDevicePath}/${filename}`; + } + + getKey(): string { + return this.onDevicePath; + } +} + +export class IconPackRegistry { + private static readonly DEFAULT_PACK_KEY = 'default'; + private static readonly DEFAULT_ISSUERS: Set = new Set([ + '1and1', '1password', '23andme', 'adafruit', 'adguard', 'adobe', 'airbnb', 'airbrake', 'airtable', 'allegropl', + 'alwaysdata', 'amazon', 'amazonwebservices', 'angellist', 'animebytes', 'anonaddy', 'apache', 'apple', 'appveyor', + 'arenanet', 'atlantic_net', 'atlassian', 'avm', 'backblaze', 'battlenet', 'betterment', 'binance', 'bitbucket', + 'bitcoin', 'bitdefender', 'bitfinex', 'bitmex', 'bitpanda', 'bitstamp', 'bittrex', 'bitwala', 'bitwarden', + 'blockchain_info', 'bugcrowd', 'cexio', 'church_tools', 'cisco', 'cloudflare', 'cloud_download', 'cobranded', + 'codegiant', 'coinbase', 'coinjar', 'computerbase', 'connectwise_manage', 'cozycloud', 'crowdin', 'dashlane', + 'debian', 'degiro', 'denic', 'deutsche_bahn', 'diaspora', 'digidentity', 'digital_ocean', 'discord', 'discourse', + 'disroot', 'docker', 'docusign', 'dreamhost', 'dropbox', 'drupal', 'electronic_arts', 'email', 'epic_games', 'etsy', + 'eveonline', 'evernote', 'facebook', 'faceit', 'fanatical', 'fastmail', 'figma', 'fingerprint', 'finnair', + 'firefox', 'flight_takeoff', 'floatplane', 'friendica', 'fritz', 'gamepad', 'gandi', 'git', 'gitea', 'github', + 'gitlab', 'gmx', 'godaddy', 'gogs', 'google', 'govuk', 'grav', 'greenhost', 'hackerone', 'heroku', 'hetzner', + 'hitbtc', 'hmrc', 'home_assistant', 'hover', 'humblebundle', 'hurricane_electric', 'ibm', 'iconomi', 'ifttt', 'ing', + 'instagram', 'inwx', 'itchio', 'jagex', 'jetbrains', 'joomla', 'keeper', 'kickstarter', 'kraken', 'kucoin', + 'lastpass', 'librenms', 'lichess', 'linkedin', 'linode', 'liqui', 'livelyme', 'lobsters', 'localbitcoins', + 'localmonero', 'login_gov', 'logmein', 'mailbox', 'mailchimp', 'mailcow', 'mailgun', 'mailru', 'mapbox', 'mastodon', + 'matomo', 'mega', 'mercadolibre', 'microsoft', 'microsoft_teams', 'migadu', 'miles_and_more', 'mint', 'miraheze', + 'mixer', 'mongodb', 'mvpsnet', 'namecheap', 'namecom', 'nas', 'netcup', 'nextcloud', 'nintendo', 'no_starch_press', + 'npm', 'oculus', 'office', 'okta', 'online', 'openvz', 'opnsense', 'orcid', 'origin', 'ovh', 'packet', + 'parsecgaming', 'passwordstate', 'patreon', 'paypal', 'paysafecard', 'paywithprivacy', 'pcloud', 'phabricator', + 'phpmyadmin', 'pluralsight', 'plurk', 'posteo', 'pretix', 'prey', 'private_internet_access', 'protonmail', + 'proxmox', 'pushover', 'pypi', 'python_anywhere', 'rackspace', 'reddit', 'revolt', 'ripe_ncc', 'ripio', 'robinhood', + 'rocketbeanstv', 'rockstar', 'rss', 'sap', 'scaleway', 'school', 'sciebo', 'sentry', 'sevdesk', 'skrill', 'slack', + 'snapchat', 'sophos', 'sourceforge', 'squarespace', 'standardnotes', 'starcitizen', 'steam', 'stripe', 'sync', + 'synology', 'teahub', 'teamviewer', 'terminal', 'tencent_cloud_services', 'todoalojamiento', 'transip', 'trello', + 'tumblr', 'turbotax', 'tutanota', 'tuwien_ac_at', 'twilio', 'twitch', 'twitter', 'uber', 'ubisoft', 'ubnt', + 'ubuntu_one', 'unity', 'uphold', 'usaa', 'vagrant_cloud', 'vexxhost', 'vk', 'vultr', 'wallabag', 'wallet', + 'wargaming', 'wasabi', 'weclapp', 'wikimedia', 'wordpress', 'workplace', 'xero', 'xerox', 'xing', 'yandex_money', + 'zapier', 'zendesk', 'zoho', 'zoom', 'feishu', 'nexus_mods' + ]); + + static normalizeIssuer(issuer: string): string { + return issuer.trim().toLowerCase().replaceAll(' ', '_'); + } + + static getDefaultPackKey(): string { + return IconPackRegistry.DEFAULT_PACK_KEY; + } + + static getIconPackDirectory(context: common.UIAbilityContext): string { + return `${context.filesDir}/icon_packs`; + } + + static ensureIconPackDirectory(context: common.UIAbilityContext): string { + const dir = IconPackRegistry.getIconPackDirectory(context); + if (!fs.accessSync(dir)) { + fs.mkdirSync(dir); + } + return dir; + } + + static getDefaultIconPathByIssuer(issuer: string): string { + const normalized = IconPackRegistry.normalizeIssuer(issuer); + if (!IconPackRegistry.DEFAULT_ISSUERS.has(normalized)) { + return ''; + } + return `rawfile://icons/token_image_${normalized}.svg`; + } + + static getIconPathByIssuer(issuer: string, selectedPackKey: string, installedPacks: AegisIconPack[]): string { + if (!selectedPackKey || selectedPackKey === IconPackRegistry.DEFAULT_PACK_KEY) { + return IconPackRegistry.getDefaultIconPathByIssuer(issuer); + } + + const pack = installedPacks.find((item) => item.getKey() === selectedPackKey && !item.invalid); + if (!pack) { + return IconPackRegistry.getDefaultIconPathByIssuer(issuer); + } + + return pack.getIconPathByIssuer(issuer); + } + + static async loadInstalledPacks(context: common.UIAbilityContext): Promise { + const dir = IconPackRegistry.ensureIconPackDirectory(context); + let folders: string[] = []; + try { + folders = await fs.listFile(dir); + } catch (_) { + return []; + } + + const packs: AegisIconPack[] = []; + for (const folder of folders) { + const packPath = `${dir}/${folder}`; + const pack = await IconPackRegistry.loadSinglePack(packPath); + if (pack) { + packs.push(pack); + } + } + packs.sort((left, right) => left.name.localeCompare(right.name)); + return packs; + } + + private static async loadSinglePack(packPath: string): Promise { + const packJsonPath = `${packPath}/pack.json`; + if (!fs.accessSync(packJsonPath)) { + const invalidPack = new AegisIconPack(); + invalidPack.invalid = true; + invalidPack.onDevicePath = packPath; + invalidPack.name = packPath.substring(packPath.lastIndexOf('/') + 1); + return invalidPack; + } + + try { + const content = await IconPackRegistry.readTextFile(packJsonPath); + const parsed = JSON.parse(content) as AegisIconPack; + const pack = new AegisIconPack(); + pack.onDevicePath = packPath; + pack.uuid = parsed.uuid ?? ''; + pack.name = parsed.name ?? packPath.substring(packPath.lastIndexOf('/') + 1); + pack.version = parsed.version ?? 0; + pack.icons = parsed.icons ?? []; + pack.buildMap(); + return pack; + } catch (_) { + const invalidPack = new AegisIconPack(); + invalidPack.invalid = true; + invalidPack.onDevicePath = packPath; + invalidPack.name = packPath.substring(packPath.lastIndexOf('/') + 1); + return invalidPack; + } + } + + static async importFromZip(context: common.UIAbilityContext, zipUri: string): Promise { + const dir = IconPackRegistry.ensureIconPackDirectory(context); + const zipFile = fs.openSync(zipUri, fs.OpenMode.READ_ONLY); + const zipPath = zipFile.path; + const zipName = zipPath.substring(zipPath.lastIndexOf('/') + 1); + await fs.close(zipFile.fd); + + const baseName = zipName.endsWith('.zip') ? zipName.substring(0, zipName.length - 4) : zipName; + let targetDir = `${dir}/${baseName}`; + let suffix = 1; + while (fs.accessSync(targetDir)) { + targetDir = `${dir}/${baseName}_${suffix++}`; + } + + fs.mkdirSync(targetDir); + try { + await zlib.decompressFile(zipPath, targetDir); + } catch (error) { + IconPackRegistry.safeRemoveDir(targetDir); + throw new Error(IconPackRegistry.formatImportError(error as Object)); + } + + const pack = await IconPackRegistry.loadSinglePack(targetDir); + if (!pack || pack.invalid) { + IconPackRegistry.safeRemoveDir(targetDir); + throw new Error('Invalid icon pack'); + } + } + + static async pickZipFiles(context: common.UIAbilityContext): Promise { + const options = new picker.DocumentSelectOptions(); + options.maxSelectNumber = 5; + options.fileSuffixFilters = ['.zip']; + const viewPicker = new picker.DocumentViewPicker(context); + return viewPicker.select(options); + } + + static async removePack(pack: AegisIconPack): Promise { + if (!pack.onDevicePath) { + return; + } + try { + await fs.rmdir(pack.onDevicePath); + } catch (_) { + IconPackRegistry.safeRemoveDir(pack.onDevicePath); + } + } + + private static safeRemoveDir(path: string): void { + if (!fs.accessSync(path)) { + return; + } + try { + fs.rmdirSync(path); + } catch (_) { + try { + const files = fs.listFileSync(path); + files.forEach((name) => { + const child = `${path}/${name}`; + try { + fs.unlinkSync(child); + } catch (_) { + IconPackRegistry.safeRemoveDir(child); + } + }); + fs.rmdirSync(path); + } catch (_) { + } + } + } + + private static async readTextFile(uri: string): Promise { + const file = await fs.open(uri, fs.OpenMode.READ_ONLY); + try { + const stat = fs.statSync(file.fd); + const buffer = new ArrayBuffer(stat.size); + const readBytes = fs.readSync(file.fd, buffer); + return new util.TextDecoder().decodeToString(new Uint8Array(buffer.slice(0, readBytes))); + } finally { + await fs.close(file.fd); + } + } + + static formatImportError(error: Object): string { + const businessError = error as BusinessError; + if (businessError && businessError.message) { + return businessError.message; + } + return `${error}`; + } +} + + diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json index 00eb40f..5757c38 100644 --- a/entry/src/main/resources/base/element/color.json +++ b/entry/src/main/resources/base/element/color.json @@ -31,6 +31,10 @@ { "name": "start_window_background", "value": "#F1F1F1" + }, + { + "name": "icon_pack_row_background", + "value": "#f5f5f5" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index 4c761d3..e2c188a 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -23,6 +23,686 @@ { "name": "EntryAbility_label", "value": "KDAuth" + }, + { + "name": "common_cancel", + "value": "Cancel" + }, + { + "name": "common_confirm", + "value": "Confirm" + }, + { + "name": "common_add", + "value": "Add" + }, + { + "name": "common_login", + "value": "Login" + }, + { + "name": "common_yes", + "value": "Yes" + }, + { + "name": "common_safe_mode_unlock_first", + "value": "Safe mode is enabled. Please unlock first." + }, + { + "name": "common_enter_token_first", + "value": "Please enter the token first." + }, + { + "name": "common_enter_code_first", + "value": "Please enter the verification code first." + }, + { + "name": "base_unknown_file_format", + "value": "Unknown file format." + }, + { + "name": "base_invalid_scheme_format", + "value": "Invalid scheme: %s" + }, + { + "name": "base_recover_item_missing_format", + "value": "Token secret #%d is missing %s" + }, + { + "name": "base_missing_format", + "value": "Missing %s" + }, + { + "name": "add_title", + "value": "Add" + }, + { + "name": "add_totp_secret_title", + "value": "Add via TOTP secret" + }, + { + "name": "add_totp_secret_desc", + "value": "A TOTP secret is a string made of A-Z and 2-7, for example: ABCDEFGHIJ234567" + }, + { + "name": "add_totp_uri_title", + "value": "Add via TOTP URI" + }, + { + "name": "add_totp_uri_desc", + "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567\u0026issuer=Example" + }, + { + "name": "add_restore_title", + "value": "Restore from token secret file (*.atsf)" + }, + { + "name": "add_restore_desc", + "value": "The token secret file (*.atsf) can be exported from Settings. Editing the file may make restore fail. Restore does not overwrite existing tokens, so remove duplicates manually if needed." + }, + { + "name": "add_restore_pick_single", + "value": "Please select one token secret file." + }, + { + "name": "add_restore_success", + "value": "Restore completed." + }, + { + "name": "add_restore_error_format", + "value": "Restore failed: %s" + }, + { + "name": "add_steam_title", + "value": "Add Steam token" + }, + { + "name": "add_steam_desc", + "value": "Supports 5-character tokens, QR login, and trade confirmations." + }, + { + "name": "add_secret_title", + "value": "Add via TOTP secret" + }, + { + "name": "add_secret_provider", + "value": "Provider" + }, + { + "name": "add_secret_provider_placeholder", + "value": "Enter provider name" + }, + { + "name": "add_secret_account", + "value": "Account" + }, + { + "name": "add_secret_account_placeholder", + "value": "Username or email" + }, + { + "name": "add_secret_secret", + "value": "Secret" + }, + { + "name": "add_secret_secret_placeholder", + "value": "Characters A-Z and 2-7 only" + }, + { + "name": "add_secret_digits", + "value": "Digits" + }, + { + "name": "add_secret_invalid_secret", + "value": "The secret must contain only A-Z and 2-7, with at least 2 characters." + }, + { + "name": "add_secret_error_format", + "value": "TOTP error: %s" + }, + { + "name": "add_uri_title", + "value": "Add via TOTP URI" + }, + { + "name": "add_uri_heading", + "value": "Enter TOTP URI" + }, + { + "name": "add_uri_desc", + "value": "If you need to add multiple entries, enter one URI per line." + }, + { + "name": "add_uri_partial_error_format", + "value": "Added %d item(s). The TOTP URI on line %d is invalid: %s" + }, + { + "name": "add_steam_secret_title", + "value": "Add Steam token" + }, + { + "name": "index_auth_title", + "value": "Please authenticate" + }, + { + "name": "index_empty", + "value": "No token has been added yet.\nTap the add or scan button in the top-right corner to add one." + }, + { + "name": "index_add_success", + "value": "Token added successfully." + }, + { + "name": "index_no_steam_token", + "value": "No Steam token found. Scan login to Steam is unavailable. Please add a Steam token first." + }, + { + "name": "index_no_steam_auth", + "value": "The Steam token has no authentication info set. Scan login to Steam is unavailable. Please configure it in the token details page." + }, + { + "name": "index_go_to_steam_detail", + "value": "Please scan to log in on the Steam token details page." + }, + { + "name": "detail_steam_input_title", + "value": "Enter Steam auth info" + }, + { + "name": "detail_steam_input_desc", + "value": "After authentication is configured, you can use Steam QR login and trade confirmations." + }, + { + "name": "detail_steam_input_error_format", + "value": "Invalid auth info format. Please make sure the content comes from a maFile: %s" + }, + { + "name": "detail_steam_invalid_error_format", + "value": "Invalid auth info format: %s, content: %s" + }, + { + "name": "detail_steam_login_failed_format", + "value": "Steam login failed: %s" + }, + { + "name": "detail_steam_login_success", + "value": "Steam login succeeded." + }, + { + "name": "detail_steam_login_start", + "value": "Starting Steam login..." + }, + { + "name": "detail_steam_section_title", + "value": "----- Steam Authentication -----" + }, + { + "name": "detail_steam_section_desc", + "value": "If QR login or trade confirmations time out or fail, enable Enhanced Network in Settings." + }, + { + "name": "detail_steam_account", + "value": "Steam account" + }, + { + "name": "detail_steam_id", + "value": "Steam ID" + }, + { + "name": "detail_device_id", + "value": "Device ID" + }, + { + "name": "detail_expire_time", + "value": "Expiration" + }, + { + "name": "detail_reset", + "value": "Reset" + }, + { + "name": "detail_update_expire", + "value": "Refresh expiry" + }, + { + "name": "detail_setup_steam", + "value": "Set up Steam auth info" + }, + { + "name": "detail_alias", + "value": "Alias" + }, + { + "name": "detail_account", + "value": "Account" + }, + { + "name": "detail_issuer", + "value": "Issuer" + }, + { + "name": "detail_digits", + "value": "Digits" + }, + { + "name": "setting_title", + "value": "Settings" + }, + { + "name": "setting_auto_dark", + "value": "Follow system dark mode" + }, + { + "name": "setting_auto_dark_desc", + "value": "When enabled, the app follows the system appearance automatically." + }, + { + "name": "setting_safe_mode", + "value": "Enable safe mode" + }, + { + "name": "setting_safe_mode_desc", + "value": "When enabled, opening the app requires biometric or PIN authentication before viewing tokens. It takes effect the next time the app starts." + }, + { + "name": "setting_hide_token", + "value": "Hide tokens" + }, + { + "name": "setting_hide_token_desc", + "value": "When enabled, tokens on the home page are hidden by default. Tap to reveal them. The details page is not affected." + }, + { + "name": "icon_pack_title", + "value": "Icon packs" + }, + { + "name": "icon_pack_desc", + "value": "Use built-in issuer icons or import Aegis-compatible zip packs." + }, + { + "name": "icon_pack_manage", + "value": "Manage" + }, + { + "name": "icon_pack_hide", + "value": "Hide" + }, + { + "name": "icon_pack_builtin", + "value": "Built-in" + }, + { + "name": "icon_pack_builtin_desc", + "value": "Default issuer icon library" + }, + { + "name": "icon_pack_import", + "value": "Import zip" + }, + { + "name": "icon_pack_remove", + "value": "Remove" + }, + { + "name": "icon_pack_import_success", + "value": "Icon pack imported" + }, + { + "name": "icon_pack_import_failed_format", + "value": "Import failed: %s" + }, + { + "name": "icon_pack_remove_success", + "value": "Icon pack removed" + }, + { + "name": "icon_pack_remove_failed_format", + "value": "Remove failed: %s" + }, + { + "name": "icon_pack_installed_count_format", + "value": "%d installed" + }, + { + "name": "icon_pack_invalid_name_format", + "value": "%s (invalid)" + }, + { + "name": "icon_pack_invalid_desc", + "value": "pack.json missing or invalid" + }, + { + "name": "icon_pack_meta_format", + "value": "%d icons · v%s" + }, + { + "name": "setting_network", + "value": "Enhanced network" + }, + { + "name": "setting_network_enabled", + "value": "Developer mode enabled." + }, + { + "name": "setting_network_disabled", + "value": "Developer mode disabled." + }, + { + "name": "setting_network_desc", + "value": "When enabled, improves access stability for token-related network services." + }, + { + "name": "setting_privacy_policy", + "value": "Privacy policy" + }, + { + "name": "setting_privacy_agreed", + "value": "Agreed" + }, + { + "name": "setting_privacy_disagreed", + "value": "Not agreed" + }, + { + "name": "setting_privacy_desc_prefix", + "value": "All features are available regardless of whether you agree to the privacy policy. Tap the status on the right to review it again." + }, + { + "name": "setting_export", + "value": "Export token secret file (.atsf)" + }, + { + "name": "setting_export_pick_single", + "value": "Please choose exactly one file path." + }, + { + "name": "setting_export_success", + "value": "Export completed." + }, + { + "name": "setting_export_desc", + "value": "The token secret file contains all token secrets stored in the app. The file is not encrypted, so please keep it safe." + }, + { + "name": "setting_version_format", + "value": "Version: %s(%d)" + }, + { + "name": "setting_qq_group_format", + "value": "User QQ group: %s" + }, + { + "name": "privacy_title", + "value": "Privacy Policy" + }, + { + "name": "privacy_content", + "value": "更新日期:2025/04/03\n生效日期:2025/04/03\n导言\n千维验证器是一款由 郭维 (以下简称“我们”)提供的产品。 您在使用我们的服务时,我们不会收集和使用您的相关信息,我们希望通过本《隐私政策》向您说明。本《隐私政策》与您所使用的千维验证器服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。本《隐私政策》中涉及的相关技术词汇,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您的理解。\n\n您使用或继续使用我们的服务,即意味着同意本《隐私政策》。\n\n感谢您使用我们的服务!我们重视您的隐私,并承诺保护您的个人信息。在使用本服务时,我们希望向您明确声明,我们不会主动收集、存储或共享任何个人信息。请您在使用本服务前,仔细阅读本隐私政策。\n\n1. 我们不收集个人信息\n在您使用本服务的过程中,我们不会主动收集您的任何个人信息。无论您是匿名使用服务,还是以其他方式与我们进行互动,我们都不会要求或获取您的姓名、电子邮件地址、电话号码、住址、支付信息等个人身份信息。\n\n2. 不涉及第三方数据共享\n由于我们不收集任何个人信息,我们也不会将您的任何数据与第三方共享、出售或租赁。您的隐私安全对我们来说至关重要,我们不会向任何第三方提供与您身份相关的任何数据。\n\n3. 技术数据收集\n尽管我们不会收集您的个人信息,但我们可能会使用一些常见的技术手段来收集非个人信息,例如您的设备类型、浏览器类型、操作系统版本、访问日期和时间等。这些信息仅用于改善服务质量和用户体验,不会用于识别您个人身份。\n\n4. 数据存储\n由于我们不会收集个人信息,因此不会在服务器上存储任何与您身份相关的个人数据。任何与服务有关的日志数据都仅用于技术分析和系统维护,且不会用于任何身份识别。\n\n5. 安全性\n虽然我们不收集您的个人信息,但我们依然采取合理的安全措施来保护我们服务的数据安全。这些措施包括但不限于加密技术、服务器安全和网络防护,以确保我们的系统免受外部攻击或数据泄露。\n\n6. 儿童隐私\n我们的服务并不针对儿童,我们不会 knowingly 收集或请求未满18岁用户的个人信息。如果我们发现收集了未满18岁用户的个人信息,我们将尽快删除相关数据。\n\n7. 政策变更\n我们可能会根据法律、政策或服务改进的需要,适时更新或修改本隐私政策。如果本隐私政策发生重要变更,我们将在适当的地方进行通知,以确保您及时了解我们的隐私保护措施。\n\n8. 联系我们\n如果您对本隐私政策有任何疑问或需要更多信息,请随时联系我们。" + }, + { + "name": "privacy_disagree", + "value": "Disagree" + }, + { + "name": "privacy_agree", + "value": "Agree" + }, + { + "name": "confirm_detail_title", + "value": "Confirmation details" + }, + { + "name": "confirm_detail_headline", + "value": "Title" + }, + { + "name": "confirm_detail_summary", + "value": "Summary" + }, + { + "name": "confirm_detail_created_at", + "value": "Created at" + }, + { + "name": "confirm_detail_creator_id", + "value": "Creator ID" + }, + { + "name": "confirm_detail_type_id", + "value": "Type ID" + }, + { + "name": "confirm_detail_type_name", + "value": "Type name" + }, + { + "name": "confirm_detail_confirm_id", + "value": "Confirmation ID" + }, + { + "name": "confirm_detail_nonce", + "value": "Nonce" + }, + { + "name": "confirm_detail_icon_url", + "value": "Icon URL" + }, + { + "name": "confirm_list_title", + "value": "Steam confirmations" + }, + { + "name": "confirm_list_type_test", + "value": "Test" + }, + { + "name": "confirm_list_type_trade", + "value": "Trade" + }, + { + "name": "confirm_list_type_sell", + "value": "Sell" + }, + { + "name": "confirm_list_type_change_phone", + "value": "Change phone number" + }, + { + "name": "confirm_list_type_remove_phone", + "value": "Remove phone number" + }, + { + "name": "confirm_list_type_create_key", + "value": "Create access key" + }, + { + "name": "confirm_list_type_unknown", + "value": "Unknown type" + }, + { + "name": "confirm_list_query_failed_format", + "value": "Query failed: %s" + }, + { + "name": "confirm_list_query_success_format", + "value": "Query succeeded. Pending items: %d" + }, + { + "name": "confirm_list_allow_all", + "value": "Allow all?" + }, + { + "name": "confirm_list_deny_all", + "value": "Deny all?" + }, + { + "name": "confirm_list_allow_failed_format", + "value": "Allow request failed: %s" + }, + { + "name": "confirm_list_deny_failed_format", + "value": "Deny request failed: %s" + }, + { + "name": "confirm_list_loading", + "value": "Querying..." + }, + { + "name": "steam_intro_title", + "value": "How it works" + }, + { + "name": "steam_intro_steps", + "value": "1. Sign in to Steam\n2. Add an authenticator to Steam" + }, + { + "name": "steam_intro_note", + "value": "Note: You will need to enter your Steam password and verification code during the process. If requests time out or fail, enable Enhanced Network in Settings." + }, + { + "name": "steam_start_now", + "value": "Start now" + }, + { + "name": "steam_login_title", + "value": "Sign in to Steam" + }, + { + "name": "steam_login_prompt", + "value": "Enter your Steam account name and password" + }, + { + "name": "steam_account_name", + "value": "Account name" + }, + { + "name": "steam_password", + "value": "Password" + }, + { + "name": "steam_login_fetching_auth", + "value": "Steam login succeeded. Fetching authentication info..." + }, + { + "name": "steam_auth_fetch_failed_format", + "value": "Failed to fetch Steam authentication info: %s" + }, + { + "name": "steam_mfa_device_confirmation", + "value": "Steam has multi-factor authentication enabled. Confirm this sign-in on another device, then tap Complete sign-in." + }, + { + "name": "steam_mfa_email_confirmation", + "value": "Steam has multi-factor authentication enabled. A confirmation email has been sent. Tap the confirmation link in the email, then tap Complete sign-in." + }, + { + "name": "steam_mfa_device_code", + "value": "Steam has multi-factor authentication enabled. Get the token from your bound authenticator and enter it below." + }, + { + "name": "steam_mfa_email_code", + "value": "Steam has multi-factor authentication enabled. The token was sent by email. Enter it below." + }, + { + "name": "steam_complete_login", + "value": "Complete sign-in" + }, + { + "name": "steam_fetching_auth", + "value": "Fetching Steam authentication info..." + }, + { + "name": "steam_link_success_format", + "value": "Signed in successfully as %s. Tap Add to add Authenticator to Steam." + }, + { + "name": "steam_add_authenticator_failed_format", + "value": "Failed to add Authenticator: %s" + }, + { + "name": "steam_confirm_link_sms", + "value": "Steam is adding an authenticator. Enter the SMS verification code." + }, + { + "name": "steam_confirm_link_email", + "value": "Steam is adding an authenticator. The verification code was sent by email. Enter the code." + }, + { + "name": "steam_complete_add", + "value": "Complete add" + }, + { + "name": "steam_finalize_failed_format", + "value": "Failed to add authenticator: %s" + }, + { + "name": "steam_token_mismatch", + "value": "The generated token does not match Steam. Tap Complete add once more." + }, + { + "name": "steam_add_success", + "value": "Added successfully." + }, + { + "name": "steam_transfer_prompt", + "value": "Another authenticator is already added. Do you want to transfer it?" + }, + { + "name": "steam_transfer_note", + "value": "Important: Make sure the Steam account is already linked to a phone number, otherwise transfer will fail." + }, + { + "name": "steam_transfer_button", + "value": "Transfer" + }, + { + "name": "steam_transfer_failed_format", + "value": "Failed to transfer authenticator: %s" + }, + { + "name": "steam_transfer_sms", + "value": "Steam is transferring the authenticator. Enter the SMS verification code." + }, + { + "name": "steam_complete_transfer", + "value": "Complete transfer" + }, + { + "name": "steam_refresh_title", + "value": "Refresh Steam auth expiry" + }, + { + "name": "steam_refresh_prompt", + "value": "Refreshing requires signing in to Steam again. Enter your password." + }, + { + "name": "steam_refresh_confirmation_type_error_format", + "value": "Steam login succeeded, but the confirmation type is invalid: %d" + }, + { + "name": "steam_refresh_submitting", + "value": "Steam login succeeded. Submitting token..." + }, + { + "name": "steam_refresh_submit_failed_format", + "value": "Failed to submit Steam token: %s" + }, + { + "name": "steam_refresh_submit_success", + "value": "Steam token submitted successfully. Fetching authentication info..." + }, + { + "name": "steam_refresh_success", + "value": "Steam authentication info updated successfully." + }, + { + "name": "common_scan_failed_format", + "value": "Scan failed: %s" + }, + { + "name": "invalid_steam_qr_code", + "value": "Invalid Steam login QR code." } ] } \ No newline at end of file diff --git a/entry/src/main/resources/dark/element/color.json b/entry/src/main/resources/dark/element/color.json index 86c3edd..ea360c7 100644 --- a/entry/src/main/resources/dark/element/color.json +++ b/entry/src/main/resources/dark/element/color.json @@ -31,6 +31,10 @@ { "name": "start_window_background", "value": "#000000" + }, + { + "name": "icon_pack_row_background", + "value": "#191919" } ] } diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index 4c761d3..e2c188a 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -23,6 +23,686 @@ { "name": "EntryAbility_label", "value": "KDAuth" + }, + { + "name": "common_cancel", + "value": "Cancel" + }, + { + "name": "common_confirm", + "value": "Confirm" + }, + { + "name": "common_add", + "value": "Add" + }, + { + "name": "common_login", + "value": "Login" + }, + { + "name": "common_yes", + "value": "Yes" + }, + { + "name": "common_safe_mode_unlock_first", + "value": "Safe mode is enabled. Please unlock first." + }, + { + "name": "common_enter_token_first", + "value": "Please enter the token first." + }, + { + "name": "common_enter_code_first", + "value": "Please enter the verification code first." + }, + { + "name": "base_unknown_file_format", + "value": "Unknown file format." + }, + { + "name": "base_invalid_scheme_format", + "value": "Invalid scheme: %s" + }, + { + "name": "base_recover_item_missing_format", + "value": "Token secret #%d is missing %s" + }, + { + "name": "base_missing_format", + "value": "Missing %s" + }, + { + "name": "add_title", + "value": "Add" + }, + { + "name": "add_totp_secret_title", + "value": "Add via TOTP secret" + }, + { + "name": "add_totp_secret_desc", + "value": "A TOTP secret is a string made of A-Z and 2-7, for example: ABCDEFGHIJ234567" + }, + { + "name": "add_totp_uri_title", + "value": "Add via TOTP URI" + }, + { + "name": "add_totp_uri_desc", + "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567\u0026issuer=Example" + }, + { + "name": "add_restore_title", + "value": "Restore from token secret file (*.atsf)" + }, + { + "name": "add_restore_desc", + "value": "The token secret file (*.atsf) can be exported from Settings. Editing the file may make restore fail. Restore does not overwrite existing tokens, so remove duplicates manually if needed." + }, + { + "name": "add_restore_pick_single", + "value": "Please select one token secret file." + }, + { + "name": "add_restore_success", + "value": "Restore completed." + }, + { + "name": "add_restore_error_format", + "value": "Restore failed: %s" + }, + { + "name": "add_steam_title", + "value": "Add Steam token" + }, + { + "name": "add_steam_desc", + "value": "Supports 5-character tokens, QR login, and trade confirmations." + }, + { + "name": "add_secret_title", + "value": "Add via TOTP secret" + }, + { + "name": "add_secret_provider", + "value": "Provider" + }, + { + "name": "add_secret_provider_placeholder", + "value": "Enter provider name" + }, + { + "name": "add_secret_account", + "value": "Account" + }, + { + "name": "add_secret_account_placeholder", + "value": "Username or email" + }, + { + "name": "add_secret_secret", + "value": "Secret" + }, + { + "name": "add_secret_secret_placeholder", + "value": "Characters A-Z and 2-7 only" + }, + { + "name": "add_secret_digits", + "value": "Digits" + }, + { + "name": "add_secret_invalid_secret", + "value": "The secret must contain only A-Z and 2-7, with at least 2 characters." + }, + { + "name": "add_secret_error_format", + "value": "TOTP error: %s" + }, + { + "name": "add_uri_title", + "value": "Add via TOTP URI" + }, + { + "name": "add_uri_heading", + "value": "Enter TOTP URI" + }, + { + "name": "add_uri_desc", + "value": "If you need to add multiple entries, enter one URI per line." + }, + { + "name": "add_uri_partial_error_format", + "value": "Added %d item(s). The TOTP URI on line %d is invalid: %s" + }, + { + "name": "add_steam_secret_title", + "value": "Add Steam token" + }, + { + "name": "index_auth_title", + "value": "Please authenticate" + }, + { + "name": "index_empty", + "value": "No token has been added yet.\nTap the add or scan button in the top-right corner to add one." + }, + { + "name": "index_add_success", + "value": "Token added successfully." + }, + { + "name": "index_no_steam_token", + "value": "No Steam token found. Scan login to Steam is unavailable. Please add a Steam token first." + }, + { + "name": "index_no_steam_auth", + "value": "The Steam token has no authentication info set. Scan login to Steam is unavailable. Please configure it in the token details page." + }, + { + "name": "index_go_to_steam_detail", + "value": "Please scan to log in on the Steam token details page." + }, + { + "name": "detail_steam_input_title", + "value": "Enter Steam auth info" + }, + { + "name": "detail_steam_input_desc", + "value": "After authentication is configured, you can use Steam QR login and trade confirmations." + }, + { + "name": "detail_steam_input_error_format", + "value": "Invalid auth info format. Please make sure the content comes from a maFile: %s" + }, + { + "name": "detail_steam_invalid_error_format", + "value": "Invalid auth info format: %s, content: %s" + }, + { + "name": "detail_steam_login_failed_format", + "value": "Steam login failed: %s" + }, + { + "name": "detail_steam_login_success", + "value": "Steam login succeeded." + }, + { + "name": "detail_steam_login_start", + "value": "Starting Steam login..." + }, + { + "name": "detail_steam_section_title", + "value": "----- Steam Authentication -----" + }, + { + "name": "detail_steam_section_desc", + "value": "If QR login or trade confirmations time out or fail, enable Enhanced Network in Settings." + }, + { + "name": "detail_steam_account", + "value": "Steam account" + }, + { + "name": "detail_steam_id", + "value": "Steam ID" + }, + { + "name": "detail_device_id", + "value": "Device ID" + }, + { + "name": "detail_expire_time", + "value": "Expiration" + }, + { + "name": "detail_reset", + "value": "Reset" + }, + { + "name": "detail_update_expire", + "value": "Refresh expiry" + }, + { + "name": "detail_setup_steam", + "value": "Set up Steam auth info" + }, + { + "name": "detail_alias", + "value": "Alias" + }, + { + "name": "detail_account", + "value": "Account" + }, + { + "name": "detail_issuer", + "value": "Issuer" + }, + { + "name": "detail_digits", + "value": "Digits" + }, + { + "name": "setting_title", + "value": "Settings" + }, + { + "name": "setting_auto_dark", + "value": "Follow system dark mode" + }, + { + "name": "setting_auto_dark_desc", + "value": "When enabled, the app follows the system appearance automatically." + }, + { + "name": "setting_safe_mode", + "value": "Enable safe mode" + }, + { + "name": "setting_safe_mode_desc", + "value": "When enabled, opening the app requires biometric or PIN authentication before viewing tokens. It takes effect the next time the app starts." + }, + { + "name": "setting_hide_token", + "value": "Hide tokens" + }, + { + "name": "setting_hide_token_desc", + "value": "When enabled, tokens on the home page are hidden by default. Tap to reveal them. The details page is not affected." + }, + { + "name": "icon_pack_title", + "value": "Icon packs" + }, + { + "name": "icon_pack_desc", + "value": "Use built-in issuer icons or import Aegis-compatible zip packs." + }, + { + "name": "icon_pack_manage", + "value": "Manage" + }, + { + "name": "icon_pack_hide", + "value": "Hide" + }, + { + "name": "icon_pack_builtin", + "value": "Built-in" + }, + { + "name": "icon_pack_builtin_desc", + "value": "Default issuer icon library" + }, + { + "name": "icon_pack_import", + "value": "Import zip" + }, + { + "name": "icon_pack_remove", + "value": "Remove" + }, + { + "name": "icon_pack_import_success", + "value": "Icon pack imported" + }, + { + "name": "icon_pack_import_failed_format", + "value": "Import failed: %s" + }, + { + "name": "icon_pack_remove_success", + "value": "Icon pack removed" + }, + { + "name": "icon_pack_remove_failed_format", + "value": "Remove failed: %s" + }, + { + "name": "icon_pack_installed_count_format", + "value": "%d installed" + }, + { + "name": "icon_pack_invalid_name_format", + "value": "%s (invalid)" + }, + { + "name": "icon_pack_invalid_desc", + "value": "pack.json missing or invalid" + }, + { + "name": "icon_pack_meta_format", + "value": "%d icons · v%s" + }, + { + "name": "setting_network", + "value": "Enhanced network" + }, + { + "name": "setting_network_enabled", + "value": "Developer mode enabled." + }, + { + "name": "setting_network_disabled", + "value": "Developer mode disabled." + }, + { + "name": "setting_network_desc", + "value": "When enabled, improves access stability for token-related network services." + }, + { + "name": "setting_privacy_policy", + "value": "Privacy policy" + }, + { + "name": "setting_privacy_agreed", + "value": "Agreed" + }, + { + "name": "setting_privacy_disagreed", + "value": "Not agreed" + }, + { + "name": "setting_privacy_desc_prefix", + "value": "All features are available regardless of whether you agree to the privacy policy. Tap the status on the right to review it again." + }, + { + "name": "setting_export", + "value": "Export token secret file (.atsf)" + }, + { + "name": "setting_export_pick_single", + "value": "Please choose exactly one file path." + }, + { + "name": "setting_export_success", + "value": "Export completed." + }, + { + "name": "setting_export_desc", + "value": "The token secret file contains all token secrets stored in the app. The file is not encrypted, so please keep it safe." + }, + { + "name": "setting_version_format", + "value": "Version: %s(%d)" + }, + { + "name": "setting_qq_group_format", + "value": "User QQ group: %s" + }, + { + "name": "privacy_title", + "value": "Privacy Policy" + }, + { + "name": "privacy_content", + "value": "更新日期:2025/04/03\n生效日期:2025/04/03\n导言\n千维验证器是一款由 郭维 (以下简称“我们”)提供的产品。 您在使用我们的服务时,我们不会收集和使用您的相关信息,我们希望通过本《隐私政策》向您说明。本《隐私政策》与您所使用的千维验证器服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。本《隐私政策》中涉及的相关技术词汇,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您的理解。\n\n您使用或继续使用我们的服务,即意味着同意本《隐私政策》。\n\n感谢您使用我们的服务!我们重视您的隐私,并承诺保护您的个人信息。在使用本服务时,我们希望向您明确声明,我们不会主动收集、存储或共享任何个人信息。请您在使用本服务前,仔细阅读本隐私政策。\n\n1. 我们不收集个人信息\n在您使用本服务的过程中,我们不会主动收集您的任何个人信息。无论您是匿名使用服务,还是以其他方式与我们进行互动,我们都不会要求或获取您的姓名、电子邮件地址、电话号码、住址、支付信息等个人身份信息。\n\n2. 不涉及第三方数据共享\n由于我们不收集任何个人信息,我们也不会将您的任何数据与第三方共享、出售或租赁。您的隐私安全对我们来说至关重要,我们不会向任何第三方提供与您身份相关的任何数据。\n\n3. 技术数据收集\n尽管我们不会收集您的个人信息,但我们可能会使用一些常见的技术手段来收集非个人信息,例如您的设备类型、浏览器类型、操作系统版本、访问日期和时间等。这些信息仅用于改善服务质量和用户体验,不会用于识别您个人身份。\n\n4. 数据存储\n由于我们不会收集个人信息,因此不会在服务器上存储任何与您身份相关的个人数据。任何与服务有关的日志数据都仅用于技术分析和系统维护,且不会用于任何身份识别。\n\n5. 安全性\n虽然我们不收集您的个人信息,但我们依然采取合理的安全措施来保护我们服务的数据安全。这些措施包括但不限于加密技术、服务器安全和网络防护,以确保我们的系统免受外部攻击或数据泄露。\n\n6. 儿童隐私\n我们的服务并不针对儿童,我们不会 knowingly 收集或请求未满18岁用户的个人信息。如果我们发现收集了未满18岁用户的个人信息,我们将尽快删除相关数据。\n\n7. 政策变更\n我们可能会根据法律、政策或服务改进的需要,适时更新或修改本隐私政策。如果本隐私政策发生重要变更,我们将在适当的地方进行通知,以确保您及时了解我们的隐私保护措施。\n\n8. 联系我们\n如果您对本隐私政策有任何疑问或需要更多信息,请随时联系我们。" + }, + { + "name": "privacy_disagree", + "value": "Disagree" + }, + { + "name": "privacy_agree", + "value": "Agree" + }, + { + "name": "confirm_detail_title", + "value": "Confirmation details" + }, + { + "name": "confirm_detail_headline", + "value": "Title" + }, + { + "name": "confirm_detail_summary", + "value": "Summary" + }, + { + "name": "confirm_detail_created_at", + "value": "Created at" + }, + { + "name": "confirm_detail_creator_id", + "value": "Creator ID" + }, + { + "name": "confirm_detail_type_id", + "value": "Type ID" + }, + { + "name": "confirm_detail_type_name", + "value": "Type name" + }, + { + "name": "confirm_detail_confirm_id", + "value": "Confirmation ID" + }, + { + "name": "confirm_detail_nonce", + "value": "Nonce" + }, + { + "name": "confirm_detail_icon_url", + "value": "Icon URL" + }, + { + "name": "confirm_list_title", + "value": "Steam confirmations" + }, + { + "name": "confirm_list_type_test", + "value": "Test" + }, + { + "name": "confirm_list_type_trade", + "value": "Trade" + }, + { + "name": "confirm_list_type_sell", + "value": "Sell" + }, + { + "name": "confirm_list_type_change_phone", + "value": "Change phone number" + }, + { + "name": "confirm_list_type_remove_phone", + "value": "Remove phone number" + }, + { + "name": "confirm_list_type_create_key", + "value": "Create access key" + }, + { + "name": "confirm_list_type_unknown", + "value": "Unknown type" + }, + { + "name": "confirm_list_query_failed_format", + "value": "Query failed: %s" + }, + { + "name": "confirm_list_query_success_format", + "value": "Query succeeded. Pending items: %d" + }, + { + "name": "confirm_list_allow_all", + "value": "Allow all?" + }, + { + "name": "confirm_list_deny_all", + "value": "Deny all?" + }, + { + "name": "confirm_list_allow_failed_format", + "value": "Allow request failed: %s" + }, + { + "name": "confirm_list_deny_failed_format", + "value": "Deny request failed: %s" + }, + { + "name": "confirm_list_loading", + "value": "Querying..." + }, + { + "name": "steam_intro_title", + "value": "How it works" + }, + { + "name": "steam_intro_steps", + "value": "1. Sign in to Steam\n2. Add an authenticator to Steam" + }, + { + "name": "steam_intro_note", + "value": "Note: You will need to enter your Steam password and verification code during the process. If requests time out or fail, enable Enhanced Network in Settings." + }, + { + "name": "steam_start_now", + "value": "Start now" + }, + { + "name": "steam_login_title", + "value": "Sign in to Steam" + }, + { + "name": "steam_login_prompt", + "value": "Enter your Steam account name and password" + }, + { + "name": "steam_account_name", + "value": "Account name" + }, + { + "name": "steam_password", + "value": "Password" + }, + { + "name": "steam_login_fetching_auth", + "value": "Steam login succeeded. Fetching authentication info..." + }, + { + "name": "steam_auth_fetch_failed_format", + "value": "Failed to fetch Steam authentication info: %s" + }, + { + "name": "steam_mfa_device_confirmation", + "value": "Steam has multi-factor authentication enabled. Confirm this sign-in on another device, then tap Complete sign-in." + }, + { + "name": "steam_mfa_email_confirmation", + "value": "Steam has multi-factor authentication enabled. A confirmation email has been sent. Tap the confirmation link in the email, then tap Complete sign-in." + }, + { + "name": "steam_mfa_device_code", + "value": "Steam has multi-factor authentication enabled. Get the token from your bound authenticator and enter it below." + }, + { + "name": "steam_mfa_email_code", + "value": "Steam has multi-factor authentication enabled. The token was sent by email. Enter it below." + }, + { + "name": "steam_complete_login", + "value": "Complete sign-in" + }, + { + "name": "steam_fetching_auth", + "value": "Fetching Steam authentication info..." + }, + { + "name": "steam_link_success_format", + "value": "Signed in successfully as %s. Tap Add to add Authenticator to Steam." + }, + { + "name": "steam_add_authenticator_failed_format", + "value": "Failed to add Authenticator: %s" + }, + { + "name": "steam_confirm_link_sms", + "value": "Steam is adding an authenticator. Enter the SMS verification code." + }, + { + "name": "steam_confirm_link_email", + "value": "Steam is adding an authenticator. The verification code was sent by email. Enter the code." + }, + { + "name": "steam_complete_add", + "value": "Complete add" + }, + { + "name": "steam_finalize_failed_format", + "value": "Failed to add authenticator: %s" + }, + { + "name": "steam_token_mismatch", + "value": "The generated token does not match Steam. Tap Complete add once more." + }, + { + "name": "steam_add_success", + "value": "Added successfully." + }, + { + "name": "steam_transfer_prompt", + "value": "Another authenticator is already added. Do you want to transfer it?" + }, + { + "name": "steam_transfer_note", + "value": "Important: Make sure the Steam account is already linked to a phone number, otherwise transfer will fail." + }, + { + "name": "steam_transfer_button", + "value": "Transfer" + }, + { + "name": "steam_transfer_failed_format", + "value": "Failed to transfer authenticator: %s" + }, + { + "name": "steam_transfer_sms", + "value": "Steam is transferring the authenticator. Enter the SMS verification code." + }, + { + "name": "steam_complete_transfer", + "value": "Complete transfer" + }, + { + "name": "steam_refresh_title", + "value": "Refresh Steam auth expiry" + }, + { + "name": "steam_refresh_prompt", + "value": "Refreshing requires signing in to Steam again. Enter your password." + }, + { + "name": "steam_refresh_confirmation_type_error_format", + "value": "Steam login succeeded, but the confirmation type is invalid: %d" + }, + { + "name": "steam_refresh_submitting", + "value": "Steam login succeeded. Submitting token..." + }, + { + "name": "steam_refresh_submit_failed_format", + "value": "Failed to submit Steam token: %s" + }, + { + "name": "steam_refresh_submit_success", + "value": "Steam token submitted successfully. Fetching authentication info..." + }, + { + "name": "steam_refresh_success", + "value": "Steam authentication info updated successfully." + }, + { + "name": "common_scan_failed_format", + "value": "Scan failed: %s" + }, + { + "name": "invalid_steam_qr_code", + "value": "Invalid Steam login QR code." } ] } \ No newline at end of file diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index aa353fd..7c6a4cc 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -2,11 +2,11 @@ "string": [ { "name": "ACCESS_BIOMETRIC_reason", - "value": "用于在显示 2FA 密码前验证用户。" + "value": "用于在显示 2FA 密码前验证用户身份。" }, { "name": "CAMERA_reason", - "value": "用于扫描二维码。" + "value": "用于扫描二维码" }, { "name": "INTERNET_reason", @@ -18,11 +18,691 @@ }, { "name": "EntryAbility_desc", - "value": "description" + "value": "描述" }, { "name": "EntryAbility_label", - "value": "千维验证器" + "value": "KDAuth" + }, + { + "name": "common_cancel", + "value": "取消" + }, + { + "name": "common_confirm", + "value": "确认" + }, + { + "name": "common_add", + "value": "添加" + }, + { + "name": "common_login", + "value": "登录" + }, + { + "name": "common_yes", + "value": "是" + }, + { + "name": "common_safe_mode_unlock_first", + "value": "已启用安全模式,请先解锁。" + }, + { + "name": "common_enter_token_first", + "value": "请先输入令牌。" + }, + { + "name": "common_enter_code_first", + "value": "请先输入验证码。" + }, + { + "name": "base_unknown_file_format", + "value": "未知的文件格式。" + }, + { + "name": "base_invalid_scheme_format", + "value": "无效的协议:%s" + }, + { + "name": "base_recover_item_missing_format", + "value": "第 %d 个令牌密钥缺少 %s" + }, + { + "name": "base_missing_format", + "value": "缺少%s" + }, + { + "name": "add_title", + "value": "添加" + }, + { + "name": "add_totp_secret_title", + "value": "通过 TOTP 密钥添加" + }, + { + "name": "add_totp_secret_desc", + "value": "TOTP 密钥是由 A-Z 和 2-7 组成的字符串,例如:ABCDEFGHIJ234567" + }, + { + "name": "add_totp_uri_title", + "value": "通过 TOTP URI 添加" + }, + { + "name": "add_totp_uri_desc", + "value": "TOTP URI 是以 otpauth://totp/ 开头的链接,例如:otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567\u0026issuer=Example" + }, + { + "name": "add_restore_title", + "value": "从令牌密钥文件(*.atsf)恢复" + }, + { + "name": "add_restore_desc", + "value": "令牌密钥文件(*.atsf)可从设置中导出。修改文件内容可能导致恢复失败。恢复不会覆盖已有令牌,如有重复请自行删除。" + }, + { + "name": "add_restore_pick_single", + "value": "请选择一个令牌密钥文件。" + }, + { + "name": "add_restore_success", + "value": "恢复完成。" + }, + { + "name": "add_restore_error_format", + "value": "恢复失败:%s" + }, + { + "name": "add_steam_title", + "value": "添加 Steam 令牌" + }, + { + "name": "add_steam_desc", + "value": "支持 5 位令牌、扫码登录和交易确认。" + }, + { + "name": "add_secret_title", + "value": "通过 TOTP 密钥添加" + }, + { + "name": "add_secret_provider", + "value": "提供方" + }, + { + "name": "add_secret_provider_placeholder", + "value": "请输入提供方名称" + }, + { + "name": "add_secret_account", + "value": "账号" + }, + { + "name": "add_secret_account_placeholder", + "value": "用户名或邮箱" + }, + { + "name": "add_secret_secret", + "value": "密钥" + }, + { + "name": "add_secret_secret_placeholder", + "value": "仅支持 A-Z 和 2-7" + }, + { + "name": "add_secret_digits", + "value": "位数" + }, + { + "name": "add_secret_invalid_secret", + "value": "密钥只能由 A-Z 和 2-7 组成,且至少 2 个字符。" + }, + { + "name": "add_secret_error_format", + "value": "TOTP 错误:%s" + }, + { + "name": "add_uri_title", + "value": "通过 TOTP URI 添加" + }, + { + "name": "add_uri_heading", + "value": "输入 TOTP URI" + }, + { + "name": "add_uri_desc", + "value": "如果需要同时添加多个,请每行输入一个 URI。" + }, + { + "name": "add_uri_partial_error_format", + "value": "已添加%d个,第%d行的 TOTP URI 无效:%s" + }, + { + "name": "add_steam_secret_title", + "value": "添加 Steam 令牌" + }, + { + "name": "index_auth_title", + "value": "请进行身份认证" + }, + { + "name": "index_empty", + "value": "还没有添加过令牌密钥\n请点击右上角的加号或扫码按钮添加" + }, + { + "name": "index_add_success", + "value": "成功添加令牌。" + }, + { + "name": "index_no_steam_token", + "value": "没有 Steam 令牌,无法扫码登录 Steam,请先添加 Steam 令牌。" + }, + { + "name": "index_no_steam_auth", + "value": "Steam 令牌没有设置认证信息,无法扫码登录 Steam,请在令牌详情页设置。" + }, + { + "name": "index_go_to_steam_detail", + "value": "请在 Steam 令牌详情页扫码登录。" + }, + { + "name": "detail_steam_input_title", + "value": "输入 Steam 认证信息" + }, + { + "name": "detail_steam_input_desc", + "value": "认证通过后可以使用 Steam 扫码登录和交易确认功能。" + }, + { + "name": "detail_steam_input_error_format", + "value": "认证信息格式错误,请确保内容来自 maFile 文件:%s" + }, + { + "name": "detail_steam_invalid_error_format", + "value": "认证信息格式错误:%s,内容:%s" + }, + { + "name": "detail_steam_login_failed_format", + "value": "Steam 登录失败:%s" + }, + { + "name": "detail_steam_login_success", + "value": "Steam 登录成功。" + }, + { + "name": "detail_steam_login_start", + "value": "开始登录 Steam..." + }, + { + "name": "detail_steam_section_title", + "value": "----- Steam 认证信息 -----" + }, + { + "name": "detail_steam_section_desc", + "value": "如遇扫码登录和交易确认请求超时或失败,请在设置中开启增强访问。" + }, + { + "name": "detail_steam_account", + "value": "Steam 账号" + }, + { + "name": "detail_steam_id", + "value": "Steam ID" + }, + { + "name": "detail_device_id", + "value": "设备 ID" + }, + { + "name": "detail_expire_time", + "value": "过期时间" + }, + { + "name": "detail_reset", + "value": "重新设置" + }, + { + "name": "detail_update_expire", + "value": "更新过期时间" + }, + { + "name": "detail_setup_steam", + "value": "设置 Steam 认证信息" + }, + { + "name": "detail_alias", + "value": "别名" + }, + { + "name": "detail_account", + "value": "账号" + }, + { + "name": "detail_issuer", + "value": "提供方" + }, + { + "name": "detail_digits", + "value": "位数" + }, + { + "name": "setting_title", + "value": "设置" + }, + { + "name": "setting_auto_dark", + "value": "跟随系统深色模式" + }, + { + "name": "setting_auto_dark_desc", + "value": "启用后,App 会自动跟随系统深浅色模式切换。" + }, + { + "name": "setting_safe_mode", + "value": "启用安全模式" + }, + { + "name": "setting_safe_mode_desc", + "value": "启用后,打开 App 时需要通过生物识别或 PIN 验证后才能查看令牌。该设置会在下次启动时生效。" + }, + { + "name": "setting_hide_token", + "value": "隐藏令牌" + }, + { + "name": "setting_hide_token_desc", + "value": "启用后,首页令牌默认隐藏,点击后才显示。详情页不受影响。" + }, + { + "name": "icon_pack_title", + "value": "图标包" + }, + { + "name": "icon_pack_desc", + "value": "可使用内置提供方图标,也可导入兼容 Aegis 的 zip 图标包。" + }, + { + "name": "icon_pack_manage", + "value": "管理" + }, + { + "name": "icon_pack_hide", + "value": "收起" + }, + { + "name": "icon_pack_builtin", + "value": "内置图标" + }, + { + "name": "icon_pack_builtin_desc", + "value": "默认提供方图标库" + }, + { + "name": "icon_pack_import", + "value": "导入 zip" + }, + { + "name": "icon_pack_remove", + "value": "移除" + }, + { + "name": "icon_pack_import_success", + "value": "图标包导入成功" + }, + { + "name": "icon_pack_import_failed_format", + "value": "导入失败:%s" + }, + { + "name": "icon_pack_remove_success", + "value": "图标包已移除" + }, + { + "name": "icon_pack_remove_failed_format", + "value": "移除失败:%s" + }, + { + "name": "icon_pack_installed_count_format", + "value": "已安装 %d 个" + }, + { + "name": "icon_pack_invalid_name_format", + "value": "%s(无效)" + }, + { + "name": "icon_pack_invalid_desc", + "value": "pack.json 缺失或无效" + }, + { + "name": "icon_pack_meta_format", + "value": "%d 个图标 · v%s" + }, + { + "name": "setting_network", + "value": "增强访问" + }, + { + "name": "setting_network_enabled", + "value": "已启用开发者模式。" + }, + { + "name": "setting_network_disabled", + "value": "已关闭开发者模式。" + }, + { + "name": "setting_network_desc", + "value": "启用后,可增强通过令牌访问特定服务时的稳定性。" + }, + { + "name": "setting_privacy_policy", + "value": "隐私政策" + }, + { + "name": "setting_privacy_agreed", + "value": "已同意" + }, + { + "name": "setting_privacy_disagreed", + "value": "未同意" + }, + { + "name": "setting_privacy_desc_prefix", + "value": "无论是否同意隐私政策,均可使用所有功能。点击右侧状态可再次查看。" + }, + { + "name": "setting_export", + "value": "导出令牌密钥文件(.atsf)" + }, + { + "name": "setting_export_pick_single", + "value": "请选择一个保存路径。" + }, + { + "name": "setting_export_success", + "value": "导出完成。" + }, + { + "name": "setting_export_desc", + "value": "令牌密钥文件包含 App 内所有令牌的密钥,文件内容未加密,请妥善保管。" + }, + { + "name": "setting_version_format", + "value": "版本:%s(%d)" + }, + { + "name": "setting_qq_group_format", + "value": "用户 QQ 群:%s" + }, + { + "name": "privacy_title", + "value": "隐私政策" + }, + { + "name": "privacy_content", + "value": "更新日期:2025/04/03\n生效日期:2025/04/03\n导言\n千维验证器是一款由 郭维 (以下简称“我们”)提供的产品。 您在使用我们的服务时,我们不会收集和使用您的相关信息,我们希望通过本《隐私政策》向您说明。本《隐私政策》与您所使用的千维验证器服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。本《隐私政策》中涉及的相关技术词汇,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您的理解。\n\n您使用或继续使用我们的服务,即意味着同意本《隐私政策》。\n\n感谢您使用我们的服务!我们重视您的隐私,并承诺保护您的个人信息。在使用本服务时,我们希望向您明确声明,我们不会主动收集、存储或共享任何个人信息。请您在使用本服务前,仔细阅读本隐私政策。\n\n1. 我们不收集个人信息\n在您使用本服务的过程中,我们不会主动收集您的任何个人信息。无论您是匿名使用服务,还是以其他方式与我们进行互动,我们都不会要求或获取您的姓名、电子邮件地址、电话号码、住址、支付信息等个人身份信息。\n\n2. 不涉及第三方数据共享\n由于我们不收集任何个人信息,我们也不会将您的任何数据与第三方共享、出售或租赁。您的隐私安全对我们来说至关重要,我们不会向任何第三方提供与您身份相关的任何数据。\n\n3. 技术数据收集\n尽管我们不会收集您的个人信息,但我们可能会使用一些常见的技术手段来收集非个人信息,例如您的设备类型、浏览器类型、操作系统版本、访问日期和时间等。这些信息仅用于改善服务质量和用户体验,不会用于识别您个人身份。\n\n4. 数据存储\n由于我们不会收集个人信息,因此不会在服务器上存储任何与您身份相关的个人数据。任何与服务有关的日志数据都仅用于技术分析和系统维护,且不会用于任何身份识别。\n\n5. 安全性\n虽然我们不收集您的个人信息,但我们依然采取合理的安全措施来保护我们服务的数据安全。这些措施包括但不限于加密技术、服务器安全和网络防护,以确保我们的系统免受外部攻击或数据泄露。\n\n6. 儿童隐私\n我们的服务并不针对儿童,我们不会 knowingly 收集或请求未满18岁用户的个人信息。如果我们发现收集了未满18岁用户的个人信息,我们将尽快删除相关数据。\n\n7. 政策变更\n我们可能会根据法律、政策或服务改进的需要,适时更新或修改本隐私政策。如果本隐私政策发生重要变更,我们将在适当的地方进行通知,以确保您及时了解我们的隐私保护措施。\n\n8. 联系我们\n如果您对本隐私政策有任何疑问或需要更多信息,请随时联系我们。" + }, + { + "name": "privacy_disagree", + "value": "不同意" + }, + { + "name": "privacy_agree", + "value": "同意" + }, + { + "name": "confirm_detail_title", + "value": "确认详情" + }, + { + "name": "confirm_detail_headline", + "value": "标题" + }, + { + "name": "confirm_detail_summary", + "value": "描述" + }, + { + "name": "confirm_detail_created_at", + "value": "创建时间" + }, + { + "name": "confirm_detail_creator_id", + "value": "创建者 ID" + }, + { + "name": "confirm_detail_type_id", + "value": "类型 ID" + }, + { + "name": "confirm_detail_type_name", + "value": "类型名称" + }, + { + "name": "confirm_detail_confirm_id", + "value": "确认 ID" + }, + { + "name": "confirm_detail_nonce", + "value": "Nonce" + }, + { + "name": "confirm_detail_icon_url", + "value": "图标 URL" + }, + { + "name": "confirm_list_title", + "value": "Steam 确认列表" + }, + { + "name": "confirm_list_type_test", + "value": "测试" + }, + { + "name": "confirm_list_type_trade", + "value": "交易" + }, + { + "name": "confirm_list_type_sell", + "value": "出售" + }, + { + "name": "confirm_list_type_change_phone", + "value": "更换手机号" + }, + { + "name": "confirm_list_type_remove_phone", + "value": "移除手机号" + }, + { + "name": "confirm_list_type_create_key", + "value": "创建访问密钥" + }, + { + "name": "confirm_list_type_unknown", + "value": "未知类型" + }, + { + "name": "confirm_list_query_failed_format", + "value": "查询失败:%s" + }, + { + "name": "confirm_list_query_success_format", + "value": "查询成功,待处理数量:%d" + }, + { + "name": "confirm_list_allow_all", + "value": "全部允许?" + }, + { + "name": "confirm_list_deny_all", + "value": "全部拒绝?" + }, + { + "name": "confirm_list_allow_failed_format", + "value": "允许请求失败:%s" + }, + { + "name": "confirm_list_deny_failed_format", + "value": "拒绝请求失败:%s" + }, + { + "name": "confirm_list_loading", + "value": "查询中..." + }, + { + "name": "steam_intro_title", + "value": "流程说明" + }, + { + "name": "steam_intro_steps", + "value": "1. 登录 Steam\n2. 向 Steam 中添加身份验证器" + }, + { + "name": "steam_intro_note", + "value": "注:期间需要输入 Steam 密码和验证码。如遇请求超时或请求失败等问题,请在设置中开启增强访问。" + }, + { + "name": "steam_start_now", + "value": "立即开始" + }, + { + "name": "steam_login_title", + "value": "登录 Steam" + }, + { + "name": "steam_login_prompt", + "value": "请输入 Steam 账户名称和密码" + }, + { + "name": "steam_account_name", + "value": "账户名称" + }, + { + "name": "steam_password", + "value": "密码" + }, + { + "name": "steam_login_fetching_auth", + "value": "Steam 登录成功,正在获取认证信息..." + }, + { + "name": "steam_auth_fetch_failed_format", + "value": "Steam 认证信息获取失败:%s" + }, + { + "name": "steam_mfa_device_confirmation", + "value": "Steam 启用了多重身份验证,请在其他设备上确认本次登录,确认完成后再点击【完成登录】。" + }, + { + "name": "steam_mfa_email_confirmation", + "value": "Steam 启用了多重身份验证,确认邮件已发送,请点击邮件内的确认链接后再点击【完成登录】。" + }, + { + "name": "steam_mfa_device_code", + "value": "Steam 启用了多重身份验证,请从已绑定的身份验证器获取令牌并输入。" + }, + { + "name": "steam_mfa_email_code", + "value": "Steam 启用了多重身份验证,令牌已通过邮件发送,请输入令牌。" + }, + { + "name": "steam_complete_login", + "value": "完成登录" + }, + { + "name": "steam_fetching_auth", + "value": "正在获取 Steam 认证信息..." + }, + { + "name": "steam_link_success_format", + "value": "%s登录成功,请点击【添加】按钮将 Authenticator 添加到 Steam。" + }, + { + "name": "steam_add_authenticator_failed_format", + "value": "添加 Authenticator 失败:%s" + }, + { + "name": "steam_confirm_link_sms", + "value": "正在向 Steam 添加身份验证器,请输入短信验证码。" + }, + { + "name": "steam_confirm_link_email", + "value": "正在向 Steam 添加身份验证器,验证码已通过邮件发送,请输入验证码。" + }, + { + "name": "steam_complete_add", + "value": "完成添加" + }, + { + "name": "steam_finalize_failed_format", + "value": "添加身份验证器失败:%s" + }, + { + "name": "steam_token_mismatch", + "value": "动态生成的令牌和 Steam 不一致,请再点击一次【完成添加】。" + }, + { + "name": "steam_add_success", + "value": "添加成功。" + }, + { + "name": "steam_transfer_prompt", + "value": "已经添加过其他身份验证器,是否迁移?" + }, + { + "name": "steam_transfer_note", + "value": "特别说明:请确保 Steam 账户已经绑定了手机号码,否则将无法进行迁移。" + }, + { + "name": "steam_transfer_button", + "value": "迁移" + }, + { + "name": "steam_transfer_failed_format", + "value": "迁移身份验证器失败:%s" + }, + { + "name": "steam_transfer_sms", + "value": "正在迁移 Steam 身份验证器,请输入短信验证码。" + }, + { + "name": "steam_complete_transfer", + "value": "完成迁移" + }, + { + "name": "steam_refresh_title", + "value": "更新 Steam 认证信息过期时间" + }, + { + "name": "steam_refresh_prompt", + "value": "更新需要重新登录 Steam,请输入密码" + }, + { + "name": "steam_refresh_confirmation_type_error_format", + "value": "Steam 登录成功,但确认类型错误:%d" + }, + { + "name": "steam_refresh_submitting", + "value": "Steam 登录成功,正在提交令牌..." + }, + { + "name": "steam_refresh_submit_failed_format", + "value": "Steam 令牌提交失败:%s" + }, + { + "name": "steam_refresh_submit_success", + "value": "Steam 令牌提交成功,正在获取认证信息..." + }, + { + "name": "steam_refresh_success", + "value": "更新 Steam 认证信息成功。" + }, + { + "name": "common_scan_failed_format", + "value": "扫码失败:%s" + }, + { + "name": "invalid_steam_qr_code", + "value": "无效的 Steam 登陆二维码" } ] } \ No newline at end of file From d18569236076a434b4ff084e6f0a89b8ccc77794 Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Mon, 16 Mar 2026 00:03:32 +0800 Subject: [PATCH 4/6] =?UTF-8?q?-=E4=BF=AE=E5=A4=8D=E4=B8=80=E7=82=B9?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=8C=96=E9=94=99=E8=AF=AF=20-=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E7=89=88=E6=9C=AC=E5=85=BC=E5=AE=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=20-fix:=20issuer=E4=B8=ADsteam=E5=B0=8F=E5=86=99=E6=97=B6?= =?UTF-8?q?=E6=89=93=E4=B8=8D=E5=BC=80Detail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/entryability/EntryAbility.ets | 2 +- entry/src/main/ets/pages/Add.ets | 3 +- entry/src/main/ets/pages/Base.ets | 55 +++++++++++-------- entry/src/main/ets/pages/Detail.ets | 28 ++-------- entry/src/main/ets/pages/Index.ets | 6 +- entry/src/main/ets/pages/PrivacyView.ets | 2 +- entry/src/main/ets/pages/Setting.ets | 25 ++++++--- entry/src/main/ets/pages/Steam.ets | 3 +- .../ets/pages/SteamConfirmationDetail.ets | 2 +- .../main/ets/pages/SteamConfirmationList.ets | 2 - .../main/resources/base/element/string.json | 6 +- .../main/resources/en_US/element/string.json | 6 +- .../main/resources/zh_CN/element/string.json | 12 ++-- 13 files changed, 69 insertions(+), 83 deletions(-) diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 393c8f2..4b4cb74 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -6,7 +6,7 @@ import resourceManager from '@ohos.resourceManager'; export let kvManager: distributedKVStore.KVManager; -export let appResourceManager: resourceManager.ResourceManager; +let appResourceManager: resourceManager.ResourceManager; export function getLocalizedString(resource: Resource, ...args: Array): string { try { diff --git a/entry/src/main/ets/pages/Add.ets b/entry/src/main/ets/pages/Add.ets index 564f44c..318e61c 100644 --- a/entry/src/main/ets/pages/Add.ets +++ b/entry/src/main/ets/pages/Add.ets @@ -484,5 +484,4 @@ export struct AddSteamSecret { } .title($r('app.string.add_steam_secret_title')) } -} - +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index 8bb3245..445f4b0 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -49,6 +49,31 @@ export class SteamAccountData { account?: steam2faapi.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Response } +export function isLegacySteamExternal(authdata: Record): boolean { + return authdata["sharedSecret"] == undefined && authdata["shardSecret"] != undefined +} + +export function parseSteamExternalAuthData(authdata: Record): SteamAuthData { + let steamAuthData = new SteamAuthData() + steamAuthData.sharedSecret = authdata["sharedSecret"] as string + if (steamAuthData.sharedSecret == undefined) { + // 兼容旧版本导出的字段名:shardSecret + steamAuthData.sharedSecret = authdata["shardSecret"] as string + } + steamAuthData.accountName = authdata["accountName"] as string + steamAuthData.steamID = authdata["steamID"] as string + steamAuthData.serialNumber = authdata["serialNumber"] as string + steamAuthData.revocationCode = authdata["revocationCode"] as string + steamAuthData.tokenGID = authdata["tokenGID"] as string + steamAuthData.identitySecret = authdata["identitySecret"] as string + steamAuthData.uri = authdata["uri"] as string + steamAuthData.deviceID = authdata["deviceID"] as string + steamAuthData.secret1 = authdata["secret1"] as string + steamAuthData.accessToken = authdata["accessToken"] as string + steamAuthData.refreshToken = authdata["refreshToken"] as string + return steamAuthData +} + export class AuthDataStore { public kvStore?: distributedKVStore.DeviceKVStore public items: AuthData[] = [] @@ -313,28 +338,15 @@ export class AuthDataStore { const element = result[index]; if (element.issuer.toLowerCase() == 'steam') { let authdata = JSON.parse(element.external) as Record - // 兼容前面版本导出的备份文件 - if (authdata["sharedSecret"] == undefined) { - let data = new SteamAuthData() - data.sharedSecret = authdata["shardSecret"] as string - - data.accountName = authdata["accountName"] as string - data.steamID = authdata["steamID"] as string - data.serialNumber = authdata["serialNumber"] as string - data.revocationCode = authdata["revocationCode"] as string - data.tokenGID = authdata["tokenGID"] as string - data.identitySecret = authdata["identitySecret"] as string - data.uri = authdata["uri"] as string - data.deviceID = authdata["deviceID"] as string - data.secret1 = authdata["secret1"] as string - data.accessToken = authdata["accessToken"] as string - data.refreshToken = authdata["refreshToken"] as string - Object.entries(data).forEach((pair: [string, string]) => { + // 兼容旧版备份中的 shardSecret 字段并统一结构 + if (isLegacySteamExternal(authdata)) { + let steamAuthData = parseSteamExternalAuthData(authdata) + Object.entries(steamAuthData).forEach((pair: [string, string]) => { if (pair[1] == undefined) { throw new Error(getLocalizedString($r('app.string.base_missing_format'), pair[0])) } }) - element.external = JSON.stringify(data) + element.external = JSON.stringify(steamAuthData) } } element.id = this.next++ @@ -404,9 +416,4 @@ export class PromptParams { close() { this.ctx?.getPromptAction().closeCustomDialog(this.content) } -} - - - - - +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/Detail.ets b/entry/src/main/ets/pages/Detail.ets index 39cc635..eb35635 100644 --- a/entry/src/main/ets/pages/Detail.ets +++ b/entry/src/main/ets/pages/Detail.ets @@ -1,4 +1,4 @@ -import { AuthData, AuthDataStore, DefaultToastDuration, PromptParams, SteamAuthData } from './Base'; +import { AuthData, AuthDataStore, DefaultToastDuration, parseSteamExternalAuthData, PromptParams, SteamAuthData } from './Base'; import { SymbolGlyphModifier } from '@kit.ArkUI'; import { JSON, util } from '@kit.ArkTS'; import { intl } from '@kit.LocalizationKit'; @@ -120,7 +120,7 @@ export struct Detail { } loadSteamAuthData(): void { - if (this.item.issuer != "Steam" || this.item.external == "") { + if (this.item.issuer.toLowerCase() != "steam" || this.item.external == "") { return } if (this.item.external == this.lastExternalInfo) { @@ -128,25 +128,7 @@ export struct Detail { } try { let authdata = JSON.parse(this.item.external) as Record - this.steamAuthData = new SteamAuthData() - - if (authdata["sharedSecret"] == undefined) { - this.steamAuthData.sharedSecret = authdata["shardSecret"] as string - } else { - this.steamAuthData.sharedSecret = authdata["sharedSecret"] as string - } - - this.steamAuthData.accountName = authdata["accountName"] as string - this.steamAuthData.steamID = authdata["steamID"] as string - this.steamAuthData.serialNumber = authdata["serialNumber"] as string - this.steamAuthData.revocationCode = authdata["revocationCode"] as string - this.steamAuthData.tokenGID = authdata["tokenGID"] as string - this.steamAuthData.identitySecret = authdata["identitySecret"] as string - this.steamAuthData.uri = authdata["uri"] as string - this.steamAuthData.deviceID = authdata["deviceID"] as string - this.steamAuthData.secret1 = authdata["secret1"] as string - this.steamAuthData.accessToken = authdata["accessToken"] as string - this.steamAuthData.refreshToken = authdata["refreshToken"] as string + this.steamAuthData = parseSteamExternalAuthData(authdata) let parts = this.steamAuthData.refreshToken.split(".") let base64 = new util.Base64Helper() @@ -216,7 +198,7 @@ export struct Detail { @Builder buildExternalView() { - if (this.item.issuer == "Steam") { + if (this.item.issuer.toLowerCase() == "steam") { if (this.item.external != undefined && this.item.external.length > 0) { Row() { Column() { @@ -374,5 +356,3 @@ export struct Detail { ] : []) } } - - diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index 61215d0..a45d89b 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -419,8 +419,4 @@ struct Index { }) return } -} - - - - +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/PrivacyView.ets b/entry/src/main/ets/pages/PrivacyView.ets index ccd0083..901ed0a 100644 --- a/entry/src/main/ets/pages/PrivacyView.ets +++ b/entry/src/main/ets/pages/PrivacyView.ets @@ -51,4 +51,4 @@ function PrivacyView(params: PromptParams) { .width("90%") .backgroundColor($r("app.color.mfa_dialog_background")) .borderRadius(10) -} +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/Setting.ets b/entry/src/main/ets/pages/Setting.ets index 1744b47..8b31def 100644 --- a/entry/src/main/ets/pages/Setting.ets +++ b/entry/src/main/ets/pages/Setting.ets @@ -1,9 +1,10 @@ -import { bundleManager, common, ConfigurationConstant } from "@kit.AbilityKit"; +import { bundleManager, common, ConfigurationConstant } from '@kit.AbilityKit'; import { fileIo as fs, picker } from '@kit.CoreFileKit'; -import { AuthDataStore, DefaultToastDuration } from './Base'; +import { AuthDataStore, DefaultToastDuration, parseSteamExternalAuthData } from './Base'; import { ShowPrivacyView } from './PrivacyView'; import { proxyServer } from './proxy/Proxy'; import { IconPackManager } from '../components/IconPackManager'; + @Component export struct Setting { @StorageLink("enableAutoDarkMode") enableAutoDarkMode: boolean = true @@ -20,6 +21,11 @@ export struct Setting { this.appInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION) } + getPrivacyState(): Resource { + return this.privacyState == "Agreed" ? $r('app.string.setting_privacy_agreed') : + $r('app.string.setting_privacy_disagreed') + } + build() { NavDestination() { RelativeContainer() { @@ -133,8 +139,7 @@ export struct Setting { .width("75%") .fontWeight(FontWeight.Bold) .textAlign(TextAlign.Start) - Text(this.privacyState == "Agreed" ? $r('app.string.setting_privacy_agreed') : - $r('app.string.setting_privacy_disagreed')) + Text(this.getPrivacyState()) .width("15%") .fontWeight(FontWeight.Bold) .onClick(() => { @@ -146,7 +151,7 @@ export struct Setting { .height(40) .alignItems(VerticalAlign.Center) - Text($r('app.string.setting_privacy_desc_prefix')) + Text($r('app.string.setting_privacy_desc_prefix', this.getPrivacyState())) .padding({ left: 30, right: 20 }) @@ -173,6 +178,11 @@ export struct Setting { if (key == "password" || key == "tokenIconPath") { return undefined; } + // 使前面版本external的导出改变(如果打开过Detail页面,这里的external已经改变了) + if (key == "external" && value != "") { + let authdata = JSON.parse(value as string) as Record + return JSON.stringify(parseSteamExternalAuthData(authdata)) + } return value; }) fs.writeSync(file.fd, data) @@ -218,7 +228,4 @@ export struct Setting { } .title($r('app.string.setting_title')) } -} - - - +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/Steam.ets b/entry/src/main/ets/pages/Steam.ets index 8350c8c..1ea3913 100644 --- a/entry/src/main/ets/pages/Steam.ets +++ b/entry/src/main/ets/pages/Steam.ets @@ -851,5 +851,4 @@ export class SteamClient { }) }) } -} - +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/SteamConfirmationDetail.ets b/entry/src/main/ets/pages/SteamConfirmationDetail.ets index 2d29ff6..75c2600 100644 --- a/entry/src/main/ets/pages/SteamConfirmationDetail.ets +++ b/entry/src/main/ets/pages/SteamConfirmationDetail.ets @@ -90,7 +90,7 @@ export struct SteamConfirmationDetail { .alignItems(VerticalAlign.Center) Row() { - Text($r('app.string.confirm_detail_nonce')) + Text($r('app.string.confirm_disposable_number')) .width("30%") .textAlign(TextAlign.Start) Text(this.confirmation.nonce) diff --git a/entry/src/main/ets/pages/SteamConfirmationList.ets b/entry/src/main/ets/pages/SteamConfirmationList.ets index fbfc44a..61528fe 100644 --- a/entry/src/main/ets/pages/SteamConfirmationList.ets +++ b/entry/src/main/ets/pages/SteamConfirmationList.ets @@ -245,5 +245,3 @@ export struct SteamConfirmationList { ]) } } - - diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index e2c188a..9e4922e 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -406,7 +406,7 @@ }, { "name": "setting_privacy_desc_prefix", - "value": "All features are available regardless of whether you agree to the privacy policy. Tap the status on the right to review it again." + "value": "All features are available regardless of whether you agree to the privacy policy. Tap the [%s] on the right to review it again." }, { "name": "setting_export", @@ -481,8 +481,8 @@ "value": "Confirmation ID" }, { - "name": "confirm_detail_nonce", - "value": "Nonce" + "name": "confirm_disposable_number", + "value": "Disposable number" }, { "name": "confirm_detail_icon_url", diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index e2c188a..9e4922e 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -406,7 +406,7 @@ }, { "name": "setting_privacy_desc_prefix", - "value": "All features are available regardless of whether you agree to the privacy policy. Tap the status on the right to review it again." + "value": "All features are available regardless of whether you agree to the privacy policy. Tap the [%s] on the right to review it again." }, { "name": "setting_export", @@ -481,8 +481,8 @@ "value": "Confirmation ID" }, { - "name": "confirm_detail_nonce", - "value": "Nonce" + "name": "confirm_disposable_number", + "value": "Disposable number" }, { "name": "confirm_detail_icon_url", diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index 7c6a4cc..1292c2d 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -150,7 +150,7 @@ }, { "name": "add_secret_digits", - "value": "位数" + "value": "令牌位数" }, { "name": "add_secret_invalid_secret", @@ -278,7 +278,7 @@ }, { "name": "detail_issuer", - "value": "提供方" + "value": "发行商" }, { "name": "detail_digits", @@ -406,7 +406,7 @@ }, { "name": "setting_privacy_desc_prefix", - "value": "无论是否同意隐私政策,均可使用所有功能。点击右侧状态可再次查看。" + "value": "无论是否同意隐私政策,均可使用所有功能。点击选项右侧的【%s】,可再次查看隐私政策内容。" }, { "name": "setting_export", @@ -481,8 +481,8 @@ "value": "确认 ID" }, { - "name": "confirm_detail_nonce", - "value": "Nonce" + "name": "confirm_disposable_number", + "value": "一次性编号" }, { "name": "confirm_detail_icon_url", @@ -538,7 +538,7 @@ }, { "name": "confirm_list_allow_failed_format", - "value": "允许请求失败:%s" + "value": "确认请求失败:%s" }, { "name": "confirm_list_deny_failed_format", From d0f2ef51e66ede298d0ca24574d163181a2dd197 Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Mon, 16 Mar 2026 19:27:18 +0800 Subject: [PATCH 5/6] =?UTF-8?q?-=E6=81=A2=E5=A4=8D=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=9A=84=E5=86=85=E7=BD=AE=E5=9B=BE=E6=A0=87=20-=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=89=8B=E5=8A=A8=E9=80=89=E6=8B=A9=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E7=9A=84=E7=BB=84=E4=BB=B6=EF=BC=8C=E9=95=BF=E6=8C=89Index?= =?UTF-8?q?=E5=92=8CDetail=E7=9A=84=E5=9B=BE=E6=A0=87=E5=94=A4=E8=B5=B7=20?= =?UTF-8?q?-=E4=BF=AE=E6=94=B9=E5=9B=BE=E6=A0=87=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E5=8F=82=E8=80=83aegis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/components/IconPackManager.ets | 40 ++- entry/src/main/ets/components/TokenIcon.ets | 24 +- .../main/ets/components/TokenIconPicker.ets | 266 ++++++++++++++++++ .../main/ets/entryability/EntryAbility.ets | 217 ++++++++------ entry/src/main/ets/pages/Base.ets | 12 +- entry/src/main/ets/pages/Detail.ets | 37 ++- entry/src/main/ets/pages/Index.ets | 36 ++- .../main/ets/pages/SteamConfirmationList.ets | 3 +- entry/src/main/ets/utils/IconPackUtils.ets | 199 ++++++++++--- .../main/resources/base/element/color.json | 4 + .../main/resources/base/element/string.json | 18 +- .../main/resources/dark/element/color.json | 4 + .../main/resources/en_US/element/string.json | 18 +- .../main/resources/rawfile/icons/aliyun.png | Bin 0 -> 5207 bytes .../resources/rawfile/icons/cloudflare.png | Bin 0 -> 6937 bytes .../resources/rawfile/icons/epic_games.png | Bin 0 -> 7678 bytes .../main/resources/rawfile/icons/github.png | Bin 0 -> 15446 bytes .../main/resources/rawfile/icons/gitlab.png | Bin 0 -> 12572 bytes .../main/resources/rawfile/icons/google.png | Bin 0 -> 14171 bytes .../main/resources/rawfile/icons/huawei.png | Bin 0 -> 42210 bytes .../resources/rawfile/icons/jetbrains.png | Bin 0 -> 13406 bytes .../resources/rawfile/icons/microsoft.png | Bin 0 -> 1602 bytes .../resources/rawfile/icons/namecheap.png | Bin 0 -> 14964 bytes .../resources/rawfile/icons/neteasemail.png | Bin 0 -> 23068 bytes .../main/resources/rawfile/icons/nintendo.png | Bin 0 -> 16796 bytes .../main/resources/rawfile/icons/nvidia.png | Bin 0 -> 10272 bytes .../main/resources/rawfile/icons/steam.png | Bin 0 -> 21258 bytes .../rawfile/icons/token_image_1and1.svg | 1 - .../rawfile/icons/token_image_1password.svg | 1 - .../rawfile/icons/token_image_23andme.svg | 1 - .../rawfile/icons/token_image_adafruit.svg | 1 - .../rawfile/icons/token_image_adguard.svg | 1 - .../rawfile/icons/token_image_adobe.svg | 1 - .../rawfile/icons/token_image_airbnb.svg | 1 - .../rawfile/icons/token_image_airbrake.svg | 1 - .../rawfile/icons/token_image_airtable.svg | 1 - .../rawfile/icons/token_image_allegropl.svg | 1 - .../rawfile/icons/token_image_alwaysdata.svg | 1 - .../rawfile/icons/token_image_amazon.svg | 1 - .../icons/token_image_amazonwebservices.svg | 1 - .../rawfile/icons/token_image_angellist.svg | 1 - .../rawfile/icons/token_image_animebytes.svg | 1 - .../rawfile/icons/token_image_anonaddy.svg | 1 - .../rawfile/icons/token_image_apache.svg | 1 - .../rawfile/icons/token_image_apple.svg | 1 - .../rawfile/icons/token_image_appveyor.svg | 1 - .../rawfile/icons/token_image_arenanet.svg | 1 - .../icons/token_image_atlantic_net.svg | 1 - .../rawfile/icons/token_image_atlassian.svg | 1 - .../rawfile/icons/token_image_avm.svg | 1 - .../rawfile/icons/token_image_backblaze.svg | 1 - .../rawfile/icons/token_image_battlenet.svg | 1 - .../rawfile/icons/token_image_betterment.svg | 1 - .../rawfile/icons/token_image_binance.svg | 1 - .../rawfile/icons/token_image_bitbucket.svg | 1 - .../rawfile/icons/token_image_bitcoin.svg | 1 - .../rawfile/icons/token_image_bitdefender.svg | 1 - .../rawfile/icons/token_image_bitfinex.svg | 1 - .../rawfile/icons/token_image_bitmex.svg | 1 - .../rawfile/icons/token_image_bitpanda.svg | 1 - .../rawfile/icons/token_image_bitstamp.svg | 1 - .../rawfile/icons/token_image_bittrex.svg | 1 - .../rawfile/icons/token_image_bitwala.svg | 1 - .../rawfile/icons/token_image_bitwarden.svg | 1 - .../icons/token_image_blockchain_info.svg | 1 - .../rawfile/icons/token_image_bugcrowd.svg | 1 - .../rawfile/icons/token_image_cexio.svg | 1 - .../icons/token_image_church_tools.svg | 1 - .../rawfile/icons/token_image_cisco.svg | 1 - .../icons/token_image_cloud_download.svg | 1 - .../rawfile/icons/token_image_cloudflare.svg | 1 - .../rawfile/icons/token_image_cobranded.svg | 1 - .../rawfile/icons/token_image_codegiant.svg | 1 - .../rawfile/icons/token_image_coinbase.svg | 1 - .../rawfile/icons/token_image_coinjar.svg | 1 - .../icons/token_image_computerbase.svg | 1 - .../icons/token_image_connectwise_manage.svg | 1 - .../rawfile/icons/token_image_cozycloud.svg | 1 - .../rawfile/icons/token_image_crowdin.svg | 1 - .../rawfile/icons/token_image_dashlane.svg | 1 - .../rawfile/icons/token_image_debian.svg | 1 - .../rawfile/icons/token_image_degiro.svg | 1 - .../rawfile/icons/token_image_denic.svg | 1 - .../icons/token_image_deutsche_bahn.svg | 1 - .../rawfile/icons/token_image_diaspora.svg | 1 - .../rawfile/icons/token_image_digidentity.svg | 1 - .../icons/token_image_digital_ocean.svg | 1 - .../rawfile/icons/token_image_discord.svg | 1 - .../rawfile/icons/token_image_discourse.svg | 1 - .../rawfile/icons/token_image_disroot.svg | 1 - .../rawfile/icons/token_image_docker.svg | 1 - .../rawfile/icons/token_image_docusign.svg | 1 - .../rawfile/icons/token_image_dreamhost.svg | 1 - .../rawfile/icons/token_image_dropbox.svg | 1 - .../rawfile/icons/token_image_drupal.svg | 1 - .../icons/token_image_electronic_arts.svg | 1 - .../rawfile/icons/token_image_email.svg | 1 - .../rawfile/icons/token_image_epic_games.svg | 1 - .../rawfile/icons/token_image_etsy.svg | 1 - .../rawfile/icons/token_image_eveonline.svg | 1 - .../rawfile/icons/token_image_evernote.svg | 1 - .../rawfile/icons/token_image_facebook.svg | 1 - .../rawfile/icons/token_image_faceit.svg | 1 - .../rawfile/icons/token_image_fanatical.svg | 1 - .../rawfile/icons/token_image_fastmail.svg | 1 - .../rawfile/icons/token_image_feishu.svg | 7 - .../rawfile/icons/token_image_figma.svg | 1 - .../rawfile/icons/token_image_fingerprint.svg | 1 - .../rawfile/icons/token_image_finnair.svg | 1 - .../rawfile/icons/token_image_firefox.svg | 1 - .../icons/token_image_flight_takeoff.svg | 1 - .../rawfile/icons/token_image_floatplane.svg | 1 - .../rawfile/icons/token_image_friendica.svg | 1 - .../rawfile/icons/token_image_fritz.svg | 1 - .../rawfile/icons/token_image_gamepad.svg | 1 - .../rawfile/icons/token_image_gandi.svg | 1 - .../rawfile/icons/token_image_git.svg | 1 - .../rawfile/icons/token_image_gitea.svg | 1 - .../rawfile/icons/token_image_github.svg | 1 - .../rawfile/icons/token_image_gitlab.svg | 1 - .../rawfile/icons/token_image_gmx.svg | 1 - .../rawfile/icons/token_image_godaddy.svg | 1 - .../rawfile/icons/token_image_gogs.svg | 1 - .../rawfile/icons/token_image_google.svg | 1 - .../rawfile/icons/token_image_govuk.svg | 1 - .../rawfile/icons/token_image_grav.svg | 1 - .../rawfile/icons/token_image_greenhost.svg | 1 - .../rawfile/icons/token_image_hackerone.svg | 1 - .../rawfile/icons/token_image_heroku.svg | 1 - .../rawfile/icons/token_image_hetzner.svg | 1 - .../rawfile/icons/token_image_hitbtc.svg | 1 - .../rawfile/icons/token_image_hmrc.svg | 1 - .../icons/token_image_home_assistant.svg | 1 - .../rawfile/icons/token_image_hover.svg | 1 - .../icons/token_image_humblebundle.svg | 1 - .../icons/token_image_hurricane_electric.svg | 1 - .../rawfile/icons/token_image_ibm.svg | 1 - .../rawfile/icons/token_image_iconomi.svg | 1 - .../rawfile/icons/token_image_ifttt.svg | 1 - .../rawfile/icons/token_image_ing.svg | 1 - .../rawfile/icons/token_image_instagram.svg | 1 - .../rawfile/icons/token_image_inwx.svg | 1 - .../rawfile/icons/token_image_itchio.svg | 1 - .../rawfile/icons/token_image_jagex.svg | 1 - .../rawfile/icons/token_image_jetbrains.svg | 1 - .../rawfile/icons/token_image_joomla.svg | 1 - .../rawfile/icons/token_image_keeper.svg | 1 - .../rawfile/icons/token_image_kickstarter.svg | 1 - .../rawfile/icons/token_image_kraken.svg | 1 - .../rawfile/icons/token_image_kucoin.svg | 1 - .../rawfile/icons/token_image_lastpass.svg | 1 - .../rawfile/icons/token_image_librenms.svg | 1 - .../rawfile/icons/token_image_lichess.svg | 1 - .../rawfile/icons/token_image_linkedin.svg | 1 - .../rawfile/icons/token_image_linode.svg | 1 - .../rawfile/icons/token_image_liqui.svg | 1 - .../rawfile/icons/token_image_livelyme.svg | 1 - .../rawfile/icons/token_image_lobsters.svg | 1 - .../icons/token_image_localbitcoins.svg | 1 - .../rawfile/icons/token_image_localmonero.svg | 1 - .../rawfile/icons/token_image_login_gov.svg | 1 - .../rawfile/icons/token_image_logmein.svg | 1 - .../rawfile/icons/token_image_mailbox.svg | 1 - .../rawfile/icons/token_image_mailchimp.svg | 1 - .../rawfile/icons/token_image_mailcow.svg | 1 - .../rawfile/icons/token_image_mailgun.svg | 1 - .../rawfile/icons/token_image_mailru.svg | 1 - .../rawfile/icons/token_image_mapbox.svg | 1 - .../rawfile/icons/token_image_mastodon.svg | 1 - .../rawfile/icons/token_image_matomo.svg | 1 - .../rawfile/icons/token_image_mega.svg | 1 - .../icons/token_image_mercadolibre.svg | 1 - .../rawfile/icons/token_image_microsoft.svg | 1 - .../icons/token_image_microsoft_teams.svg | 1 - .../rawfile/icons/token_image_migadu.svg | 1 - .../icons/token_image_miles_and_more.svg | 1 - .../rawfile/icons/token_image_mint.svg | 1 - .../rawfile/icons/token_image_miraheze.svg | 1 - .../rawfile/icons/token_image_mixer.svg | 1 - .../rawfile/icons/token_image_mongodb.svg | 1 - .../rawfile/icons/token_image_mvpsnet.svg | 1 - .../rawfile/icons/token_image_namecheap.svg | 1 - .../rawfile/icons/token_image_namecom.svg | 1 - .../rawfile/icons/token_image_nas.svg | 1 - .../rawfile/icons/token_image_netcup.svg | 1 - .../rawfile/icons/token_image_nextcloud.svg | 1 - .../rawfile/icons/token_image_nexus_mods.svg | 1 - .../rawfile/icons/token_image_nintendo.svg | 1 - .../icons/token_image_no_starch_press.svg | 1 - .../rawfile/icons/token_image_npm.svg | 1 - .../rawfile/icons/token_image_oculus.svg | 1 - .../rawfile/icons/token_image_office.svg | 1 - .../rawfile/icons/token_image_okta.svg | 1 - .../rawfile/icons/token_image_online.svg | 1 - .../rawfile/icons/token_image_openvz.svg | 1 - .../rawfile/icons/token_image_opnsense.svg | 1 - .../rawfile/icons/token_image_orcid.svg | 1 - .../rawfile/icons/token_image_origin.svg | 1 - .../rawfile/icons/token_image_ovh.svg | 1 - .../rawfile/icons/token_image_packet.svg | 1 - .../icons/token_image_parsecgaming.svg | 1 - .../icons/token_image_passwordstate.svg | 1 - .../rawfile/icons/token_image_patreon.svg | 1 - .../rawfile/icons/token_image_paypal.svg | 1 - .../rawfile/icons/token_image_paysafecard.svg | 1 - .../icons/token_image_paywithprivacy.svg | 1 - .../rawfile/icons/token_image_pcloud.svg | 1 - .../rawfile/icons/token_image_phabricator.svg | 1 - .../rawfile/icons/token_image_phpmyadmin.svg | 1 - .../rawfile/icons/token_image_pluralsight.svg | 1 - .../rawfile/icons/token_image_plurk.svg | 1 - .../rawfile/icons/token_image_posteo.svg | 1 - .../rawfile/icons/token_image_pretix.svg | 1 - .../rawfile/icons/token_image_prey.svg | 1 - .../token_image_private_internet_access.svg | 1 - .../rawfile/icons/token_image_protonmail.svg | 1 - .../rawfile/icons/token_image_proxmox.svg | 1 - .../rawfile/icons/token_image_pushover.svg | 1 - .../rawfile/icons/token_image_pypi.svg | 1 - .../icons/token_image_python_anywhere.svg | 1 - .../rawfile/icons/token_image_rackspace.svg | 1 - .../rawfile/icons/token_image_reddit.svg | 1 - .../rawfile/icons/token_image_revolt.svg | 1 - .../rawfile/icons/token_image_ripe_ncc.svg | 1 - .../rawfile/icons/token_image_ripio.svg | 1 - .../rawfile/icons/token_image_robinhood.svg | 1 - .../icons/token_image_rocketbeanstv.svg | 1 - .../rawfile/icons/token_image_rockstar.svg | 1 - .../rawfile/icons/token_image_rss.svg | 1 - .../rawfile/icons/token_image_sap.svg | 1 - .../rawfile/icons/token_image_scaleway.svg | 1 - .../rawfile/icons/token_image_school.svg | 1 - .../rawfile/icons/token_image_sciebo.svg | 1 - .../rawfile/icons/token_image_sentry.svg | 1 - .../rawfile/icons/token_image_sevdesk.svg | 1 - .../rawfile/icons/token_image_skrill.svg | 1 - .../rawfile/icons/token_image_slack.svg | 1 - .../rawfile/icons/token_image_snapchat.svg | 1 - .../rawfile/icons/token_image_sophos.svg | 1 - .../rawfile/icons/token_image_sourceforge.svg | 1 - .../rawfile/icons/token_image_squarespace.svg | 1 - .../icons/token_image_standardnotes.svg | 1 - .../rawfile/icons/token_image_starcitizen.svg | 1 - .../rawfile/icons/token_image_steam.svg | 1 - .../rawfile/icons/token_image_stripe.svg | 1 - .../rawfile/icons/token_image_sync.svg | 1 - .../rawfile/icons/token_image_synology.svg | 1 - .../rawfile/icons/token_image_teahub.svg | 1 - .../rawfile/icons/token_image_teamviewer.svg | 1 - .../token_image_tencent_cloud_services.svg | 1 - .../rawfile/icons/token_image_terminal.svg | 1 - .../icons/token_image_todoalojamiento.svg | 1 - .../rawfile/icons/token_image_transip.svg | 1 - .../rawfile/icons/token_image_trello.svg | 1 - .../rawfile/icons/token_image_tumblr.svg | 1 - .../rawfile/icons/token_image_turbotax.svg | 1 - .../rawfile/icons/token_image_tutanota.svg | 1 - .../icons/token_image_tuwien_ac_at.svg | 1 - .../rawfile/icons/token_image_twilio.svg | 1 - .../rawfile/icons/token_image_twitch.svg | 1 - .../rawfile/icons/token_image_twitter.svg | 1 - .../rawfile/icons/token_image_uber.svg | 1 - .../rawfile/icons/token_image_ubisoft.svg | 1 - .../rawfile/icons/token_image_ubnt.svg | 1 - .../rawfile/icons/token_image_ubuntu_one.svg | 1 - .../rawfile/icons/token_image_unity.svg | 1 - .../rawfile/icons/token_image_uphold.svg | 1 - .../rawfile/icons/token_image_usaa.svg | 1 - .../icons/token_image_vagrant_cloud.svg | 1 - .../rawfile/icons/token_image_vexxhost.svg | 1 - .../rawfile/icons/token_image_vk.svg | 1 - .../rawfile/icons/token_image_vultr.svg | 1 - .../rawfile/icons/token_image_wallabag.svg | 1 - .../rawfile/icons/token_image_wallet.svg | 1 - .../rawfile/icons/token_image_wargaming.svg | 1 - .../rawfile/icons/token_image_wasabi.svg | 1 - .../rawfile/icons/token_image_weclapp.svg | 1 - .../rawfile/icons/token_image_wikimedia.svg | 1 - .../rawfile/icons/token_image_wordpress.svg | 1 - .../rawfile/icons/token_image_workplace.svg | 1 - .../rawfile/icons/token_image_xero.svg | 1 - .../rawfile/icons/token_image_xerox.svg | 1 - .../rawfile/icons/token_image_xing.svg | 1 - .../icons/token_image_yandex_money.svg | 1 - .../rawfile/icons/token_image_zapier.svg | 1 - .../rawfile/icons/token_image_zendesk.svg | 1 - .../rawfile/icons/token_image_zoho.svg | 1 - .../rawfile/icons/token_image_zoom.svg | 1 - .../main/resources/rawfile/icons/twitter.png | Bin 0 -> 4407 bytes .../main/resources/rawfile/icons/ubisoft.png | Bin 0 -> 15266 bytes .../main/resources/zh_CN/element/string.json | 16 ++ 291 files changed, 722 insertions(+), 439 deletions(-) create mode 100644 entry/src/main/ets/components/TokenIconPicker.ets create mode 100644 entry/src/main/resources/rawfile/icons/aliyun.png create mode 100644 entry/src/main/resources/rawfile/icons/cloudflare.png create mode 100644 entry/src/main/resources/rawfile/icons/epic_games.png create mode 100644 entry/src/main/resources/rawfile/icons/github.png create mode 100644 entry/src/main/resources/rawfile/icons/gitlab.png create mode 100644 entry/src/main/resources/rawfile/icons/google.png create mode 100644 entry/src/main/resources/rawfile/icons/huawei.png create mode 100644 entry/src/main/resources/rawfile/icons/jetbrains.png create mode 100644 entry/src/main/resources/rawfile/icons/microsoft.png create mode 100644 entry/src/main/resources/rawfile/icons/namecheap.png create mode 100644 entry/src/main/resources/rawfile/icons/neteasemail.png create mode 100644 entry/src/main/resources/rawfile/icons/nintendo.png create mode 100644 entry/src/main/resources/rawfile/icons/nvidia.png create mode 100644 entry/src/main/resources/rawfile/icons/steam.png delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_1and1.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_1password.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_23andme.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_adafruit.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_adguard.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_adobe.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_airbnb.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_airbrake.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_airtable.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_allegropl.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_amazon.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_angellist.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_animebytes.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_apache.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_apple.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_appveyor.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_arenanet.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_atlassian.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_avm.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_backblaze.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_battlenet.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_betterment.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_binance.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitmex.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bittrex.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitwala.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cexio.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_church_tools.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cisco.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cobranded.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_codegiant.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_coinbase.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_coinjar.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_computerbase.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_crowdin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_dashlane.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_debian.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_degiro.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_denic.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_diaspora.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_digidentity.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_discord.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_discourse.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_disroot.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_docker.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_docusign.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_dropbox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_drupal.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_email.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_epic_games.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_etsy.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_eveonline.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_evernote.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_facebook.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_faceit.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_fanatical.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_fastmail.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_feishu.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_figma.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_finnair.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_firefox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_floatplane.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_friendica.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_fritz.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gamepad.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gandi.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_git.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gitea.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_github.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gitlab.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gmx.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_godaddy.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_gogs.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_google.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_govuk.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_grav.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_greenhost.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hackerone.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_heroku.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hetzner.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hmrc.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hover.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ibm.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_iconomi.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ifttt.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ing.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_instagram.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_inwx.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_itchio.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_jagex.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_joomla.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_keeper.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_kraken.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_kucoin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_lastpass.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_librenms.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_lichess.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_linkedin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_linode.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_liqui.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_livelyme.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_lobsters.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_localmonero.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_login_gov.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_logmein.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailbox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailcow.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailgun.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mailru.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mapbox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mastodon.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_matomo.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mega.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_microsoft.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_migadu.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mint.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_miraheze.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mixer.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mongodb.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_namecheap.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_namecom.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_nas.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_netcup.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_nintendo.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_npm.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_oculus.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_office.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_okta.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_online.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_openvz.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_opnsense.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_orcid.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_origin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ovh.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_packet.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_patreon.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_paypal.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_pcloud.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_phabricator.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_plurk.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_posteo.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_pretix.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_prey.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_protonmail.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_proxmox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_pushover.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_pypi.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_rackspace.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_reddit.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_revolt.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ripio.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_robinhood.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_rockstar.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_rss.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sap.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_scaleway.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_school.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sciebo.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sentry.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_skrill.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_slack.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_snapchat.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sophos.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_squarespace.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_steam.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_stripe.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_sync.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_synology.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_teahub.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_terminal.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_transip.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_trello.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_tumblr.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_turbotax.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_tutanota.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_twilio.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_twitch.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_twitter.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_uber.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubnt.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_unity.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_uphold.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_usaa.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_vk.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_vultr.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wallabag.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wallet.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wargaming.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wasabi.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_weclapp.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_wordpress.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_workplace.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_xero.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_xerox.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_xing.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_zapier.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_zendesk.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_zoho.svg delete mode 100644 entry/src/main/resources/rawfile/icons/token_image_zoom.svg create mode 100644 entry/src/main/resources/rawfile/icons/twitter.png create mode 100644 entry/src/main/resources/rawfile/icons/ubisoft.png diff --git a/entry/src/main/ets/components/IconPackManager.ets b/entry/src/main/ets/components/IconPackManager.ets index 26abea0..a9fce50 100644 --- a/entry/src/main/ets/components/IconPackManager.ets +++ b/entry/src/main/ets/components/IconPackManager.ets @@ -1,32 +1,29 @@ -import { common } from '@kit.AbilityKit'; +import { common } from '@kit.AbilityKit'; import { AegisIconPack, IconPackRegistry } from '../utils/IconPackUtils'; import { DefaultToastDuration } from '../pages/Base'; +import { parseInstalledIconPacks, refreshInstalledIconPacks } from '../entryability/EntryAbility'; @Component export struct IconPackManager { @StorageLink('selectedIconPackKey') selectedIconPackKey: string = IconPackRegistry.getDefaultPackKey(); - @StorageLink('iconPackRevision') iconPackRevision: number = 0; - @State installedPacks: AegisIconPack[] = []; + @StorageLink('installedIconPacksJson') installedIconPacksJson: string = '[]'; @State expanded: boolean = false; aboutToAppear(): void { this.reloadPacks(); } - private reloadPacks(): void { - const context = getContext(this) as common.UIAbilityContext; - IconPackRegistry.loadInstalledPacks(context).then((packs) => { - this.installedPacks = packs; - if (this.selectedIconPackKey !== IconPackRegistry.getDefaultPackKey() - && !packs.some((pack) => pack.getKey() === this.selectedIconPackKey && !pack.invalid)) { - this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); - this.bumpRevision(); - } - }); + private getInstalledPacks(): AegisIconPack[] { + return parseInstalledIconPacks(this.installedIconPacksJson); } - private bumpRevision(): void { - this.iconPackRevision = this.iconPackRevision + 1; + private async reloadPacks(): Promise { + const context = getContext(this) as common.UIAbilityContext; + const packs = await refreshInstalledIconPacks(context); + if (this.selectedIconPackKey !== IconPackRegistry.getDefaultPackKey() + && !packs.some((pack) => pack.getKey() === this.selectedIconPackKey && !pack.invalid)) { + this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); + } } private showToast(message: ResourceStr | string): void { @@ -37,7 +34,7 @@ export struct IconPackManager { } private getInstalledCount(): number { - return this.installedPacks.filter((pack) => !pack.invalid).length; + return this.getInstalledPacks().filter((pack) => !pack.invalid).length; } private getPackName(pack: AegisIconPack): ResourceStr | string { @@ -64,8 +61,7 @@ export struct IconPackManager { for (const path of paths) { await IconPackRegistry.importFromZip(context, path); } - this.reloadPacks(); - this.bumpRevision(); + await this.reloadPacks(); this.showToast($r('app.string.icon_pack_import_success')); } catch (error) { this.showToast($r('app.string.icon_pack_import_failed_format', @@ -79,8 +75,7 @@ export struct IconPackManager { if (this.selectedIconPackKey === pack.getKey()) { this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); } - this.reloadPacks(); - this.bumpRevision(); + await this.reloadPacks(); this.showToast($r('app.string.icon_pack_remove_success')); } catch (error) { this.showToast($r('app.string.icon_pack_remove_failed_format', @@ -146,7 +141,6 @@ export struct IconPackManager { Text($r('app.string.icon_pack_desc')) .padding({ left: 10 }) .fontSize(12) - // .fontColor('#666666') } .width('100%') @@ -160,11 +154,10 @@ export struct IconPackManager { true, () => { this.selectedIconPackKey = IconPackRegistry.getDefaultPackKey(); - this.bumpRevision(); } ) - ForEach(this.installedPacks, (pack: AegisIconPack) => { + ForEach(this.getInstalledPacks(), (pack: AegisIconPack) => { this.packRow( pack.getKey(), this.getPackName(pack), @@ -173,7 +166,6 @@ export struct IconPackManager { !pack.invalid, () => { this.selectedIconPackKey = pack.getKey(); - this.bumpRevision(); }, () => this.onRemovePressed(pack) ) diff --git a/entry/src/main/ets/components/TokenIcon.ets b/entry/src/main/ets/components/TokenIcon.ets index 165eb29..89e15c4 100644 --- a/entry/src/main/ets/components/TokenIcon.ets +++ b/entry/src/main/ets/components/TokenIcon.ets @@ -1,35 +1,23 @@ import { fileIo as fs } from '@kit.CoreFileKit'; -import { common } from '@kit.AbilityKit'; import { AegisIconPack, IconPackRegistry } from '../utils/IconPackUtils'; +import { parseInstalledIconPacks } from '../entryability/EntryAbility'; @Component export struct TokenIcon { @Prop issuer: string = ''; @Prop iconPath: string = ''; @StorageLink('selectedIconPackKey') selectedIconPackKey: string = IconPackRegistry.getDefaultPackKey(); - @StorageLink('iconPackRevision') iconPackRevision: number = 0; - @State installedPacks: AegisIconPack[] = []; + @StorageLink('installedIconPacksJson') installedIconPacksJson: string = '[]'; - aboutToAppear(): void { - this.reloadIconPacks(); - } - - aboutToReuse(): void { - this.reloadIconPacks(); - } - - private reloadIconPacks(): void { - const context = getContext(this) as common.UIAbilityContext; - IconPackRegistry.loadInstalledPacks(context).then((packs) => { - this.installedPacks = packs; - }); + private getInstalledPacks(): AegisIconPack[] { + return parseInstalledIconPacks(this.installedIconPacksJson); } private resolveIconPath(): string { if (this.iconPath && this.isValidPath(this.iconPath)) { return this.iconPath; } - return IconPackRegistry.getIconPathByIssuer(this.issuer, this.selectedIconPackKey, this.installedPacks); + return IconPackRegistry.getIconPathByIssuer(this.issuer, this.selectedIconPackKey, this.getInstalledPacks()); } private isValidPath(path: string): boolean { @@ -79,6 +67,7 @@ export struct TokenIcon { .width(40) .height(40) .objectFit(ImageFit.Contain) + .draggable(false) } else { Text(this.issuer.length > 0 ? this.issuer.charAt(0).toUpperCase() : '?') .fontSize(20) @@ -95,4 +84,3 @@ export struct TokenIcon { .borderRadius(20) } } - diff --git a/entry/src/main/ets/components/TokenIconPicker.ets b/entry/src/main/ets/components/TokenIconPicker.ets new file mode 100644 index 0000000..bb3584f --- /dev/null +++ b/entry/src/main/ets/components/TokenIconPicker.ets @@ -0,0 +1,266 @@ +import { common } from '@kit.AbilityKit'; +import { PromptParams } from '../pages/Base'; +import { TokenIcon } from './TokenIcon'; +import { IconPackRegistry, IconPackSection } from '../utils/IconPackUtils'; +import { refreshInstalledIconPacks } from '../entryability/EntryAbility'; + +interface TokenIconPickerSectionState { + key: string; + title: string; + isDefault: boolean; +} + +class BasicDataSource implements IDataSource { + private listeners: DataChangeListener[] = []; + + totalCount(): number { + return 0; + } + + getData(_index: number): string { + return ''; + } + + registerDataChangeListener(listener: DataChangeListener): void { + if (this.listeners.indexOf(listener) < 0) { + this.listeners.push(listener); + } + } + + unregisterDataChangeListener(listener: DataChangeListener): void { + const index = this.listeners.indexOf(listener); + if (index >= 0) { + this.listeners.splice(index, 1); + } + } + + notifyDataReload(): void { + this.listeners.forEach((listener) => { + listener.onDataReloaded(); + }); + } +} + +class IconPathDataSource extends BasicDataSource { + private readonly section: IconPackSection; + + constructor(section: IconPackSection) { + super(); + this.section = section; + } + + totalCount(): number { + return this.section.count; + } + + getData(index: number): string { + return this.section.getPathAt(index); + } +} + +const EMPTY_ICON_SECTION: IconPackSection = { + key: 'empty', + title: '', + count: 0, + getPathAt: (_index: number): string => '' +}; + +export class TokenIconPickerData { + issuer: string = ''; + currentIconPath: string = ''; + onConfirm: (path: string) => void = (_path: string): void => { + }; + onClose: () => void = (): void => { + }; +} + +@Component +struct TokenIconPickerContent { + @Prop issuer: string = ''; + @Prop currentIconPath: string = ''; + onConfirm: (path: string) => void = (_path: string): void => { + }; + onClose: () => void = (): void => { + }; + @State suggestedPaths: string[] = []; + @State sectionStates: TokenIconPickerSectionState[] = []; + @State selectedPath: string = ''; + private sectionDataSources: Map = new Map(); + private readonly emptyDataSource: IconPathDataSource = new IconPathDataSource(EMPTY_ICON_SECTION); + + aboutToAppear(): void { + this.selectedPath = this.currentIconPath ?? ''; + const context = getContext(this) as common.UIAbilityContext; + refreshInstalledIconPacks(context).then((packs) => { + const sections = IconPackRegistry.getIconSections(packs); + const nextSources: Map = new Map(); + const nextStates: TokenIconPickerSectionState[] = []; + sections.forEach((section) => { + nextSources.set(section.key, new IconPathDataSource(section)); + nextStates.push({ + key: section.key, + title: section.title, + isDefault: section.key === IconPackRegistry.getDefaultPackKey() + }); + }); + this.sectionDataSources = nextSources; + this.suggestedPaths = IconPackRegistry.getSuggestedIconPaths(this.issuer, packs); + this.sectionStates = nextStates; + }); + } + + private getSectionDataSource(key: string): IconPathDataSource { + return this.sectionDataSources.get(key) ?? this.emptyDataSource; + } + + private closeDialog(): void { + this.onClose(); + } + + private confirmSelection(): void { + this.onConfirm(this.selectedPath); + this.closeDialog(); + } + + private isSelected(path: string): boolean { + return this.selectedPath === path; + } + + @Builder + private sectionTitle(title: ResourceStr | string) { + Text(title) + .fontSize(14) + .fontWeight(FontWeight.Bold) + .margin({ left: 4, top: 8, bottom: 8 }) + .width('100%') + .textAlign(TextAlign.Start) + } + + @Builder + private fixedIconPreview(path: string) { + if (path.startsWith('rawfile://')) { + Image($rawfile(path.slice(10))) + .width(40) + .height(40) + .objectFit(ImageFit.Contain) + .draggable(false) + } else if (path.length > 0) { + Image(path) + .width(40) + .height(40) + .objectFit(ImageFit.Contain) + .draggable(false) + } else { + Text('?') + .fontSize(20) + .fontWeight(FontWeight.Bold) + .fontColor('#FFFFFF') + } + } + + @Builder + private iconItem(path: string, autoMode: boolean = false) { + ListItem() { + Column({ space: 6 }) { + Stack() { + if (autoMode) { + TokenIcon({ issuer: this.issuer, iconPath: '' }) + } else { + this.fixedIconPreview(path) + } + } + .width(50) + .height(50) + .padding(5) + .margin({ top: 4 }) + .backgroundColor($r('app.color.vendor_background_color')) + .borderRadius(20) + .borderWidth(this.isSelected(path) ? 2 : 0) + .borderColor('#d9485f') + + if (autoMode) { + Text($r('app.string.icon_picker_auto')) + .fontSize(11) + .maxLines(1) + } + } + .width('100%') + .justifyContent(FlexAlign.Center) + .onClick(() => { + this.selectedPath = path; + }) + } + } + + build() { + Column() { + Text($r('app.string.icon_picker_title')) + .fontSize(18) + .fontWeight(FontWeight.Bold) + .margin({ bottom: 8 }) + + List({ space: 8 }) { + ListItemGroup({ header: this.sectionTitle($r('app.string.icon_picker_mode')) }) { + this.iconItem('', true) + } + if (this.suggestedPaths.length > 0) { + ListItemGroup({ header: this.sectionTitle($r('app.string.icon_picker_recommended')) }) { + ForEach(this.suggestedPaths, (path: string) => { + this.iconItem(path) + }, (path: string) => `recommended_${path}`) + } + } + ForEach(this.sectionStates, (section: TokenIconPickerSectionState) => { + ListItemGroup({ + header: this.sectionTitle(section.isDefault ? $r('app.string.icon_pack_builtin') : section.title) + }) { + LazyForEach(this.getSectionDataSource(section.key), (path: string) => { + this.iconItem(path) + }, (path: string) => `${section.key}_${path}`) + } + }, (section: TokenIconPickerSectionState) => section.key) + } + .layoutWeight(1) + .width('100%') + .lanes({ minLength: 72, maxLength: 72 }) + .cachedCount(12) + .scrollBar(BarState.Auto) + + Row() { + Button($r('app.string.common_cancel')) + .layoutWeight(1) + .onClick(() => { + this.closeDialog(); + }) + .margin({right:5}) + Button($r('app.string.common_confirm')) + .layoutWeight(1) + .onClick(() => { + this.confirmSelection(); + }) + .margin({left:5}) + } + .width('100%') + .margin({ top: 8 }) + } + .padding(16) + .width('100%') + .height('90%') + .backgroundColor($r("app.color.icon_picker_background")) + } +} + +@Builder +export function buildTokenIconPicker(params: PromptParams) { + TokenIconPickerContent({ + issuer: params?.data?.issuer ?? '', + currentIconPath: params?.data?.currentIconPath ?? '', + onConfirm: params?.data?.onConfirm ?? ((_path: string): void => { + }), + onClose: params?.data?.onClose ?? (() => { + }) + }) +} + + + diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 4b4cb74..2ecfa7a 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -1,83 +1,134 @@ -import { AbilityConstant, bundleManager, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; -import { hilog } from '@kit.PerformanceAnalysisKit'; -import { window } from '@kit.ArkUI'; -import { distributedKVStore } from '@kit.ArkData'; -import resourceManager from '@ohos.resourceManager'; - -export let kvManager: distributedKVStore.KVManager; - -let appResourceManager: resourceManager.ResourceManager; - -export function getLocalizedString(resource: Resource, ...args: Array): string { - try { - return appResourceManager.getStringSync(resource.id, ...args) - } catch (_) { - return "" - } -} - -export default class EntryAbility extends UIAbility { - onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); - let context = this.context - appResourceManager = context.resourceManager - try { - let bundleName = - bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).name - kvManager = distributedKVStore.createKVManager({ - context: context, - bundleName: bundleName, - }) - hilog.info(0x0000, 'testTag', '%{public}s', 'Succeeded in creating KVManager'); - } catch (err) { - hilog.error(0x0000, 'testTag', 'Failed to create KVManager. Cause: %{public}s', JSON.stringify(err) ?? ''); - } - } - - onDestroy(): void { - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); - } - - onWindowStageCreate(windowStage: window.WindowStage): void { - // Main window is created, set main page for this ability - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); - - windowStage.loadContent('pages/Index', (err) => { - if (err.code) { - hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); - return; - } - hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); - PersistentStorage.persistProp("enableAutoDarkMode", true) - PersistentStorage.persistProp("enableSafeMode", false) - PersistentStorage.persistProp("hideToken", false) - PersistentStorage.persistProp("enhanceNetwork", false) - PersistentStorage.persistProp("developmentMode", false) - PersistentStorage.persistProp("privacyState", "Unknown") - PersistentStorage.persistProp("selectedIconPackKey", "default") - PersistentStorage.persistProp("iconPackRevision", 0) - if (AppStorage.get("enableAutoDarkMode")) { - this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); - } else { - this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT) - } - }); - } - - onWindowStageDestroy(): void { - // Main window is destroyed, release UI related resources - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); - } - - onForeground(): void { - // Ability has brought to foreground - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); - } - - onBackground(): void { - // Ability has back to background - hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); - } -} - - +import { AbilityConstant, bundleManager, common, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit'; +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { window } from '@kit.ArkUI'; +import { distributedKVStore } from '@kit.ArkData'; +import resourceManager from '@ohos.resourceManager'; +import { AegisIconDefinition, AegisIconPack, IconPackRegistry } from '../utils/IconPackUtils'; + +export let kvManager: distributedKVStore.KVManager; + +let appResourceManager: resourceManager.ResourceManager; + +interface StoredIconPack { + invalid: boolean; + onDevicePath: string; + uuid: string; + name: string; + version: number; + icons: AegisIconDefinition[]; +} + +export function getLocalizedString(resource: Resource, ...args: Array): string { + try { + return appResourceManager.getStringSync(resource.id, ...args) + } catch (_) { + return "" + } +} + +export function serializeInstalledIconPacks(packs: AegisIconPack[]): string { + const stored = packs.map((pack): StoredIconPack => ({ + invalid: pack.invalid, + onDevicePath: pack.onDevicePath, + uuid: pack.uuid, + name: pack.name, + version: pack.version, + icons: pack.icons + })) + return JSON.stringify(stored) +} + +export function parseInstalledIconPacks(content: string): AegisIconPack[] { + if (!content) { + return [] + } + + try { + const parsed = JSON.parse(content) as StoredIconPack[] + return parsed.map((item) => { + let pack = new AegisIconPack() + pack.invalid = item.invalid ?? false + pack.onDevicePath = item.onDevicePath ?? '' + pack.uuid = item.uuid ?? '' + pack.name = item.name ?? '' + pack.version = item.version ?? 0 + pack.icons = item.icons ?? [] + pack.buildMap() + return pack + }) + } catch (_) { + return [] + } +} + +export async function refreshInstalledIconPacks(context: common.UIAbilityContext): Promise { + const packs = await IconPackRegistry.loadInstalledPacks(context) + AppStorage.setOrCreate('installedIconPacksJson', serializeInstalledIconPacks(packs)) + return packs +} + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); + let context = this.context + appResourceManager = context.resourceManager + try { + let bundleName = + bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).name + kvManager = distributedKVStore.createKVManager({ + context: context, + bundleName: bundleName, + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'Succeeded in creating KVManager'); + } catch (err) { + hilog.error(0x0000, 'testTag', 'Failed to create KVManager. Cause: %{public}s', JSON.stringify(err) ?? ''); + } + } + + onDestroy(): void { + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: window.WindowStage): void { + // Main window is created, set main page for this ability + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/Index', (err) => { + if (err.code) { + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); + PersistentStorage.persistProp("enableAutoDarkMode", true) + PersistentStorage.persistProp("enableSafeMode", false) + PersistentStorage.persistProp("hideToken", false) + PersistentStorage.persistProp("enhanceNetwork", false) + PersistentStorage.persistProp("developmentMode", false) + PersistentStorage.persistProp("privacyState", "Unknown") + PersistentStorage.persistProp("selectedIconPackKey", "default") + PersistentStorage.persistProp("installedIconPacksJson", "[]") + refreshInstalledIconPacks(this.context as common.UIAbilityContext).catch(() => { + }) + if (AppStorage.get("enableAutoDarkMode")) { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET); + } else { + this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT) + } + }); + } + + onWindowStageDestroy(): void { + // Main window is destroyed, release UI related resources + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground(): void { + // Ability has brought to foreground + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); + } + + onBackground(): void { + // Ability has back to background + hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground'); + } +} diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index 445f4b0..d7d5d3f 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -94,6 +94,7 @@ export class AuthDataStore { for (let i = 0; i < data.length; i++) { let element = data[i]; let authdata = JSON.parse(element.value.value as string) as AuthData + // 兼容之前的版本 if (authdata.tokenIconPath == undefined) { authdata.tokenIconPath = ""; } @@ -240,6 +241,15 @@ export class AuthDataStore { this.onChanged(this.items) } + updateTokenIconPath(id: number, tokenIconPath: string) { + let index = this.findAuthItem(id) + if (index < 0) { + return + } + this.items[index].tokenIconPath = tokenIconPath + this.saveAuthItem(id) + } + addGoogleAuthItem(data: string) { let base64 = new util.Base64Helper() let bytes = base64.decodeSync(data, util.Type.BASIC_URL_SAFE) @@ -405,8 +415,8 @@ export class PromptParams { constructor(ctx: UIContext, builder: WrappedBuilder<[PromptParams]>, data: T) { this.ctx = ctx - this.content = new ComponentContent(this.ctx, builder, this); this.data = data + this.content = new ComponentContent(this.ctx, builder, this); } open() { diff --git a/entry/src/main/ets/pages/Detail.ets b/entry/src/main/ets/pages/Detail.ets index eb35635..ec2fa38 100644 --- a/entry/src/main/ets/pages/Detail.ets +++ b/entry/src/main/ets/pages/Detail.ets @@ -1,10 +1,18 @@ -import { AuthData, AuthDataStore, DefaultToastDuration, parseSteamExternalAuthData, PromptParams, SteamAuthData } from './Base'; +import { + AuthData, + AuthDataStore, + DefaultToastDuration, + parseSteamExternalAuthData, + PromptParams, + SteamAuthData +} from './Base'; import { SymbolGlyphModifier } from '@kit.ArkUI'; import { JSON, util } from '@kit.ArkTS'; import { intl } from '@kit.LocalizationKit'; import { scanBarcode, scanCore } from '@kit.ScanKit'; import { SteamClient } from './Steam'; import { TokenIcon } from '../components/TokenIcon'; +import { buildTokenIconPicker, TokenIconPickerData } from '../components/TokenIconPicker'; import { getLocalizedString } from '../entryability/EntryAbility'; @@ -196,6 +204,22 @@ export struct Detail { this.pageStack.pushPathByName("SteamConfirmationList", params) } + openTokenIconPicker() { + const data = new TokenIconPickerData() + data.issuer = this.item.issuer + data.currentIconPath = this.item.tokenIconPath + let params: PromptParams + data.onConfirm = (path: string): void => { + this.item.tokenIconPath = path + this.authDataStore.updateTokenIconPath(this.item.id, path) + } + data.onClose = (): void => { + params.close() + } + params = new PromptParams(this.getUIContext(), wrapBuilder(buildTokenIconPicker), data) + params.open() + } + @Builder buildExternalView() { if (this.item.issuer.toLowerCase() == "steam") { @@ -275,7 +299,16 @@ export struct Detail { NavDestination() { Column() { Row() { - TokenIcon({ issuer: this.item.issuer, iconPath: this.item.tokenIconPath }) + Stack() { + TokenIcon({ issuer: this.item.issuer, iconPath: this.item.tokenIconPath }) + } + .gesture( + LongPressGesture() + .onAction(() => { + this.openTokenIconPicker() + }) + ) + Text(this.safe ? this.item.password : "******") .fontSize(40) .fontWeight(FontWeight.Bold) diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index a45d89b..db49198 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -6,7 +6,7 @@ import { cryptoFramework } from '@kit.CryptoArchitectureKit'; import { Setting } from './Setting'; import { userAuth } from '@kit.UserAuthenticationKit'; import { Detail } from './Detail'; -import { AuthData, AuthDataStore, DefaultToastDuration, SteamAccountData } from './Base'; +import { AuthData, AuthDataStore, DefaultToastDuration, PromptParams, SteamAccountData } from './Base'; import { SteamConfirmationList } from './SteamConfirmationList'; import { SteamConfirmationDetail } from './SteamConfirmationDetail'; import { Confirmation } from './Steam'; @@ -24,6 +24,7 @@ import { import { ShowPrivacyView } from './PrivacyView'; import { curves } from '@kit.ArkUI'; import { TokenIcon } from '../components/TokenIcon'; +import { buildTokenIconPicker, TokenIconPickerData } from '../components/TokenIconPicker'; import { getLocalizedString } from '../entryability/EntryAbility'; @Entry @@ -140,6 +141,21 @@ struct Index { }) } + openTokenIconPicker(item: AuthData) { + const data = new TokenIconPickerData() + data.issuer = item.issuer + data.currentIconPath = item.tokenIconPath + let params: PromptParams + data.onConfirm = (path: string): void => { + this.authDataStore.updateTokenIconPath(item.id, path) + } + data.onClose = (): void => { + params.close() + } + params = new PromptParams(this.getUIContext(), wrapBuilder(buildTokenIconPicker), data) + params.open() + } + @Builder PagesMap(name: string, param: object) { if (name == 'Add') { @@ -203,7 +219,20 @@ struct Index { ForEach(this.items, (item: AuthData, index: number) => { ListItem() { Row() { - TokenIcon({ issuer: item.issuer, iconPath: item.tokenIconPath }) + Stack() { + TokenIcon({ issuer: item.issuer, iconPath: item.tokenIconPath }) + } + .gesture( + LongPressGesture() + .onAction(() => { + if (!this.safe) { + this.showSafeModeToast() + return + } + this.openTokenIconPicker(item) + }) + ) + Column() { Text(item.alias) .fontSize(20) @@ -283,7 +312,8 @@ struct Index { this.dragItem = undefined }) }) - }, (item: AuthData) => item.id.toString() + "-" + item.alias + "-" + item.account + "-" + item.password) + }, (item: AuthData) => item.id.toString() + "-" + item.alias + "-" + item.account + "-" + item.password + + "-" + item.tokenIconPath) } } } diff --git a/entry/src/main/ets/pages/SteamConfirmationList.ets b/entry/src/main/ets/pages/SteamConfirmationList.ets index 61528fe..26e9157 100644 --- a/entry/src/main/ets/pages/SteamConfirmationList.ets +++ b/entry/src/main/ets/pages/SteamConfirmationList.ets @@ -1,7 +1,8 @@ -import { DefaultToastDuration, SteamAuthData } from "./Base"; +import { DefaultToastDuration, SteamAuthData } from './Base'; import { Confirmation, SteamClient } from './Steam'; import { SymbolGlyphModifier } from '@kit.ArkUI'; import { intl } from '@kit.LocalizationKit'; + @Component export struct SteamConfirmationList { public steamAuthData: SteamAuthData = new SteamAuthData() diff --git a/entry/src/main/ets/utils/IconPackUtils.ets b/entry/src/main/ets/utils/IconPackUtils.ets index 2f7f40b..fcf5eb4 100644 --- a/entry/src/main/ets/utils/IconPackUtils.ets +++ b/entry/src/main/ets/utils/IconPackUtils.ets @@ -1,14 +1,27 @@ -import { fileIo as fs, picker } from '@kit.CoreFileKit'; +import { fileIo as fs, picker } from '@kit.CoreFileKit'; import { common } from '@kit.AbilityKit'; import { BusinessError, zlib } from '@kit.BasicServicesKit'; import { util } from '@kit.ArkTS'; export interface AegisIconDefinition { filename: string; + name?: string; category?: string; issuer?: string[]; } +enum IconMatchType { + NORMAL = 0, + INVERSE = 1 +} + +export interface IconPackSection { + key: string; + title: string; + count: number; + getPathAt: (index: number) => string; +} + export class AegisIconPack { public invalid: boolean = false; public onDevicePath: string = ''; @@ -22,12 +35,39 @@ export class AegisIconPack { this.iconMap.clear(); this.icons.forEach((icon) => { (icon.issuer ?? []).forEach((issuer) => { - this.iconMap.set(issuer.toLowerCase(), icon.filename); + this.iconMap.set(IconPackRegistry.normalizeIssuer(issuer), icon.filename); }); }); } + getSuggestedIconPaths(issuer: string): string[] { + if (!issuer) { + return []; + } + + const suggested: string[] = []; + this.icons.forEach((icon) => { + const matchType = IconPackRegistry.getMatchType(issuer, icon.issuer ?? []); + if (matchType === undefined) { + return; + } + + const path = `file://${this.onDevicePath}/${icon.filename}`; + if (matchType === IconMatchType.NORMAL) { + suggested.unshift(path); + } else { + suggested.push(path); + } + }); + return suggested; + } + getIconPathByIssuer(issuer: string): string { + const suggested = this.getSuggestedIconPaths(issuer); + if (suggested.length > 0) { + return suggested[0]; + } + const filename = this.iconMap.get(IconPackRegistry.normalizeIssuer(issuer)); if (!filename) { return ''; @@ -35,6 +75,17 @@ export class AegisIconPack { return `file://${this.onDevicePath}/${filename}`; } + getIconPathAt(index: number): string { + if (index < 0 || index >= this.icons.length) { + return ''; + } + return `file://${this.onDevicePath}/${this.icons[index].filename}`; + } + + getAllIconPaths(): string[] { + return this.icons.map((icon) => `file://${this.onDevicePath}/${icon.filename}`); + } + getKey(): string { return this.onDevicePath; } @@ -42,36 +93,9 @@ export class AegisIconPack { export class IconPackRegistry { private static readonly DEFAULT_PACK_KEY = 'default'; - private static readonly DEFAULT_ISSUERS: Set = new Set([ - '1and1', '1password', '23andme', 'adafruit', 'adguard', 'adobe', 'airbnb', 'airbrake', 'airtable', 'allegropl', - 'alwaysdata', 'amazon', 'amazonwebservices', 'angellist', 'animebytes', 'anonaddy', 'apache', 'apple', 'appveyor', - 'arenanet', 'atlantic_net', 'atlassian', 'avm', 'backblaze', 'battlenet', 'betterment', 'binance', 'bitbucket', - 'bitcoin', 'bitdefender', 'bitfinex', 'bitmex', 'bitpanda', 'bitstamp', 'bittrex', 'bitwala', 'bitwarden', - 'blockchain_info', 'bugcrowd', 'cexio', 'church_tools', 'cisco', 'cloudflare', 'cloud_download', 'cobranded', - 'codegiant', 'coinbase', 'coinjar', 'computerbase', 'connectwise_manage', 'cozycloud', 'crowdin', 'dashlane', - 'debian', 'degiro', 'denic', 'deutsche_bahn', 'diaspora', 'digidentity', 'digital_ocean', 'discord', 'discourse', - 'disroot', 'docker', 'docusign', 'dreamhost', 'dropbox', 'drupal', 'electronic_arts', 'email', 'epic_games', 'etsy', - 'eveonline', 'evernote', 'facebook', 'faceit', 'fanatical', 'fastmail', 'figma', 'fingerprint', 'finnair', - 'firefox', 'flight_takeoff', 'floatplane', 'friendica', 'fritz', 'gamepad', 'gandi', 'git', 'gitea', 'github', - 'gitlab', 'gmx', 'godaddy', 'gogs', 'google', 'govuk', 'grav', 'greenhost', 'hackerone', 'heroku', 'hetzner', - 'hitbtc', 'hmrc', 'home_assistant', 'hover', 'humblebundle', 'hurricane_electric', 'ibm', 'iconomi', 'ifttt', 'ing', - 'instagram', 'inwx', 'itchio', 'jagex', 'jetbrains', 'joomla', 'keeper', 'kickstarter', 'kraken', 'kucoin', - 'lastpass', 'librenms', 'lichess', 'linkedin', 'linode', 'liqui', 'livelyme', 'lobsters', 'localbitcoins', - 'localmonero', 'login_gov', 'logmein', 'mailbox', 'mailchimp', 'mailcow', 'mailgun', 'mailru', 'mapbox', 'mastodon', - 'matomo', 'mega', 'mercadolibre', 'microsoft', 'microsoft_teams', 'migadu', 'miles_and_more', 'mint', 'miraheze', - 'mixer', 'mongodb', 'mvpsnet', 'namecheap', 'namecom', 'nas', 'netcup', 'nextcloud', 'nintendo', 'no_starch_press', - 'npm', 'oculus', 'office', 'okta', 'online', 'openvz', 'opnsense', 'orcid', 'origin', 'ovh', 'packet', - 'parsecgaming', 'passwordstate', 'patreon', 'paypal', 'paysafecard', 'paywithprivacy', 'pcloud', 'phabricator', - 'phpmyadmin', 'pluralsight', 'plurk', 'posteo', 'pretix', 'prey', 'private_internet_access', 'protonmail', - 'proxmox', 'pushover', 'pypi', 'python_anywhere', 'rackspace', 'reddit', 'revolt', 'ripe_ncc', 'ripio', 'robinhood', - 'rocketbeanstv', 'rockstar', 'rss', 'sap', 'scaleway', 'school', 'sciebo', 'sentry', 'sevdesk', 'skrill', 'slack', - 'snapchat', 'sophos', 'sourceforge', 'squarespace', 'standardnotes', 'starcitizen', 'steam', 'stripe', 'sync', - 'synology', 'teahub', 'teamviewer', 'terminal', 'tencent_cloud_services', 'todoalojamiento', 'transip', 'trello', - 'tumblr', 'turbotax', 'tutanota', 'tuwien_ac_at', 'twilio', 'twitch', 'twitter', 'uber', 'ubisoft', 'ubnt', - 'ubuntu_one', 'unity', 'uphold', 'usaa', 'vagrant_cloud', 'vexxhost', 'vk', 'vultr', 'wallabag', 'wallet', - 'wargaming', 'wasabi', 'weclapp', 'wikimedia', 'wordpress', 'workplace', 'xero', 'xerox', 'xing', 'yandex_money', - 'zapier', 'zendesk', 'zoho', 'zoom', 'feishu', 'nexus_mods' - ]); + private static readonly DEFAULT_ISSUERS: string[] = ['aliyun', 'cloudflare', 'epic_games', 'github', 'gitlab', + 'google', 'huawei', 'jetbrains', 'microsoft', 'namecheap', 'neteasemail', 'nintendo', 'nvidia', 'steam', + 'twitter', 'ubisoft']; static normalizeIssuer(issuer: string): string { return issuer.trim().toLowerCase().replaceAll(' ', '_'); @@ -94,11 +118,11 @@ export class IconPackRegistry { } static getDefaultIconPathByIssuer(issuer: string): string { - const normalized = IconPackRegistry.normalizeIssuer(issuer); - if (!IconPackRegistry.DEFAULT_ISSUERS.has(normalized)) { - return ''; + const suggested = IconPackRegistry.getSuggestedDefaultIconPaths(issuer); + if (suggested.length > 0) { + return suggested[0]; } - return `rawfile://icons/token_image_${normalized}.svg`; + return ''; } static getIconPathByIssuer(issuer: string, selectedPackKey: string, installedPacks: AegisIconPack[]): string { @@ -111,7 +135,107 @@ export class IconPackRegistry { return IconPackRegistry.getDefaultIconPathByIssuer(issuer); } - return pack.getIconPathByIssuer(issuer); + const path = pack.getIconPathByIssuer(issuer); + if (path) { + return path; + } + return IconPackRegistry.getDefaultIconPathByIssuer(issuer); + } + + static getDefaultIconPaths(): string[] { + return IconPackRegistry.DEFAULT_ISSUERS.map((issuer) => `rawfile://icons/${issuer}.png`); + } + + static getSuggestedDefaultIconPaths(issuer: string): string[] { + if (!issuer) { + return []; + } + + const suggested: string[] = []; + IconPackRegistry.DEFAULT_ISSUERS.forEach((candidate) => { + const matchType = IconPackRegistry.getMatchType(issuer, [candidate, candidate.replaceAll('_', ' ')]); + if (matchType === undefined) { + return; + } + + const path = `rawfile://icons/${candidate}.png`; + if (matchType === IconMatchType.NORMAL) { + suggested.unshift(path); + } else { + suggested.push(path); + } + }); + return suggested; + } + + static getSuggestedIconPaths(issuer: string, installedPacks: AegisIconPack[]): string[] { + const suggested: string[] = []; + const seen = new Set(); + const pushPath = (path: string) => { + if (!path || seen.has(path)) { + return; + } + seen.add(path); + suggested.push(path); + }; + + IconPackRegistry.getSuggestedDefaultIconPaths(issuer).forEach(pushPath); + installedPacks.filter((pack) => !pack.invalid) + .forEach((pack) => pack.getSuggestedIconPaths(issuer).forEach(pushPath)); + return suggested; + } + + static getIconSections(installedPacks: AegisIconPack[]): IconPackSection[] { + const sections: IconPackSection[] = [ + { + key: IconPackRegistry.DEFAULT_PACK_KEY, + title: 'builtin', + count: IconPackRegistry.DEFAULT_ISSUERS.length, + getPathAt: (index: number): string => { + if (index < 0 || index >= IconPackRegistry.DEFAULT_ISSUERS.length) { + return ''; + } + return `rawfile://icons/${IconPackRegistry.DEFAULT_ISSUERS[index]}.png`; + } + } + ]; + + installedPacks.filter((pack) => !pack.invalid).forEach((pack) => { + sections.push({ + key: pack.getKey(), + title: pack.name, + count: pack.icons.length, + getPathAt: (index: number): string => pack.getIconPathAt(index) + }); + }); + + return sections; + } + + static getMatchType(issuer: string, candidates: string[]): IconMatchType | undefined { + const normalizedIssuer = issuer.trim().toLowerCase(); + if (!normalizedIssuer) { + return undefined; + } + + let inverseMatch = false; + for (const candidate of candidates) { + const normalizedCandidate = candidate.trim().toLowerCase(); + if (!normalizedCandidate) { + continue; + } + if (normalizedCandidate.includes(normalizedIssuer)) { + return IconMatchType.NORMAL; + } + if (normalizedIssuer.includes(normalizedCandidate)) { + inverseMatch = true; + } + } + + if (inverseMatch) { + return IconMatchType.INVERSE; + } + return undefined; } static async loadInstalledPacks(context: common.UIAbilityContext): Promise { @@ -257,4 +381,3 @@ export class IconPackRegistry { } } - diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json index 5757c38..74eb409 100644 --- a/entry/src/main/resources/base/element/color.json +++ b/entry/src/main/resources/base/element/color.json @@ -35,6 +35,10 @@ { "name": "icon_pack_row_background", "value": "#f5f5f5" + }, + { + "name": "icon_picker_background", + "value": "#cccccc" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index 9e4922e..50bd43a 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -90,7 +90,7 @@ }, { "name": "add_totp_uri_desc", - "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567\u0026issuer=Example" + "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alic e@example.com?secret=ABCDEFGHIJ234567&issuer=Example" }, { "name": "add_restore_title", @@ -703,6 +703,22 @@ { "name": "invalid_steam_qr_code", "value": "Invalid Steam login QR code." + }, + { + "name": "icon_picker_auto", + "value": "Auto" + }, + { + "name": "icon_picker_recommended", + "value": "Recommended" + }, + { + "name": "icon_picker_title", + "value": "Choose icon" + }, + { + "name": "icon_picker_mode", + "value": "Display mode" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/dark/element/color.json b/entry/src/main/resources/dark/element/color.json index ea360c7..6c8fd40 100644 --- a/entry/src/main/resources/dark/element/color.json +++ b/entry/src/main/resources/dark/element/color.json @@ -35,6 +35,10 @@ { "name": "icon_pack_row_background", "value": "#191919" + }, + { + "name": "icon_picker_background", + "value": "#000000" } ] } diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index 9e4922e..50bd43a 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -90,7 +90,7 @@ }, { "name": "add_totp_uri_desc", - "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alice@example.com?secret=ABCDEFGHIJ234567\u0026issuer=Example" + "value": "A TOTP URI starts with otpauth://totp/, for example: otpauth://totp/Example:alic e@example.com?secret=ABCDEFGHIJ234567&issuer=Example" }, { "name": "add_restore_title", @@ -703,6 +703,22 @@ { "name": "invalid_steam_qr_code", "value": "Invalid Steam login QR code." + }, + { + "name": "icon_picker_auto", + "value": "Auto" + }, + { + "name": "icon_picker_recommended", + "value": "Recommended" + }, + { + "name": "icon_picker_title", + "value": "Choose icon" + }, + { + "name": "icon_picker_mode", + "value": "Display mode" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/aliyun.png b/entry/src/main/resources/rawfile/icons/aliyun.png new file mode 100644 index 0000000000000000000000000000000000000000..75c67bf6e9ffd320f055262f6a4d56dfcd77bf8d GIT binary patch literal 5207 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/cloudflare.png b/entry/src/main/resources/rawfile/icons/cloudflare.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0c470d97d3df844ee1f712fda69614eeda39e1 GIT binary patch literal 6937 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/epic_games.png b/entry/src/main/resources/rawfile/icons/epic_games.png new file mode 100644 index 0000000000000000000000000000000000000000..c7990c9c68e188f3647faaa8f60851e27a2574a2 GIT binary patch literal 7678 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

`( z-H=?WHm;5QvlfST@ zFSK0KT7a+@qt3IR_z2OD;KwOpE|}9Voy*#I8SPfTkIfB!k0-=1L05vL7Tsnm{OU)6r36~VYo)f(!8}v~v!A40dRCmF!L&t(unelksMAz( zDey}WPeU{5D~sTakurOZOpLm5qU9OQ%wy;b`ne>yrCK5lY8B$7)z(?aVh*Ewc10cr(6x^> zgT5-{Z`Z4_h5zQ1(qVEX<2NbJ#sBpxZa;Vj4oeGjZh72sS?@rc>5UTeyQH-&sjVn@ zPU_8snsJQig4gZSw98nL`*0aUu{#Zeix0Q#R`0<^il$S>tA)kKZQ5NOyibn2IwV;E zK!D44;=aFnP4}=-zX|PQ3r)aj=3dghQ^J0( zxlI1Bn#&$Xy~k(@bXk{+fV=o4rEzS7h+wXbxu$^Q8p(7foC(HyYwlUCZ=Y7+siwhk zaIuUUq&MY<4+<=jL;{*GnC!RZOGHReLl{aOhI5GRR)oRHu`JkrM#9%;UH_|>I7$7; zcj>d#uBW3R_;OrkBLLWWTfoBC@7gozn1f^wLvKXQrozvvJ1}Wt51d_DM^;iY!_HAo zse~_EW=SJPi$*Pz;$LVp^+ckFSppxN%Lh<*%V)j0g_K=6(x|RA#A-+Xxy<;JDoUU9 z%-kg(Dk!V44!7%H_T)Ns;0BjFU&nTfQ9-wU_BbBYW|)cxju@h+ z7}C|(JmR;r!#}7cEx-%kdhIiq>rHZA(I#Gu8J}l}NVw=>`Z-}y(-bO9`kl`hG#J?W zCqVW$JZu?YD^iIe6ds4aBdTT}->vikP?ywRvP!K_Tiocm|h1 z+5l!2QCjNlhG=e)dVV1WfJWt3EH2IYZ6%^TG4SZwqTLqb-jZgX7n`CVevCzpE&hUz zt^OP)A6%M3U}TybeBAO$*rfZ>o)Uyd#QuWQWgBEy2_jWoKwsMHR)&!2i5Een zvrk*sYb$o!$sBm&^lQ6HL$0>k`^E)Z!Gf*S_c zUr?b~qChFo2#-X-3a7<@&+nN`7Z3g!uo(1=vx3nS18N10FEEr9cq8=LFGP*b5pN}w zTj=*6iD9C>kaKxHFIT*%ih7PT`h1+B~dq?{7Bw0BwYA}4A|Lxk$tnIT4Xk8wz#TvZ82F(iU1Z)MAnT4<3;kdxLaO?B7hJC zOzqgS$2NHXbP6BN(0yxM$j}MeM_S kCikqsX9|g&YJ%;SB_8_}?p7{HIh2Qg$_( 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 L3SxC4zk~k=(0I?T literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/nvidia.png b/entry/src/main/resources/rawfile/icons/nvidia.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf1f6ffcba65b7186466ea051d496c3b4acba29 GIT binary patch literal 10272 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/steam.png b/entry/src/main/resources/rawfile/icons/steam.png new file mode 100644 index 0000000000000000000000000000000000000000..a61433a9f7a3459487f0267450f245a394ee6e0f GIT binary patch literal 21258 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 \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_1password.svg b/entry/src/main/resources/rawfile/icons/token_image_1password.svg deleted file mode 100644 index 76f6448..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_1password.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_23andme.svg b/entry/src/main/resources/rawfile/icons/token_image_23andme.svg deleted file mode 100644 index 26bee5a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_23andme.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg b/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg deleted file mode 100644 index 4e4a396..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_adafruit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adguard.svg b/entry/src/main/resources/rawfile/icons/token_image_adguard.svg deleted file mode 100644 index 6e85601..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_adguard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_adobe.svg b/entry/src/main/resources/rawfile/icons/token_image_adobe.svg deleted file mode 100644 index 4b20290..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_adobe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg b/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg deleted file mode 100644 index cb85c7b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_airbnb.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg b/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg deleted file mode 100644 index e67f35c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_airbrake.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_airtable.svg b/entry/src/main/resources/rawfile/icons/token_image_airtable.svg deleted file mode 100644 index 8d99e74..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_airtable.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg b/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg deleted file mode 100644 index d71196e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_allegropl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg b/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg deleted file mode 100644 index 60ecdf0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_alwaysdata.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_amazon.svg b/entry/src/main/resources/rawfile/icons/token_image_amazon.svg deleted file mode 100644 index 2582aa2..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_amazon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg b/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg deleted file mode 100644 index 6e17998..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_amazonwebservices.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_angellist.svg b/entry/src/main/resources/rawfile/icons/token_image_angellist.svg deleted file mode 100644 index 4f12e69..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_angellist.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg b/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg deleted file mode 100644 index 710968a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_animebytes.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg b/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg deleted file mode 100644 index adf4421..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_anonaddy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_apache.svg b/entry/src/main/resources/rawfile/icons/token_image_apache.svg deleted file mode 100644 index 82c07e6..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_apache.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_apple.svg b/entry/src/main/resources/rawfile/icons/token_image_apple.svg deleted file mode 100644 index 543b885..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_apple.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg b/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg deleted file mode 100644 index 1af0459..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_appveyor.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg b/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg deleted file mode 100644 index b26a227..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_arenanet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg b/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg deleted file mode 100644 index e5d2066..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_atlantic_net.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg b/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg deleted file mode 100644 index 6438c1b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_atlassian.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_avm.svg b/entry/src/main/resources/rawfile/icons/token_image_avm.svg deleted file mode 100644 index 7506c14..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_avm.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg b/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg deleted file mode 100644 index 6b033c4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_backblaze.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg b/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg deleted file mode 100644 index 3484a58..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_battlenet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_betterment.svg b/entry/src/main/resources/rawfile/icons/token_image_betterment.svg deleted file mode 100644 index 81c004e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_betterment.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_binance.svg b/entry/src/main/resources/rawfile/icons/token_image_binance.svg deleted file mode 100644 index 14e88d0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_binance.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg b/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg deleted file mode 100644 index 086a1d0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitbucket.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg b/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg deleted file mode 100644 index 19b4c5f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitcoin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg b/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg deleted file mode 100644 index 977617a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitdefender.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg b/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg deleted file mode 100644 index 06abdfc..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitfinex.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg b/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg deleted file mode 100644 index 29801ab..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitmex.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg b/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg deleted file mode 100644 index cc431da..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitpanda.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg b/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg deleted file mode 100644 index 48d7024..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitstamp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg b/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg deleted file mode 100644 index df5a245..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bittrex.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg b/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg deleted file mode 100644 index d7e280d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitwala.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg b/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg deleted file mode 100644 index fb0778f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bitwarden.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg b/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg deleted file mode 100644 index 6132f22..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_blockchain_info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg b/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg deleted file mode 100644 index fc3c540..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_bugcrowd.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cexio.svg b/entry/src/main/resources/rawfile/icons/token_image_cexio.svg deleted file mode 100644 index c8679d9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cexio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg b/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg deleted file mode 100644 index 539e2c7..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_church_tools.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cisco.svg b/entry/src/main/resources/rawfile/icons/token_image_cisco.svg deleted file mode 100644 index 60090fd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cisco.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg b/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg deleted file mode 100644 index dd1742c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cloud_download.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg b/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg deleted file mode 100644 index c75ec9c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cloudflare.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg b/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg deleted file mode 100644 index b7fc741..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cobranded.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg b/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg deleted file mode 100644 index 72b2f75..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_codegiant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg b/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg deleted file mode 100644 index 585e794..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_coinbase.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg b/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg deleted file mode 100644 index 089b9bb..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_coinjar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg b/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg deleted file mode 100644 index 05ea358..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_computerbase.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg b/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg deleted file mode 100644 index aee0571..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_connectwise_manage.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg b/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg deleted file mode 100644 index 5975953..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_cozycloud.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg b/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg deleted file mode 100644 index 0c200d6..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_crowdin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg b/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg deleted file mode 100644 index 165bbc1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_dashlane.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_debian.svg b/entry/src/main/resources/rawfile/icons/token_image_debian.svg deleted file mode 100644 index 850d699..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_debian.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_degiro.svg b/entry/src/main/resources/rawfile/icons/token_image_degiro.svg deleted file mode 100644 index 9c6c1d6..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_degiro.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_denic.svg b/entry/src/main/resources/rawfile/icons/token_image_denic.svg deleted file mode 100644 index e0cb793..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_denic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg b/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg deleted file mode 100644 index 373da3b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_deutsche_bahn.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg b/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg deleted file mode 100644 index de8cb5f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_diaspora.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg b/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg deleted file mode 100644 index 17ce9d4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_digidentity.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg b/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg deleted file mode 100644 index 5b1b755..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_digital_ocean.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_discord.svg b/entry/src/main/resources/rawfile/icons/token_image_discord.svg deleted file mode 100644 index 323f9a3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_discord.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_discourse.svg b/entry/src/main/resources/rawfile/icons/token_image_discourse.svg deleted file mode 100644 index 93d02bf..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_discourse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_disroot.svg b/entry/src/main/resources/rawfile/icons/token_image_disroot.svg deleted file mode 100644 index c45ccd5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_disroot.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_docker.svg b/entry/src/main/resources/rawfile/icons/token_image_docker.svg deleted file mode 100644 index e46dbd1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_docker.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_docusign.svg b/entry/src/main/resources/rawfile/icons/token_image_docusign.svg deleted file mode 100644 index 1bc726a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_docusign.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg b/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg deleted file mode 100644 index 73e36cd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_dreamhost.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg b/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg deleted file mode 100644 index 471e95e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_dropbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_drupal.svg b/entry/src/main/resources/rawfile/icons/token_image_drupal.svg deleted file mode 100644 index 5afac4e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_drupal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg b/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg deleted file mode 100644 index 40ea878..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_electronic_arts.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_email.svg b/entry/src/main/resources/rawfile/icons/token_image_email.svg deleted file mode 100644 index d384dfd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_email.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg b/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg deleted file mode 100644 index 128641e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_epic_games.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_etsy.svg b/entry/src/main/resources/rawfile/icons/token_image_etsy.svg deleted file mode 100644 index 18596cd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_etsy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg b/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg deleted file mode 100644 index a6642a5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_eveonline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_evernote.svg b/entry/src/main/resources/rawfile/icons/token_image_evernote.svg deleted file mode 100644 index 1a43416..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_evernote.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_facebook.svg b/entry/src/main/resources/rawfile/icons/token_image_facebook.svg deleted file mode 100644 index c475e2d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_facebook.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_faceit.svg b/entry/src/main/resources/rawfile/icons/token_image_faceit.svg deleted file mode 100644 index 655ff61..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_faceit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg b/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg deleted file mode 100644 index 7cd4ab3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_fanatical.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg b/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg deleted file mode 100644 index fbd7ac0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_fastmail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_feishu.svg b/entry/src/main/resources/rawfile/icons/token_image_feishu.svg deleted file mode 100644 index 88448b8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_feishu.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/entry/src/main/resources/rawfile/icons/token_image_figma.svg b/entry/src/main/resources/rawfile/icons/token_image_figma.svg deleted file mode 100644 index c252b02..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_figma.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg b/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg deleted file mode 100644 index e07619b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_fingerprint.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_finnair.svg b/entry/src/main/resources/rawfile/icons/token_image_finnair.svg deleted file mode 100644 index 095d223..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_finnair.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_firefox.svg b/entry/src/main/resources/rawfile/icons/token_image_firefox.svg deleted file mode 100644 index f133265..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_firefox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg b/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg deleted file mode 100644 index 89861da..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_flight_takeoff.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg b/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg deleted file mode 100644 index 62305f8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_floatplane.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_friendica.svg b/entry/src/main/resources/rawfile/icons/token_image_friendica.svg deleted file mode 100644 index 301e1c3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_friendica.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_fritz.svg b/entry/src/main/resources/rawfile/icons/token_image_fritz.svg deleted file mode 100644 index 2bc5dd0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_fritz.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg b/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg deleted file mode 100644 index 8a4b4aa..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gamepad.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gandi.svg b/entry/src/main/resources/rawfile/icons/token_image_gandi.svg deleted file mode 100644 index dc8f7a5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gandi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_git.svg b/entry/src/main/resources/rawfile/icons/token_image_git.svg deleted file mode 100644 index 54a8773..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_git.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gitea.svg b/entry/src/main/resources/rawfile/icons/token_image_gitea.svg deleted file mode 100644 index 638306a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gitea.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_github.svg b/entry/src/main/resources/rawfile/icons/token_image_github.svg deleted file mode 100644 index 03fd102..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg b/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg deleted file mode 100644 index 5f0751e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gitlab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gmx.svg b/entry/src/main/resources/rawfile/icons/token_image_gmx.svg deleted file mode 100644 index e795333..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gmx.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg b/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg deleted file mode 100644 index 5489357..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_godaddy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_gogs.svg b/entry/src/main/resources/rawfile/icons/token_image_gogs.svg deleted file mode 100644 index 8f643be..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_gogs.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_google.svg b/entry/src/main/resources/rawfile/icons/token_image_google.svg deleted file mode 100644 index 50d0ab1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_google.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_govuk.svg b/entry/src/main/resources/rawfile/icons/token_image_govuk.svg deleted file mode 100644 index 9058fd6..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_govuk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_grav.svg b/entry/src/main/resources/rawfile/icons/token_image_grav.svg deleted file mode 100644 index 290a654..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_grav.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg b/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg deleted file mode 100644 index aadaf0f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_greenhost.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg b/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg deleted file mode 100644 index ac5e64d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hackerone.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_heroku.svg b/entry/src/main/resources/rawfile/icons/token_image_heroku.svg deleted file mode 100644 index c71ee94..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_heroku.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg b/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg deleted file mode 100644 index b3d8543..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hetzner.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg b/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg deleted file mode 100644 index 6d3e3b5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hitbtc.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg b/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg deleted file mode 100644 index a2f3ca0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hmrc.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg b/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg deleted file mode 100644 index 2c4b570..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_home_assistant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hover.svg b/entry/src/main/resources/rawfile/icons/token_image_hover.svg deleted file mode 100644 index 2650bbf..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg b/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg deleted file mode 100644 index 38d52a9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_humblebundle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg b/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg deleted file mode 100644 index 355fda9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_hurricane_electric.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ibm.svg b/entry/src/main/resources/rawfile/icons/token_image_ibm.svg deleted file mode 100644 index e1e732e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ibm.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg b/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg deleted file mode 100644 index 42c2ab0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_iconomi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg b/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg deleted file mode 100644 index 33a5c7e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ifttt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ing.svg b/entry/src/main/resources/rawfile/icons/token_image_ing.svg deleted file mode 100644 index 5678bdb..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_instagram.svg b/entry/src/main/resources/rawfile/icons/token_image_instagram.svg deleted file mode 100644 index ca67360..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_instagram.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_inwx.svg b/entry/src/main/resources/rawfile/icons/token_image_inwx.svg deleted file mode 100644 index e95d151..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_inwx.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_itchio.svg b/entry/src/main/resources/rawfile/icons/token_image_itchio.svg deleted file mode 100644 index 9cde8ad..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_itchio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_jagex.svg b/entry/src/main/resources/rawfile/icons/token_image_jagex.svg deleted file mode 100644 index 0944c06..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_jagex.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg b/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg deleted file mode 100644 index dc08e20..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_jetbrains.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_joomla.svg b/entry/src/main/resources/rawfile/icons/token_image_joomla.svg deleted file mode 100644 index 55ed248..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_joomla.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_keeper.svg b/entry/src/main/resources/rawfile/icons/token_image_keeper.svg deleted file mode 100644 index 93fac87..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_keeper.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg b/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg deleted file mode 100644 index eae435f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_kickstarter.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kraken.svg b/entry/src/main/resources/rawfile/icons/token_image_kraken.svg deleted file mode 100644 index af79b9b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_kraken.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg b/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg deleted file mode 100644 index 6bd197c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_kucoin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg b/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg deleted file mode 100644 index 9a83a9b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_lastpass.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_librenms.svg b/entry/src/main/resources/rawfile/icons/token_image_librenms.svg deleted file mode 100644 index 272c32b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_librenms.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lichess.svg b/entry/src/main/resources/rawfile/icons/token_image_lichess.svg deleted file mode 100644 index 2500de9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_lichess.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg b/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg deleted file mode 100644 index 00e9afa..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_linkedin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_linode.svg b/entry/src/main/resources/rawfile/icons/token_image_linode.svg deleted file mode 100644 index 0e9aab9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_linode.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_liqui.svg b/entry/src/main/resources/rawfile/icons/token_image_liqui.svg deleted file mode 100644 index b129d53..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_liqui.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg b/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg deleted file mode 100644 index 97ec62c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_livelyme.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg b/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg deleted file mode 100644 index c5aed73..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_lobsters.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg b/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg deleted file mode 100644 index c0e0af1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_localbitcoins.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg b/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg deleted file mode 100644 index f109e1f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_localmonero.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg b/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg deleted file mode 100644 index 156d9c8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_login_gov.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_logmein.svg b/entry/src/main/resources/rawfile/icons/token_image_logmein.svg deleted file mode 100644 index e3b22bc..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_logmein.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg b/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg deleted file mode 100644 index 6a361a2..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mailbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg b/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg deleted file mode 100644 index 5a4a9bb..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mailchimp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg b/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg deleted file mode 100644 index 9557d8d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mailcow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg b/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg deleted file mode 100644 index 626d9c4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mailgun.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mailru.svg b/entry/src/main/resources/rawfile/icons/token_image_mailru.svg deleted file mode 100644 index d130685..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mailru.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg b/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg deleted file mode 100644 index 6851983..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mapbox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg b/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg deleted file mode 100644 index 7f84aa8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mastodon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_matomo.svg b/entry/src/main/resources/rawfile/icons/token_image_matomo.svg deleted file mode 100644 index 42a1cb9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_matomo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mega.svg b/entry/src/main/resources/rawfile/icons/token_image_mega.svg deleted file mode 100644 index 92f251d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mega.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg b/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg deleted file mode 100644 index 44121b7..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mercadolibre.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg b/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg deleted file mode 100644 index fab0008..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_microsoft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg b/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg deleted file mode 100644 index 73140f2..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_microsoft_teams.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_migadu.svg b/entry/src/main/resources/rawfile/icons/token_image_migadu.svg deleted file mode 100644 index 59a46ad..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_migadu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg b/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg deleted file mode 100644 index 138345a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_miles_and_more.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mint.svg b/entry/src/main/resources/rawfile/icons/token_image_mint.svg deleted file mode 100644 index b2cdaf3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mint.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg b/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg deleted file mode 100644 index 953070e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_miraheze.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mixer.svg b/entry/src/main/resources/rawfile/icons/token_image_mixer.svg deleted file mode 100644 index 4a59b41..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mixer.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg b/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg deleted file mode 100644 index 7db6106..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mongodb.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg b/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg deleted file mode 100644 index a5a6193..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_mvpsnet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg b/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg deleted file mode 100644 index 48d2480..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_namecheap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_namecom.svg b/entry/src/main/resources/rawfile/icons/token_image_namecom.svg deleted file mode 100644 index 1936507..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_namecom.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nas.svg b/entry/src/main/resources/rawfile/icons/token_image_nas.svg deleted file mode 100644 index e2286a8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_nas.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_netcup.svg b/entry/src/main/resources/rawfile/icons/token_image_netcup.svg deleted file mode 100644 index 55c85e0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_netcup.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg b/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg deleted file mode 100644 index 0f45422..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_nextcloud.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg b/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg deleted file mode 100644 index 63b2c22..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_nexus_mods.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg b/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg deleted file mode 100644 index 75b1907..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_nintendo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg b/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg deleted file mode 100644 index ccb5b72..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_no_starch_press.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_npm.svg b/entry/src/main/resources/rawfile/icons/token_image_npm.svg deleted file mode 100644 index 4a6bc3e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_npm.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_oculus.svg b/entry/src/main/resources/rawfile/icons/token_image_oculus.svg deleted file mode 100644 index 7d5d6a5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_oculus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_office.svg b/entry/src/main/resources/rawfile/icons/token_image_office.svg deleted file mode 100644 index 1153a9b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_office.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_okta.svg b/entry/src/main/resources/rawfile/icons/token_image_okta.svg deleted file mode 100644 index eab1e91..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_okta.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_online.svg b/entry/src/main/resources/rawfile/icons/token_image_online.svg deleted file mode 100644 index ead1312..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_online.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_openvz.svg b/entry/src/main/resources/rawfile/icons/token_image_openvz.svg deleted file mode 100644 index 41357e9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_openvz.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg b/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg deleted file mode 100644 index 63ecb9f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_opnsense.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_orcid.svg b/entry/src/main/resources/rawfile/icons/token_image_orcid.svg deleted file mode 100644 index f6244c4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_orcid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_origin.svg b/entry/src/main/resources/rawfile/icons/token_image_origin.svg deleted file mode 100644 index 322458f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_origin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ovh.svg b/entry/src/main/resources/rawfile/icons/token_image_ovh.svg deleted file mode 100644 index 660b305..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ovh.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_packet.svg b/entry/src/main/resources/rawfile/icons/token_image_packet.svg deleted file mode 100644 index 7fa979b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_packet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg b/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg deleted file mode 100644 index b423f02..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_parsecgaming.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg b/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg deleted file mode 100644 index 747e20d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_passwordstate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_patreon.svg b/entry/src/main/resources/rawfile/icons/token_image_patreon.svg deleted file mode 100644 index 41781fd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_patreon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paypal.svg b/entry/src/main/resources/rawfile/icons/token_image_paypal.svg deleted file mode 100644 index a592d1b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_paypal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg b/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg deleted file mode 100644 index c82ae95..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_paysafecard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg b/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg deleted file mode 100644 index ac55871..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_paywithprivacy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg b/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg deleted file mode 100644 index a03336b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_pcloud.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg b/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg deleted file mode 100644 index 194f996..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_phabricator.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg b/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg deleted file mode 100644 index 6d87f99..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_phpmyadmin.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg b/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg deleted file mode 100644 index 93b1d84..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_pluralsight.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_plurk.svg b/entry/src/main/resources/rawfile/icons/token_image_plurk.svg deleted file mode 100644 index b1e1459..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_plurk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_posteo.svg b/entry/src/main/resources/rawfile/icons/token_image_posteo.svg deleted file mode 100644 index a37eb0f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_posteo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pretix.svg b/entry/src/main/resources/rawfile/icons/token_image_pretix.svg deleted file mode 100644 index fba4ac6..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_pretix.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_prey.svg b/entry/src/main/resources/rawfile/icons/token_image_prey.svg deleted file mode 100644 index dd666e1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_prey.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg b/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg deleted file mode 100644 index 7506f41..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_private_internet_access.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg b/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg deleted file mode 100644 index 59ee737..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_protonmail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg b/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg deleted file mode 100644 index 3bb8737..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_proxmox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pushover.svg b/entry/src/main/resources/rawfile/icons/token_image_pushover.svg deleted file mode 100644 index 561405a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_pushover.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_pypi.svg b/entry/src/main/resources/rawfile/icons/token_image_pypi.svg deleted file mode 100644 index 43b746f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_pypi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg b/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg deleted file mode 100644 index 3676fba..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_python_anywhere.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg b/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg deleted file mode 100644 index 7a501b9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_rackspace.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_reddit.svg b/entry/src/main/resources/rawfile/icons/token_image_reddit.svg deleted file mode 100644 index 2ad6782..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_reddit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_revolt.svg b/entry/src/main/resources/rawfile/icons/token_image_revolt.svg deleted file mode 100644 index 6ab0799..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_revolt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg b/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg deleted file mode 100644 index 024687c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ripe_ncc.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ripio.svg b/entry/src/main/resources/rawfile/icons/token_image_ripio.svg deleted file mode 100644 index f5128d8..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ripio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg b/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg deleted file mode 100644 index e960c34..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_robinhood.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg b/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg deleted file mode 100644 index 28194be..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_rocketbeanstv.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg b/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg deleted file mode 100644 index 20dadff..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_rockstar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_rss.svg b/entry/src/main/resources/rawfile/icons/token_image_rss.svg deleted file mode 100644 index 9038681..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_rss.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sap.svg b/entry/src/main/resources/rawfile/icons/token_image_sap.svg deleted file mode 100644 index aefe1e4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg b/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg deleted file mode 100644 index 4e764a0..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_scaleway.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_school.svg b/entry/src/main/resources/rawfile/icons/token_image_school.svg deleted file mode 100644 index 48f0907..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_school.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg b/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg deleted file mode 100644 index 8ec8cc5..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sciebo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sentry.svg b/entry/src/main/resources/rawfile/icons/token_image_sentry.svg deleted file mode 100644 index 8fd2177..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sentry.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg b/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg deleted file mode 100644 index 981cf55..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sevdesk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_skrill.svg b/entry/src/main/resources/rawfile/icons/token_image_skrill.svg deleted file mode 100644 index 99cc929..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_skrill.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_slack.svg b/entry/src/main/resources/rawfile/icons/token_image_slack.svg deleted file mode 100644 index 236ed30..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_slack.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg b/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg deleted file mode 100644 index e58e4e4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_snapchat.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sophos.svg b/entry/src/main/resources/rawfile/icons/token_image_sophos.svg deleted file mode 100644 index 7cb1f98..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sophos.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg b/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg deleted file mode 100644 index da18dac..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sourceforge.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg b/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg deleted file mode 100644 index ae0ed2b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_squarespace.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg b/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg deleted file mode 100644 index c514dda..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_standardnotes.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg b/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg deleted file mode 100644 index 193187d..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_starcitizen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_steam.svg b/entry/src/main/resources/rawfile/icons/token_image_steam.svg deleted file mode 100644 index ccaa365..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_steam.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_stripe.svg b/entry/src/main/resources/rawfile/icons/token_image_stripe.svg deleted file mode 100644 index a89b925..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_stripe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_sync.svg b/entry/src/main/resources/rawfile/icons/token_image_sync.svg deleted file mode 100644 index 93bfa2e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_sync.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_synology.svg b/entry/src/main/resources/rawfile/icons/token_image_synology.svg deleted file mode 100644 index 12368ea..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_synology.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_teahub.svg b/entry/src/main/resources/rawfile/icons/token_image_teahub.svg deleted file mode 100644 index 3c6cb16..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_teahub.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg b/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg deleted file mode 100644 index a543511..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_teamviewer.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg b/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg deleted file mode 100644 index 75faf3c..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_tencent_cloud_services.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_terminal.svg b/entry/src/main/resources/rawfile/icons/token_image_terminal.svg deleted file mode 100644 index e4acd15..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_terminal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg b/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg deleted file mode 100644 index c899b86..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_todoalojamiento.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_transip.svg b/entry/src/main/resources/rawfile/icons/token_image_transip.svg deleted file mode 100644 index 13a5d03..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_transip.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_trello.svg b/entry/src/main/resources/rawfile/icons/token_image_trello.svg deleted file mode 100644 index d60fbdb..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_trello.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg b/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg deleted file mode 100644 index 35263dd..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_tumblr.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg b/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg deleted file mode 100644 index 8096f93..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_turbotax.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg b/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg deleted file mode 100644 index 6291b29..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_tutanota.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg b/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg deleted file mode 100644 index e4c3f4e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_tuwien_ac_at.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twilio.svg b/entry/src/main/resources/rawfile/icons/token_image_twilio.svg deleted file mode 100644 index ed030f9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_twilio.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twitch.svg b/entry/src/main/resources/rawfile/icons/token_image_twitch.svg deleted file mode 100644 index 2c6187a..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_twitch.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_twitter.svg b/entry/src/main/resources/rawfile/icons/token_image_twitter.svg deleted file mode 100644 index c00baef..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_twitter.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_uber.svg b/entry/src/main/resources/rawfile/icons/token_image_uber.svg deleted file mode 100644 index bbf0ce4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_uber.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg b/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg deleted file mode 100644 index 4d8325f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ubisoft.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg b/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg deleted file mode 100644 index 06f1004..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ubnt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg b/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg deleted file mode 100644 index f1d7df4..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_ubuntu_one.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_unity.svg b/entry/src/main/resources/rawfile/icons/token_image_unity.svg deleted file mode 100644 index 1800df3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_unity.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_uphold.svg b/entry/src/main/resources/rawfile/icons/token_image_uphold.svg deleted file mode 100644 index 013b06b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_uphold.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_usaa.svg b/entry/src/main/resources/rawfile/icons/token_image_usaa.svg deleted file mode 100644 index bbfcd78..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_usaa.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg b/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg deleted file mode 100644 index 1d39e69..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_vagrant_cloud.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg b/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg deleted file mode 100644 index 52b28c3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_vexxhost.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vk.svg b/entry/src/main/resources/rawfile/icons/token_image_vk.svg deleted file mode 100644 index 33d7a72..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_vk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_vultr.svg b/entry/src/main/resources/rawfile/icons/token_image_vultr.svg deleted file mode 100644 index 5ebc436..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_vultr.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg b/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg deleted file mode 100644 index 40d1816..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wallabag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wallet.svg b/entry/src/main/resources/rawfile/icons/token_image_wallet.svg deleted file mode 100644 index 5ab5948..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wallet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg b/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg deleted file mode 100644 index 06c3369..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wargaming.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg b/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg deleted file mode 100644 index dc07b9b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wasabi.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg b/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg deleted file mode 100644 index ec30c1b..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_weclapp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg b/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg deleted file mode 100644 index ac83e71..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wikimedia.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg b/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg deleted file mode 100644 index ee97e70..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_wordpress.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_workplace.svg b/entry/src/main/resources/rawfile/icons/token_image_workplace.svg deleted file mode 100644 index 159038e..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_workplace.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xero.svg b/entry/src/main/resources/rawfile/icons/token_image_xero.svg deleted file mode 100644 index cebe9af..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_xero.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xerox.svg b/entry/src/main/resources/rawfile/icons/token_image_xerox.svg deleted file mode 100644 index 0e1e7ed..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_xerox.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_xing.svg b/entry/src/main/resources/rawfile/icons/token_image_xing.svg deleted file mode 100644 index 3e13cf1..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_xing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg b/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg deleted file mode 100644 index 7716863..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_yandex_money.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zapier.svg b/entry/src/main/resources/rawfile/icons/token_image_zapier.svg deleted file mode 100644 index 050ec1f..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_zapier.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg b/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg deleted file mode 100644 index 47c7022..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_zendesk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zoho.svg b/entry/src/main/resources/rawfile/icons/token_image_zoho.svg deleted file mode 100644 index d67e8c3..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_zoho.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/token_image_zoom.svg b/entry/src/main/resources/rawfile/icons/token_image_zoom.svg deleted file mode 100644 index 3f8bdc9..0000000 --- a/entry/src/main/resources/rawfile/icons/token_image_zoom.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/entry/src/main/resources/rawfile/icons/twitter.png b/entry/src/main/resources/rawfile/icons/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..002c6d20d1a7ad5f6ae844e22b4ff2dbd423c15a GIT binary patch literal 4407 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/ubisoft.png b/entry/src/main/resources/rawfile/icons/ubisoft.png new file mode 100644 index 0000000000000000000000000000000000000000..949344df9c8f33949086048c0fefe09780d74dfa GIT binary patch literal 15266 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index 1292c2d..e441aa6 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -703,6 +703,22 @@ { "name": "invalid_steam_qr_code", "value": "无效的 Steam 登陆二维码" + }, + { + "name": "icon_picker_auto", + "value": "自动" + }, + { + "name": "icon_picker_recommended", + "value": "推荐" + }, + { + "name": "icon_picker_title", + "value": "选择图标" + }, + { + "name": "icon_picker_mode", + "value": "显示方式" } ] } \ No newline at end of file From 9b8c53f80c2cb24815ebb859de189be44c8af5c8 Mon Sep 17 00:00:00 2001 From: lsxuan12138 <1146887979@qq.com> Date: Mon, 16 Mar 2026 20:47:05 +0800 Subject: [PATCH 6/6] =?UTF-8?q?-=E4=BF=AE=E5=A4=8D=E4=BB=8E=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E6=96=87=E4=BB=B6=E6=81=A2=E5=A4=8D=E6=97=B6=EF=BC=8C?= =?UTF-8?q?steam=E7=9A=84external=E4=B8=BA=E7=A9=BA=E4=B8=B2=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/pages/Base.ets | 3 +++ 1 file changed, 3 insertions(+) diff --git a/entry/src/main/ets/pages/Base.ets b/entry/src/main/ets/pages/Base.ets index d7d5d3f..ecaea8b 100644 --- a/entry/src/main/ets/pages/Base.ets +++ b/entry/src/main/ets/pages/Base.ets @@ -347,6 +347,9 @@ export class AuthDataStore { for (let index = 0; index < result.length; index++) { const element = result[index]; if (element.issuer.toLowerCase() == 'steam') { + if (element.external == '') { + continue; + } let authdata = JSON.parse(element.external) as Record // 兼容旧版备份中的 shardSecret 字段并统一结构 if (isLegacySteamExternal(authdata)) {

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 T4RSsG{sT~wQ6{3sEy8FelDdd0h@}` zs>^0=Gx-)JkR>P>ZTOEP;&#^N*>BWt`lO{FPv6Wha!SEN{tff|>)iXScgx>My*cx_ zt~RR&nePp5494{d)h8=bO)Nx$tcEe0%Gdb?bas7sLYf zuVF68|Nh|Q*~|IydDqUpFx?(o@W1f+mg;}%-E|F@&%Ios$I9@-UYLPHjX}VNL16}i zg8^eh0u#eQ7KSEH29}W^acwC>$km7J%dZyS|8v;?|LXp_&6iK@{D0ux3co*DxBYE* z#C=`%zHj=k#m&u?n=iH9TM=GXmS!&(U-f)uTGWf5_iI0HOjchNzO0%(weCVsP0iQf zHw8<>%kIygd)wykwWVoqd;C}u>Ykl>aO~LC^}SwOO=g~*HPvhl@9(F-=HA>Iyua%E zTc9~R@7ruC%vt*X>CKe=Z_K6NO047a+G<|;nLU2julH$8&{UccYaX}c$L9ULr*8fD zow{L9(6{$y%4;K}rxz7}|5{Y{Cup-y$%k7XHm6?s{cX>`&((?v)qL^U@w(HC^7B7@ zzGz{2P)kmGHe`W1{IO%fu^m!6BRRud` zzFl9v@pf@V>)L5XKac;3Uc9+ly#Ls{7j6uCIlZq#;&i*Rf?NWxa)#~p3_jcYnGxy=!10yx5!86$gV5yQ4 zdqZk^TCvO^eL<_4=W5^W(kYr|2Y~n=CgCaNPPBrRm=_BNVlo=p0~C|+5gIm-5-2z z?k!*xKC9R8{(SeU@Y6Em3-f;IY24nP|7D)Wyu0|zO0evL$zDJCn|P*Yomo&|0TS_a L^>bP0l+XkK3x;3a literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/namecheap.png b/entry/src/main/resources/rawfile/icons/namecheap.png new file mode 100644 index 0000000000000000000000000000000000000000..13686694c9fc7947d6ba466946b474f4ab18657a GIT binary patch literal 14964 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/neteasemail.png b/entry/src/main/resources/rawfile/icons/neteasemail.png new file mode 100644 index 0000000000000000000000000000000000000000..95ee528e8e5013d5401cf539065256987d0c6e55 GIT binary patch literal 23068 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%0DU~`-|v3E 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 E0H99yNdN!< literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/rawfile/icons/nintendo.png b/entry/src/main/resources/rawfile/icons/nintendo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f67591607164fb05d2d85b4d3357f3ad7cbb1b GIT binary patch literal 16796 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