diff --git a/app.json b/app.json index 5e179784..2c95e92a 100644 --- a/app.json +++ b/app.json @@ -84,6 +84,12 @@ } }, "plugins": [ + [ + "expo-document-picker", + { + "iCloudContainerEnvironment": "Production" + } + ], [ "expo-notifications", { diff --git a/fetch/PronoteData/homework.ts b/fetch/PronoteData/homework.ts index 64db379a..1b7c5b78 100644 --- a/fetch/PronoteData/homework.ts +++ b/fetch/PronoteData/homework.ts @@ -7,6 +7,7 @@ import { AsyncStoragePronoteKeys } from './connector'; import { getDefaultStore } from 'jotai'; import { homeworksAtom } from '../../atoms/homeworks'; import { btoa } from 'js-base64'; +import { RegisterTrophy } from '../../views/Settings/TrophiesScreen'; const defaultStore = getDefaultStore(); @@ -168,5 +169,9 @@ export const homeworkPatchHandler = async (homework: PapillonHomework, newDoneSt homeworks[homeworkIndex].done = newDoneState; defaultStore.set(homeworksAtom, homeworks); + if(newDoneState) { + RegisterTrophy('trophy_hw_done', homeworkID); + } + return true; }; diff --git a/ios/Papillon.xcodeproj/project.pbxproj b/ios/Papillon.xcodeproj/project.pbxproj index 6869cd06..67b3baff 100644 --- a/ios/Papillon.xcodeproj/project.pbxproj +++ b/ios/Papillon.xcodeproj/project.pbxproj @@ -7,15 +7,52 @@ objects = { /* Begin PBXBuildFile section */ + 06C7AEBE890D4166AD80EC3C /* pride-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2878465F05412C9A8531A1 /* pride-Icon-60x60@3x.png */; }; + 0926F15FD08A41B280F85D5E /* barbie-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B107EFA96D34C479055683E /* barbie-Icon-60x60@2x.png */; }; + 09848CB6DA77482CB6D031A8 /* sparkles-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = BFD0C49F47DC47B2AE86DE63 /* sparkles-Icon-60x60@2x.png */; }; + 0ACEA0FA4B8C4436BBAED2CB /* cutted-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E247CE06ABFC463D9BB438FD /* cutted-Icon-60x60@3x.png */; }; + 0FDE1234123A4B11938381C3 /* classic-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FD173B441ABD4C5D938D36CF /* classic-Icon-60x60@2x.png */; }; + 10FFD892C46644B68EBD1CC4 /* chip-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F65CB1054B1749A09CD5F62A /* chip-Icon-60x60@3x.png */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 15962A1383DE4EA3A5D8748F /* black-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 37D7932D4EE64073AE33BFF7 /* black-Icon-60x60@3x.png */; }; + 186085623D174831A37A8999 /* rayspurple-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = BD2D559B990D4860A80B7A24 /* rayspurple-Icon-60x60@3x.png */; }; + 2238B1DC64A14473840AE997 /* betterneon-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9A1F81A968214B5DA8D2ECC0 /* betterneon-Icon-60x60@3x.png */; }; + 22D5025B2ED4431BA97A32A7 /* metal-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = BD43F3014D964798B28E57DE /* metal-Icon-60x60@2x.png */; }; + 28285A6A33944CA6A2D51C76 /* backtoschool-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7875A66670E848D3B02D5A57 /* backtoschool-Icon-60x60@2x.png */; }; + 28457E3F08134EA2BABBD32F /* purple-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = ABFEEF424FB54C319339F4D0 /* purple-Icon-60x60@3x.png */; }; + 29FEC2DF7C2A46CDA496C99D /* oldios-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7AF364C4225147399C388F5D /* oldios-Icon-60x60@3x.png */; }; + 322AADA1E9644A188BCA1696 /* chip-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 67B6E57AABC242A18AB1834E /* chip-Icon-60x60@2x.png */; }; + 37ACC468811544D19E44483E /* neon-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2CA356BB06FC43098DB6345D /* neon-Icon-60x60@2x.png */; }; 39E5C448CE474DF2B1C63B8C /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54AA66A0F8574A6AA84F9CF8 /* noop-file.swift */; }; + 3DE48035BBA14F56B113D993 /* cutted-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 68F2230F14254A0EB4639D8E /* cutted-Icon-60x60@2x.png */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 3EEE3EEE6248484D81C22E2E /* relief-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 930D03684E3F4B7ABB298D09 /* relief-Icon-60x60@2x.png */; }; + 40F36CD1A425427E817D81E7 /* purple-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 18CAAFB3AA4E4A72867A0C7B /* purple-Icon-60x60@2x.png */; }; + 43C6DC1765EB407E9F7BB28A /* relief-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = CB5A1E9B15004002B3F9FDBA /* relief-Icon-60x60@3x.png */; }; 47E295F32B9B75FF0014C672 /* papillon_ding.wav in Resources */ = {isa = PBXBuildFile; fileRef = 47E295F22B9B75FF0014C672 /* papillon_ding.wav */; }; + 4E173D003F1545CF892F25E2 /* macos-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E6CC7AF823A54571ADA0F3D6 /* macos-Icon-60x60@2x.png */; }; + 4F06D5EBD30145118F399C42 /* lightgreen-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 039815CE4F604567BF3D47F6 /* lightgreen-Icon-60x60@2x.png */; }; + 4FF886446BD04CA5952CBC8F /* verscinq-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D041197D66048EFBC03307D /* verscinq-Icon-60x60@3x.png */; }; + 6956719D96944B6BB70E8E59 /* rays-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 42EB1E2F90724D169B11CEE7 /* rays-Icon-60x60@3x.png */; }; + 6FACFFC002E247A19A1E7148 /* pride-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4F09DE9F153048468D38BC58 /* pride-Icon-60x60@2x.png */; }; + 737C050195144A338EA785E2 /* beta-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2E911D8A2E745FC9C3290BF /* beta-Icon-60x60@2x.png */; }; + 73D322C1676541BBB456C2C3 /* metal-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7AF7FA081B0B45AFB4352A9E /* metal-Icon-60x60@3x.png */; }; + 7594D932526043769CA95E22 /* lightgreen-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FD27598E315A4292BD3A1071 /* lightgreen-Icon-60x60@3x.png */; }; + 7C1279AE8F7A42FCAD486441 /* retro-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ADB4272239D845558241B4C6 /* retro-Icon-60x60@2x.png */; }; + 7C55D8FFB8A64192B1E55B87 /* gradient-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0622CBAF6D6D43E4BBFB390B /* gradient-Icon-60x60@3x.png */; }; + 7E0730FEF9F2450A8872F8F2 /* macos-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A3284C84586548B995ED87B6 /* macos-Icon-60x60@3x.png */; }; + 82CDAEBFBC6643E281A827AD /* retro-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = ED8B4FA9CB5D4400AB195E94 /* retro-Icon-60x60@3x.png */; }; + 8AD63F9D94D74B8A988DFEA7 /* black-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 42D7539FE9D8416190089F0E /* black-Icon-60x60@2x.png */; }; + 905A06BB67594E8E93207A58 /* betterneon-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B4D961E4D58C429289EA8CE4 /* betterneon-Icon-60x60@2x.png */; }; 96905EF65AED1B983A6B3ABC /* libPods-Papillon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Papillon.a */; }; + A323A5C9C65743568CD78424 /* rays-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E5D5DCEEFA7B40259127A05B /* rays-Icon-60x60@2x.png */; }; + A68E0AC49C1346F280E5A2AC /* beta-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 65B74DD7F53E43DEB69F8BD8 /* beta-Icon-60x60@3x.png */; }; + A77494807DF74419839E8DCF /* oldios-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14170F17C8945A59753FF35 /* oldios-Icon-60x60@2x.png */; }; B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + BB3180634FE64D3A9FE04C60 /* gold-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 35AA41E3F2EE4E33B14D0965 /* gold-Icon-60x60@2x.png */; }; BD1F68A02B9B5BE900D857A1 /* SystemMediumGradeWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD1F689F2B9B5BE900D857A1 /* SystemMediumGradeWidget.swift */; }; BD99EFE02ADD9CE70000DAEF /* AccessoryInlineCourseWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD99EFDF2ADD9CE70000DAEF /* AccessoryInlineCourseWidget.swift */; }; BD99EFE22ADD9EEC0000DAEF /* AccessoryRectangularCourseWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD99EFE12ADD9EEC0000DAEF /* AccessoryRectangularCourseWidget.swift */; }; @@ -30,52 +67,15 @@ BDA68BB82ABF5ED00034EC6A /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = BDA68BB62ABF5ED00034EC6A /* Intents.intentdefinition */; }; BDF0E6BD2B9A9BF000A77575 /* GradeWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDF0E6BA2B9A9BF000A77575 /* GradeWidget.swift */; }; BDF0E6BE2B9A9BF000A77575 /* SystemSmallGradeWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDF0E6BC2B9A9BF000A77575 /* SystemSmallGradeWidget.swift */; }; - 29ECE730080B40A580B2E5BF /* relief-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 50689BA322C44A78B5003000 /* relief-Icon-60x60@2x.png */; }; - 0061414B40C248EE93A8C192 /* relief-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 880B7066DF8D43FE8577FA53 /* relief-Icon-60x60@3x.png */; }; - 03835D1F13D54CADBA5A8924 /* beta-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = BE99E5DF98BF4AD385F2DC17 /* beta-Icon-60x60@2x.png */; }; - F3397183B1A24982BC935127 /* beta-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 81122D5C9FCC4EB1A18B9929 /* beta-Icon-60x60@3x.png */; }; - D1D4F02E8A064589909F2047 /* black-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5939E1A59F334EC9B42924E2 /* black-Icon-60x60@2x.png */; }; - DBFC7FDCE83C4A68A80A8F5B /* black-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C615CCA9CC764F3F802429A2 /* black-Icon-60x60@3x.png */; }; - 992FF1196B85410DBCB6E332 /* chip-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A5282314B08D4325BACD3648 /* chip-Icon-60x60@2x.png */; }; - D164F444B4C64225A20EF667 /* chip-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7585AD79015A4614A57762F4 /* chip-Icon-60x60@3x.png */; }; - 0C60167BB0FA45168A268FDF /* cutted-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1A88EDFDB674480483DA40BF /* cutted-Icon-60x60@2x.png */; }; - 8BDDF3A1AB124110A64CD40D /* cutted-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 66F2AC249CAA42E5BFFFC0C5 /* cutted-Icon-60x60@3x.png */; }; - 0CBF912DC3DF4AA1ADE67B37 /* classic-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C4904ADC2C33469AA3CBE11D /* classic-Icon-60x60@2x.png */; }; - DD38A6BB8B824FEB8FE4647B /* classic-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2B0038150A3D4E4D98F1FC1F /* classic-Icon-60x60@3x.png */; }; - 5FF98FCCFC22415097405414 /* gold-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 69F1E4CC6A794AE1A7439226 /* gold-Icon-60x60@2x.png */; }; - 7E947167C5124F70AE0969A4 /* gold-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 2653BAE651234FC99730FE39 /* gold-Icon-60x60@3x.png */; }; - B61574447ED54320AAEC6E59 /* gradient-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9EEF676419374D9CB0679EB7 /* gradient-Icon-60x60@2x.png */; }; - 7D7B9AA0B0F24AE9A3CC5BA8 /* gradient-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 306537C054DA4E17AB5C44E6 /* gradient-Icon-60x60@3x.png */; }; - A31CA97A96F8445DAA8DADB1 /* metal-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 23B358831EFD4C56984759F6 /* metal-Icon-60x60@2x.png */; }; - B7994D5B42434179BD88B981 /* metal-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B9A5F7F1FAF342FBB906EDEF /* metal-Icon-60x60@3x.png */; }; - DFC1DF7F15B54FF090CB321A /* neon-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 14DDA3D991D14BCD9BA3119D /* neon-Icon-60x60@2x.png */; }; - 8A5CF142090C4F73A147BA66 /* neon-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 41A124E0267247269CFDAE10 /* neon-Icon-60x60@3x.png */; }; - C48B38E02DA549EEA7AF445C /* pride-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 12FC4EE805E040118FE03D2E /* pride-Icon-60x60@2x.png */; }; - 422804F6AE9B44FDAA50766E /* pride-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 58C1A10437C1467E833D2DC9 /* pride-Icon-60x60@3x.png */; }; - BB2476FC6A1742E0A058ECCC /* purple-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 311CDA58D7134E929744D0C5 /* purple-Icon-60x60@2x.png */; }; - 29160BD474874B8BB985975E /* purple-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B26F223078D4EED8F760BB0 /* purple-Icon-60x60@3x.png */; }; - E9764B19D2704BF288A46156 /* rayspurple-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AEB06A01647445E3AA5951EC /* rayspurple-Icon-60x60@2x.png */; }; - F4EDA951C8424C33A8773786 /* rayspurple-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1D71BE31E6754D8AB8D8C1CA /* rayspurple-Icon-60x60@3x.png */; }; - 9BAA5FE2BDF24E0DBFFD65C2 /* rays-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B66D3767798D42B996C5FADD /* rays-Icon-60x60@2x.png */; }; - 42A706D5724E4C4CB01877B6 /* rays-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A1932A5491641F29D66E283 /* rays-Icon-60x60@3x.png */; }; - 50D7A7391DE64D708978EE86 /* retro-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0AE46211C8D34BBB88297290 /* retro-Icon-60x60@2x.png */; }; - EBBA8A49801C4F69847359BC /* retro-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4F54853B4B51436EBD20249E /* retro-Icon-60x60@3x.png */; }; - 1B0CB18130DB45B7B04D969C /* sparkles-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A3EDBC827C2D4CFC9ADCC9ED /* sparkles-Icon-60x60@2x.png */; }; - DAAC83EA7DEA4B89B149BF44 /* sparkles-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1537A00BD147D2A7C81787 /* sparkles-Icon-60x60@3x.png */; }; - 0A32EDE680FA4F51B0DEA26D /* lightgreen-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8F09700A18C54F11A1D0DA60 /* lightgreen-Icon-60x60@2x.png */; }; - E7E9E3CCE10841199C9886B7 /* lightgreen-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2CD9A47830B44578311608C /* lightgreen-Icon-60x60@3x.png */; }; - 96280EC957514B82885B5A04 /* backtoschool-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C2232213665C43639D032D26 /* backtoschool-Icon-60x60@2x.png */; }; - 834C78B45A404B749A88E044 /* backtoschool-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09F6D2D16BB84BFCB7F82C21 /* backtoschool-Icon-60x60@3x.png */; }; - B083676D70D9489DA5CD1C23 /* barbie-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A322B2C018484A85B0823D46 /* barbie-Icon-60x60@2x.png */; }; - E8A80ED046D24E44971089DF /* barbie-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 08A8C1D127F04A1DBEE7461F /* barbie-Icon-60x60@3x.png */; }; - D109F8224F4648DE924FF9BC /* betterneon-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F68549047B5B4CC18E6CEDBC /* betterneon-Icon-60x60@2x.png */; }; - D57D548201D54CBC8CF216D1 /* betterneon-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B13B28F100B14B1F94120AF5 /* betterneon-Icon-60x60@3x.png */; }; - 2BA75672F2014C50A014E12A /* macos-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = CA3921CE24444E5799CACFE8 /* macos-Icon-60x60@2x.png */; }; - 7BD0158BC3364E51BC19489D /* macos-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FAEEFC30BA4542E3A014852F /* macos-Icon-60x60@3x.png */; }; - B37480F2DF364A54816A823B /* oldios-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = EC9970C67C5B480492E3C2C4 /* oldios-Icon-60x60@2x.png */; }; - 13E5744CC0864BC094A3281F /* oldios-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 02B5CD3490F94278A3CC1EF8 /* oldios-Icon-60x60@3x.png */; }; - 1626AB64C5A74864B1641184 /* verscinq-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8585746E160F4B0C81A1ABA7 /* verscinq-Icon-60x60@2x.png */; }; - 5BACCF11133D4AEABA079508 /* verscinq-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 34E12304924F49E6B66637D3 /* verscinq-Icon-60x60@3x.png */; }; + C8D7BE7059424C00959EE9BC /* verscinq-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C1C8CE8BC8049B6814AD252 /* verscinq-Icon-60x60@2x.png */; }; + C95470CC235F4A359F6B3A7E /* neon-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3C3CFCB78527402F9DF5117D /* neon-Icon-60x60@3x.png */; }; + C9C2300AB39546EBBA0EDFE0 /* backtoschool-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E6F33D728F4840DEB2ECCA76 /* backtoschool-Icon-60x60@3x.png */; }; + DF62E603260E46FB9D4AD8DF /* gold-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A771584CE9214FD0BAB6D6F5 /* gold-Icon-60x60@3x.png */; }; + E10B757318B0460BBD332EB9 /* gradient-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F992CC487BF1422F9FB3B46F /* gradient-Icon-60x60@2x.png */; }; + E1619959C7A745B8BE40C79A /* classic-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 61737AF1A4CE4AB591AE1AEF /* classic-Icon-60x60@3x.png */; }; + EB13CF0B50254BAB85962B33 /* rayspurple-Icon-60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 624363BB34C045E596B82E11 /* rayspurple-Icon-60x60@2x.png */; }; + FA5734FE1B8E4F5C86B68EAA /* barbie-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 06091ECB078D4FB9AF8DB2DA /* barbie-Icon-60x60@3x.png */; }; + FFC427CF021A42A595ABA34A /* sparkles-Icon-60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0482BAD4E9C2466EB924752A /* sparkles-Icon-60x60@3x.png */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -104,21 +104,54 @@ /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 039815CE4F604567BF3D47F6 /* lightgreen-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "lightgreen-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/lightgreen-Icon-60x60@2x.png"; sourceTree = ""; }; + 0482BAD4E9C2466EB924752A /* sparkles-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "sparkles-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/sparkles-Icon-60x60@3x.png"; sourceTree = ""; }; + 06091ECB078D4FB9AF8DB2DA /* barbie-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "barbie-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/barbie-Icon-60x60@3x.png"; sourceTree = ""; }; + 0622CBAF6D6D43E4BBFB390B /* gradient-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "gradient-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/gradient-Icon-60x60@3x.png"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* Papillon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Papillon.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Papillon/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Papillon/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Papillon/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Papillon/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Papillon/main.m; sourceTree = ""; }; + 18CAAFB3AA4E4A72867A0C7B /* purple-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "purple-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/purple-Icon-60x60@2x.png"; sourceTree = ""; }; + 2CA356BB06FC43098DB6345D /* neon-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "neon-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/neon-Icon-60x60@2x.png"; sourceTree = ""; }; + 35AA41E3F2EE4E33B14D0965 /* gold-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "gold-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/gold-Icon-60x60@2x.png"; sourceTree = ""; }; + 37D7932D4EE64073AE33BFF7 /* black-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "black-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/black-Icon-60x60@3x.png"; sourceTree = ""; }; + 3C3CFCB78527402F9DF5117D /* neon-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "neon-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/neon-Icon-60x60@3x.png"; sourceTree = ""; }; + 3D041197D66048EFBC03307D /* verscinq-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "verscinq-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/verscinq-Icon-60x60@3x.png"; sourceTree = ""; }; + 42D7539FE9D8416190089F0E /* black-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "black-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/black-Icon-60x60@2x.png"; sourceTree = ""; }; + 42EB1E2F90724D169B11CEE7 /* rays-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "rays-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/rays-Icon-60x60@3x.png"; sourceTree = ""; }; 47E295F22B9B75FF0014C672 /* papillon_ding.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = papillon_ding.wav; sourceTree = ""; }; + 4B107EFA96D34C479055683E /* barbie-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "barbie-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/barbie-Icon-60x60@2x.png"; sourceTree = ""; }; + 4F09DE9F153048468D38BC58 /* pride-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "pride-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/pride-Icon-60x60@2x.png"; sourceTree = ""; }; 54AA66A0F8574A6AA84F9CF8 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "Papillon/noop-file.swift"; sourceTree = ""; }; 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-Papillon.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Papillon.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5C1C8CE8BC8049B6814AD252 /* verscinq-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "verscinq-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/verscinq-Icon-60x60@2x.png"; sourceTree = ""; }; + 61737AF1A4CE4AB591AE1AEF /* classic-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "classic-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/classic-Icon-60x60@3x.png"; sourceTree = ""; }; + 624363BB34C045E596B82E11 /* rayspurple-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "rayspurple-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/rayspurple-Icon-60x60@2x.png"; sourceTree = ""; }; + 65B74DD7F53E43DEB69F8BD8 /* beta-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "beta-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/beta-Icon-60x60@3x.png"; sourceTree = ""; }; + 67B6E57AABC242A18AB1834E /* chip-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "chip-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/chip-Icon-60x60@2x.png"; sourceTree = ""; }; + 68F2230F14254A0EB4639D8E /* cutted-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "cutted-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/cutted-Icon-60x60@2x.png"; sourceTree = ""; }; 6C2E3173556A471DD304B334 /* Pods-Papillon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Papillon.debug.xcconfig"; path = "Target Support Files/Pods-Papillon/Pods-Papillon.debug.xcconfig"; sourceTree = ""; }; 7320A0CDDA4848F79D231DF5 /* Papillon-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "Papillon-Bridging-Header.h"; path = "Papillon/Papillon-Bridging-Header.h"; sourceTree = ""; }; + 7875A66670E848D3B02D5A57 /* backtoschool-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "backtoschool-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/backtoschool-Icon-60x60@2x.png"; sourceTree = ""; }; 7A4D352CD337FB3A3BF06240 /* Pods-Papillon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Papillon.release.xcconfig"; path = "Target Support Files/Pods-Papillon/Pods-Papillon.release.xcconfig"; sourceTree = ""; }; + 7AF364C4225147399C388F5D /* oldios-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "oldios-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/oldios-Icon-60x60@3x.png"; sourceTree = ""; }; + 7AF7FA081B0B45AFB4352A9E /* metal-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "metal-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/metal-Icon-60x60@3x.png"; sourceTree = ""; }; + 930D03684E3F4B7ABB298D09 /* relief-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "relief-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/relief-Icon-60x60@2x.png"; sourceTree = ""; }; + 9A1F81A968214B5DA8D2ECC0 /* betterneon-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "betterneon-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/betterneon-Icon-60x60@3x.png"; sourceTree = ""; }; + A3284C84586548B995ED87B6 /* macos-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "macos-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/macos-Icon-60x60@3x.png"; sourceTree = ""; }; + A771584CE9214FD0BAB6D6F5 /* gold-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "gold-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/gold-Icon-60x60@3x.png"; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = Papillon/SplashScreen.storyboard; sourceTree = ""; }; + ABFEEF424FB54C319339F4D0 /* purple-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "purple-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/purple-Icon-60x60@3x.png"; sourceTree = ""; }; + ADB4272239D845558241B4C6 /* retro-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "retro-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/retro-Icon-60x60@2x.png"; sourceTree = ""; }; + B2E911D8A2E745FC9C3290BF /* beta-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "beta-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/beta-Icon-60x60@2x.png"; sourceTree = ""; }; + B4D961E4D58C429289EA8CE4 /* betterneon-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "betterneon-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/betterneon-Icon-60x60@2x.png"; sourceTree = ""; }; BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; BD1F689F2B9B5BE900D857A1 /* SystemMediumGradeWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemMediumGradeWidget.swift; sourceTree = ""; }; + BD2D559B990D4860A80B7A24 /* rayspurple-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "rayspurple-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/rayspurple-Icon-60x60@3x.png"; sourceTree = ""; }; + BD43F3014D964798B28E57DE /* metal-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "metal-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/metal-Icon-60x60@2x.png"; sourceTree = ""; }; BD99EFDF2ADD9CE70000DAEF /* AccessoryInlineCourseWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessoryInlineCourseWidget.swift; sourceTree = ""; }; BD99EFE12ADD9EEC0000DAEF /* AccessoryRectangularCourseWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessoryRectangularCourseWidget.swift; sourceTree = ""; }; BD99EFE32ADDA2580000DAEF /* systemMediumCourseWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = systemMediumCourseWidget.swift; sourceTree = ""; }; @@ -136,54 +169,21 @@ BDF0E6BC2B9A9BF000A77575 /* SystemSmallGradeWidget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SystemSmallGradeWidget.swift; sourceTree = ""; }; BDF0E6BF2B9AA24600A77575 /* PapillonWidgetExtensionRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PapillonWidgetExtensionRelease.entitlements; sourceTree = ""; }; BDF0E6C02B9AA25400A77575 /* PapillonRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = PapillonRelease.entitlements; path = Papillon/PapillonRelease.entitlements; sourceTree = ""; }; + BFD0C49F47DC47B2AE86DE63 /* sparkles-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "sparkles-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/sparkles-Icon-60x60@2x.png"; sourceTree = ""; }; + C14170F17C8945A59753FF35 /* oldios-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "oldios-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/oldios-Icon-60x60@2x.png"; sourceTree = ""; }; + CB5A1E9B15004002B3F9FDBA /* relief-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "relief-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/relief-Icon-60x60@3x.png"; sourceTree = ""; }; + DA2878465F05412C9A8531A1 /* pride-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "pride-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/pride-Icon-60x60@3x.png"; sourceTree = ""; }; + E247CE06ABFC463D9BB438FD /* cutted-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "cutted-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/cutted-Icon-60x60@3x.png"; sourceTree = ""; }; + E5D5DCEEFA7B40259127A05B /* rays-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "rays-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/rays-Icon-60x60@2x.png"; sourceTree = ""; }; + E6CC7AF823A54571ADA0F3D6 /* macos-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "macos-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/macos-Icon-60x60@2x.png"; sourceTree = ""; }; + E6F33D728F4840DEB2ECCA76 /* backtoschool-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "backtoschool-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/backtoschool-Icon-60x60@3x.png"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + ED8B4FA9CB5D4400AB195E94 /* retro-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "retro-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/retro-Icon-60x60@3x.png"; sourceTree = ""; }; + F65CB1054B1749A09CD5F62A /* chip-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "chip-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/chip-Icon-60x60@3x.png"; sourceTree = ""; }; + F992CC487BF1422F9FB3B46F /* gradient-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "gradient-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/gradient-Icon-60x60@2x.png"; sourceTree = ""; }; FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-Papillon/ExpoModulesProvider.swift"; sourceTree = ""; }; - 50689BA322C44A78B5003000 /* relief-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "relief-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/relief-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 880B7066DF8D43FE8577FA53 /* relief-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "relief-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/relief-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - BE99E5DF98BF4AD385F2DC17 /* beta-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "beta-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/beta-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 81122D5C9FCC4EB1A18B9929 /* beta-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "beta-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/beta-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 5939E1A59F334EC9B42924E2 /* black-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "black-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/black-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - C615CCA9CC764F3F802429A2 /* black-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "black-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/black-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - A5282314B08D4325BACD3648 /* chip-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "chip-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/chip-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 7585AD79015A4614A57762F4 /* chip-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "chip-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/chip-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 1A88EDFDB674480483DA40BF /* cutted-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "cutted-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/cutted-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 66F2AC249CAA42E5BFFFC0C5 /* cutted-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "cutted-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/cutted-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - C4904ADC2C33469AA3CBE11D /* classic-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "classic-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/classic-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 2B0038150A3D4E4D98F1FC1F /* classic-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "classic-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/classic-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 69F1E4CC6A794AE1A7439226 /* gold-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "gold-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/gold-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 2653BAE651234FC99730FE39 /* gold-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "gold-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/gold-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 9EEF676419374D9CB0679EB7 /* gradient-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "gradient-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/gradient-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 306537C054DA4E17AB5C44E6 /* gradient-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "gradient-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/gradient-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 23B358831EFD4C56984759F6 /* metal-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "metal-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/metal-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - B9A5F7F1FAF342FBB906EDEF /* metal-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "metal-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/metal-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 14DDA3D991D14BCD9BA3119D /* neon-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "neon-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/neon-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 41A124E0267247269CFDAE10 /* neon-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "neon-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/neon-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 12FC4EE805E040118FE03D2E /* pride-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "pride-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/pride-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 58C1A10437C1467E833D2DC9 /* pride-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "pride-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/pride-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 311CDA58D7134E929744D0C5 /* purple-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "purple-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/purple-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 4B26F223078D4EED8F760BB0 /* purple-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "purple-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/purple-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - AEB06A01647445E3AA5951EC /* rayspurple-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "rayspurple-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/rayspurple-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 1D71BE31E6754D8AB8D8C1CA /* rayspurple-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "rayspurple-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/rayspurple-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - B66D3767798D42B996C5FADD /* rays-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "rays-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/rays-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 8A1932A5491641F29D66E283 /* rays-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "rays-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/rays-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 0AE46211C8D34BBB88297290 /* retro-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "retro-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/retro-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 4F54853B4B51436EBD20249E /* retro-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "retro-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/retro-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - A3EDBC827C2D4CFC9ADCC9ED /* sparkles-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "sparkles-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/sparkles-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 1F1537A00BD147D2A7C81787 /* sparkles-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "sparkles-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/sparkles-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 8F09700A18C54F11A1D0DA60 /* lightgreen-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "lightgreen-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/lightgreen-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - B2CD9A47830B44578311608C /* lightgreen-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "lightgreen-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/lightgreen-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - C2232213665C43639D032D26 /* backtoschool-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "backtoschool-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/backtoschool-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 09F6D2D16BB84BFCB7F82C21 /* backtoschool-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "backtoschool-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/backtoschool-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - A322B2C018484A85B0823D46 /* barbie-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "barbie-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/barbie-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 08A8C1D127F04A1DBEE7461F /* barbie-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "barbie-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/barbie-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - F68549047B5B4CC18E6CEDBC /* betterneon-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "betterneon-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/betterneon-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - B13B28F100B14B1F94120AF5 /* betterneon-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "betterneon-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/betterneon-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - CA3921CE24444E5799CACFE8 /* macos-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "macos-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/macos-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - FAEEFC30BA4542E3A014852F /* macos-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "macos-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/macos-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - EC9970C67C5B480492E3C2C4 /* oldios-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "oldios-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/oldios-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 02B5CD3490F94278A3CC1EF8 /* oldios-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "oldios-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/oldios-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 8585746E160F4B0C81A1ABA7 /* verscinq-Icon-60x60@2x.png */ = {isa = PBXFileReference; name = "verscinq-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/verscinq-Icon-60x60@2x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; - 34E12304924F49E6B66637D3 /* verscinq-Icon-60x60@3x.png */ = {isa = PBXFileReference; name = "verscinq-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/verscinq-Icon-60x60@3x.png"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; + FD173B441ABD4C5D938D36CF /* classic-Icon-60x60@2x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "classic-Icon-60x60@2x.png"; path = "Papillon/DynamicAppIcons/classic-Icon-60x60@2x.png"; sourceTree = ""; }; + FD27598E315A4292BD3A1071 /* lightgreen-Icon-60x60@3x.png */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = "lightgreen-Icon-60x60@3x.png"; path = "Papillon/DynamicAppIcons/lightgreen-Icon-60x60@3x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -283,52 +283,52 @@ B2BD97BA2E1449C181B5DC8A /* DynamicAppIcons */ = { isa = PBXGroup; children = ( - 50689BA322C44A78B5003000 /* relief-Icon-60x60@2x.png */, - 880B7066DF8D43FE8577FA53 /* relief-Icon-60x60@3x.png */, - BE99E5DF98BF4AD385F2DC17 /* beta-Icon-60x60@2x.png */, - 81122D5C9FCC4EB1A18B9929 /* beta-Icon-60x60@3x.png */, - 5939E1A59F334EC9B42924E2 /* black-Icon-60x60@2x.png */, - C615CCA9CC764F3F802429A2 /* black-Icon-60x60@3x.png */, - A5282314B08D4325BACD3648 /* chip-Icon-60x60@2x.png */, - 7585AD79015A4614A57762F4 /* chip-Icon-60x60@3x.png */, - 1A88EDFDB674480483DA40BF /* cutted-Icon-60x60@2x.png */, - 66F2AC249CAA42E5BFFFC0C5 /* cutted-Icon-60x60@3x.png */, - C4904ADC2C33469AA3CBE11D /* classic-Icon-60x60@2x.png */, - 2B0038150A3D4E4D98F1FC1F /* classic-Icon-60x60@3x.png */, - 69F1E4CC6A794AE1A7439226 /* gold-Icon-60x60@2x.png */, - 2653BAE651234FC99730FE39 /* gold-Icon-60x60@3x.png */, - 9EEF676419374D9CB0679EB7 /* gradient-Icon-60x60@2x.png */, - 306537C054DA4E17AB5C44E6 /* gradient-Icon-60x60@3x.png */, - 23B358831EFD4C56984759F6 /* metal-Icon-60x60@2x.png */, - B9A5F7F1FAF342FBB906EDEF /* metal-Icon-60x60@3x.png */, - 14DDA3D991D14BCD9BA3119D /* neon-Icon-60x60@2x.png */, - 41A124E0267247269CFDAE10 /* neon-Icon-60x60@3x.png */, - 12FC4EE805E040118FE03D2E /* pride-Icon-60x60@2x.png */, - 58C1A10437C1467E833D2DC9 /* pride-Icon-60x60@3x.png */, - 311CDA58D7134E929744D0C5 /* purple-Icon-60x60@2x.png */, - 4B26F223078D4EED8F760BB0 /* purple-Icon-60x60@3x.png */, - AEB06A01647445E3AA5951EC /* rayspurple-Icon-60x60@2x.png */, - 1D71BE31E6754D8AB8D8C1CA /* rayspurple-Icon-60x60@3x.png */, - B66D3767798D42B996C5FADD /* rays-Icon-60x60@2x.png */, - 8A1932A5491641F29D66E283 /* rays-Icon-60x60@3x.png */, - 0AE46211C8D34BBB88297290 /* retro-Icon-60x60@2x.png */, - 4F54853B4B51436EBD20249E /* retro-Icon-60x60@3x.png */, - A3EDBC827C2D4CFC9ADCC9ED /* sparkles-Icon-60x60@2x.png */, - 1F1537A00BD147D2A7C81787 /* sparkles-Icon-60x60@3x.png */, - 8F09700A18C54F11A1D0DA60 /* lightgreen-Icon-60x60@2x.png */, - B2CD9A47830B44578311608C /* lightgreen-Icon-60x60@3x.png */, - C2232213665C43639D032D26 /* backtoschool-Icon-60x60@2x.png */, - 09F6D2D16BB84BFCB7F82C21 /* backtoschool-Icon-60x60@3x.png */, - A322B2C018484A85B0823D46 /* barbie-Icon-60x60@2x.png */, - 08A8C1D127F04A1DBEE7461F /* barbie-Icon-60x60@3x.png */, - F68549047B5B4CC18E6CEDBC /* betterneon-Icon-60x60@2x.png */, - B13B28F100B14B1F94120AF5 /* betterneon-Icon-60x60@3x.png */, - CA3921CE24444E5799CACFE8 /* macos-Icon-60x60@2x.png */, - FAEEFC30BA4542E3A014852F /* macos-Icon-60x60@3x.png */, - EC9970C67C5B480492E3C2C4 /* oldios-Icon-60x60@2x.png */, - 02B5CD3490F94278A3CC1EF8 /* oldios-Icon-60x60@3x.png */, - 8585746E160F4B0C81A1ABA7 /* verscinq-Icon-60x60@2x.png */, - 34E12304924F49E6B66637D3 /* verscinq-Icon-60x60@3x.png */, + 930D03684E3F4B7ABB298D09 /* relief-Icon-60x60@2x.png */, + CB5A1E9B15004002B3F9FDBA /* relief-Icon-60x60@3x.png */, + B2E911D8A2E745FC9C3290BF /* beta-Icon-60x60@2x.png */, + 65B74DD7F53E43DEB69F8BD8 /* beta-Icon-60x60@3x.png */, + 42D7539FE9D8416190089F0E /* black-Icon-60x60@2x.png */, + 37D7932D4EE64073AE33BFF7 /* black-Icon-60x60@3x.png */, + 67B6E57AABC242A18AB1834E /* chip-Icon-60x60@2x.png */, + F65CB1054B1749A09CD5F62A /* chip-Icon-60x60@3x.png */, + 68F2230F14254A0EB4639D8E /* cutted-Icon-60x60@2x.png */, + E247CE06ABFC463D9BB438FD /* cutted-Icon-60x60@3x.png */, + FD173B441ABD4C5D938D36CF /* classic-Icon-60x60@2x.png */, + 61737AF1A4CE4AB591AE1AEF /* classic-Icon-60x60@3x.png */, + 35AA41E3F2EE4E33B14D0965 /* gold-Icon-60x60@2x.png */, + A771584CE9214FD0BAB6D6F5 /* gold-Icon-60x60@3x.png */, + F992CC487BF1422F9FB3B46F /* gradient-Icon-60x60@2x.png */, + 0622CBAF6D6D43E4BBFB390B /* gradient-Icon-60x60@3x.png */, + BD43F3014D964798B28E57DE /* metal-Icon-60x60@2x.png */, + 7AF7FA081B0B45AFB4352A9E /* metal-Icon-60x60@3x.png */, + 2CA356BB06FC43098DB6345D /* neon-Icon-60x60@2x.png */, + 3C3CFCB78527402F9DF5117D /* neon-Icon-60x60@3x.png */, + 4F09DE9F153048468D38BC58 /* pride-Icon-60x60@2x.png */, + DA2878465F05412C9A8531A1 /* pride-Icon-60x60@3x.png */, + 18CAAFB3AA4E4A72867A0C7B /* purple-Icon-60x60@2x.png */, + ABFEEF424FB54C319339F4D0 /* purple-Icon-60x60@3x.png */, + 624363BB34C045E596B82E11 /* rayspurple-Icon-60x60@2x.png */, + BD2D559B990D4860A80B7A24 /* rayspurple-Icon-60x60@3x.png */, + E5D5DCEEFA7B40259127A05B /* rays-Icon-60x60@2x.png */, + 42EB1E2F90724D169B11CEE7 /* rays-Icon-60x60@3x.png */, + ADB4272239D845558241B4C6 /* retro-Icon-60x60@2x.png */, + ED8B4FA9CB5D4400AB195E94 /* retro-Icon-60x60@3x.png */, + BFD0C49F47DC47B2AE86DE63 /* sparkles-Icon-60x60@2x.png */, + 0482BAD4E9C2466EB924752A /* sparkles-Icon-60x60@3x.png */, + 039815CE4F604567BF3D47F6 /* lightgreen-Icon-60x60@2x.png */, + FD27598E315A4292BD3A1071 /* lightgreen-Icon-60x60@3x.png */, + 7875A66670E848D3B02D5A57 /* backtoschool-Icon-60x60@2x.png */, + E6F33D728F4840DEB2ECCA76 /* backtoschool-Icon-60x60@3x.png */, + 4B107EFA96D34C479055683E /* barbie-Icon-60x60@2x.png */, + 06091ECB078D4FB9AF8DB2DA /* barbie-Icon-60x60@3x.png */, + B4D961E4D58C429289EA8CE4 /* betterneon-Icon-60x60@2x.png */, + 9A1F81A968214B5DA8D2ECC0 /* betterneon-Icon-60x60@3x.png */, + E6CC7AF823A54571ADA0F3D6 /* macos-Icon-60x60@2x.png */, + A3284C84586548B995ED87B6 /* macos-Icon-60x60@3x.png */, + C14170F17C8945A59753FF35 /* oldios-Icon-60x60@2x.png */, + 7AF364C4225147399C388F5D /* oldios-Icon-60x60@3x.png */, + 5C1C8CE8BC8049B6814AD252 /* verscinq-Icon-60x60@2x.png */, + 3D041197D66048EFBC03307D /* verscinq-Icon-60x60@3x.png */, ); name = DynamicAppIcons; sourceTree = ""; @@ -501,52 +501,52 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 47E295F32B9B75FF0014C672 /* papillon_ding.wav in Resources */, - 29ECE730080B40A580B2E5BF /* relief-Icon-60x60@2x.png in Resources */, - 0061414B40C248EE93A8C192 /* relief-Icon-60x60@3x.png in Resources */, - 03835D1F13D54CADBA5A8924 /* beta-Icon-60x60@2x.png in Resources */, - F3397183B1A24982BC935127 /* beta-Icon-60x60@3x.png in Resources */, - D1D4F02E8A064589909F2047 /* black-Icon-60x60@2x.png in Resources */, - DBFC7FDCE83C4A68A80A8F5B /* black-Icon-60x60@3x.png in Resources */, - 992FF1196B85410DBCB6E332 /* chip-Icon-60x60@2x.png in Resources */, - D164F444B4C64225A20EF667 /* chip-Icon-60x60@3x.png in Resources */, - 0C60167BB0FA45168A268FDF /* cutted-Icon-60x60@2x.png in Resources */, - 8BDDF3A1AB124110A64CD40D /* cutted-Icon-60x60@3x.png in Resources */, - 0CBF912DC3DF4AA1ADE67B37 /* classic-Icon-60x60@2x.png in Resources */, - DD38A6BB8B824FEB8FE4647B /* classic-Icon-60x60@3x.png in Resources */, - 5FF98FCCFC22415097405414 /* gold-Icon-60x60@2x.png in Resources */, - 7E947167C5124F70AE0969A4 /* gold-Icon-60x60@3x.png in Resources */, - B61574447ED54320AAEC6E59 /* gradient-Icon-60x60@2x.png in Resources */, - 7D7B9AA0B0F24AE9A3CC5BA8 /* gradient-Icon-60x60@3x.png in Resources */, - A31CA97A96F8445DAA8DADB1 /* metal-Icon-60x60@2x.png in Resources */, - B7994D5B42434179BD88B981 /* metal-Icon-60x60@3x.png in Resources */, - DFC1DF7F15B54FF090CB321A /* neon-Icon-60x60@2x.png in Resources */, - 8A5CF142090C4F73A147BA66 /* neon-Icon-60x60@3x.png in Resources */, - C48B38E02DA549EEA7AF445C /* pride-Icon-60x60@2x.png in Resources */, - 422804F6AE9B44FDAA50766E /* pride-Icon-60x60@3x.png in Resources */, - BB2476FC6A1742E0A058ECCC /* purple-Icon-60x60@2x.png in Resources */, - 29160BD474874B8BB985975E /* purple-Icon-60x60@3x.png in Resources */, - E9764B19D2704BF288A46156 /* rayspurple-Icon-60x60@2x.png in Resources */, - F4EDA951C8424C33A8773786 /* rayspurple-Icon-60x60@3x.png in Resources */, - 9BAA5FE2BDF24E0DBFFD65C2 /* rays-Icon-60x60@2x.png in Resources */, - 42A706D5724E4C4CB01877B6 /* rays-Icon-60x60@3x.png in Resources */, - 50D7A7391DE64D708978EE86 /* retro-Icon-60x60@2x.png in Resources */, - EBBA8A49801C4F69847359BC /* retro-Icon-60x60@3x.png in Resources */, - 1B0CB18130DB45B7B04D969C /* sparkles-Icon-60x60@2x.png in Resources */, - DAAC83EA7DEA4B89B149BF44 /* sparkles-Icon-60x60@3x.png in Resources */, - 0A32EDE680FA4F51B0DEA26D /* lightgreen-Icon-60x60@2x.png in Resources */, - E7E9E3CCE10841199C9886B7 /* lightgreen-Icon-60x60@3x.png in Resources */, - 96280EC957514B82885B5A04 /* backtoschool-Icon-60x60@2x.png in Resources */, - 834C78B45A404B749A88E044 /* backtoschool-Icon-60x60@3x.png in Resources */, - B083676D70D9489DA5CD1C23 /* barbie-Icon-60x60@2x.png in Resources */, - E8A80ED046D24E44971089DF /* barbie-Icon-60x60@3x.png in Resources */, - D109F8224F4648DE924FF9BC /* betterneon-Icon-60x60@2x.png in Resources */, - D57D548201D54CBC8CF216D1 /* betterneon-Icon-60x60@3x.png in Resources */, - 2BA75672F2014C50A014E12A /* macos-Icon-60x60@2x.png in Resources */, - 7BD0158BC3364E51BC19489D /* macos-Icon-60x60@3x.png in Resources */, - B37480F2DF364A54816A823B /* oldios-Icon-60x60@2x.png in Resources */, - 13E5744CC0864BC094A3281F /* oldios-Icon-60x60@3x.png in Resources */, - 1626AB64C5A74864B1641184 /* verscinq-Icon-60x60@2x.png in Resources */, - 5BACCF11133D4AEABA079508 /* verscinq-Icon-60x60@3x.png in Resources */, + 3EEE3EEE6248484D81C22E2E /* relief-Icon-60x60@2x.png in Resources */, + 43C6DC1765EB407E9F7BB28A /* relief-Icon-60x60@3x.png in Resources */, + 737C050195144A338EA785E2 /* beta-Icon-60x60@2x.png in Resources */, + A68E0AC49C1346F280E5A2AC /* beta-Icon-60x60@3x.png in Resources */, + 8AD63F9D94D74B8A988DFEA7 /* black-Icon-60x60@2x.png in Resources */, + 15962A1383DE4EA3A5D8748F /* black-Icon-60x60@3x.png in Resources */, + 322AADA1E9644A188BCA1696 /* chip-Icon-60x60@2x.png in Resources */, + 10FFD892C46644B68EBD1CC4 /* chip-Icon-60x60@3x.png in Resources */, + 3DE48035BBA14F56B113D993 /* cutted-Icon-60x60@2x.png in Resources */, + 0ACEA0FA4B8C4436BBAED2CB /* cutted-Icon-60x60@3x.png in Resources */, + 0FDE1234123A4B11938381C3 /* classic-Icon-60x60@2x.png in Resources */, + E1619959C7A745B8BE40C79A /* classic-Icon-60x60@3x.png in Resources */, + BB3180634FE64D3A9FE04C60 /* gold-Icon-60x60@2x.png in Resources */, + DF62E603260E46FB9D4AD8DF /* gold-Icon-60x60@3x.png in Resources */, + E10B757318B0460BBD332EB9 /* gradient-Icon-60x60@2x.png in Resources */, + 7C55D8FFB8A64192B1E55B87 /* gradient-Icon-60x60@3x.png in Resources */, + 22D5025B2ED4431BA97A32A7 /* metal-Icon-60x60@2x.png in Resources */, + 73D322C1676541BBB456C2C3 /* metal-Icon-60x60@3x.png in Resources */, + 37ACC468811544D19E44483E /* neon-Icon-60x60@2x.png in Resources */, + C95470CC235F4A359F6B3A7E /* neon-Icon-60x60@3x.png in Resources */, + 6FACFFC002E247A19A1E7148 /* pride-Icon-60x60@2x.png in Resources */, + 06C7AEBE890D4166AD80EC3C /* pride-Icon-60x60@3x.png in Resources */, + 40F36CD1A425427E817D81E7 /* purple-Icon-60x60@2x.png in Resources */, + 28457E3F08134EA2BABBD32F /* purple-Icon-60x60@3x.png in Resources */, + EB13CF0B50254BAB85962B33 /* rayspurple-Icon-60x60@2x.png in Resources */, + 186085623D174831A37A8999 /* rayspurple-Icon-60x60@3x.png in Resources */, + A323A5C9C65743568CD78424 /* rays-Icon-60x60@2x.png in Resources */, + 6956719D96944B6BB70E8E59 /* rays-Icon-60x60@3x.png in Resources */, + 7C1279AE8F7A42FCAD486441 /* retro-Icon-60x60@2x.png in Resources */, + 82CDAEBFBC6643E281A827AD /* retro-Icon-60x60@3x.png in Resources */, + 09848CB6DA77482CB6D031A8 /* sparkles-Icon-60x60@2x.png in Resources */, + FFC427CF021A42A595ABA34A /* sparkles-Icon-60x60@3x.png in Resources */, + 4F06D5EBD30145118F399C42 /* lightgreen-Icon-60x60@2x.png in Resources */, + 7594D932526043769CA95E22 /* lightgreen-Icon-60x60@3x.png in Resources */, + 28285A6A33944CA6A2D51C76 /* backtoschool-Icon-60x60@2x.png in Resources */, + C9C2300AB39546EBBA0EDFE0 /* backtoschool-Icon-60x60@3x.png in Resources */, + 0926F15FD08A41B280F85D5E /* barbie-Icon-60x60@2x.png in Resources */, + FA5734FE1B8E4F5C86B68EAA /* barbie-Icon-60x60@3x.png in Resources */, + 905A06BB67594E8E93207A58 /* betterneon-Icon-60x60@2x.png in Resources */, + 2238B1DC64A14473840AE997 /* betterneon-Icon-60x60@3x.png in Resources */, + 4E173D003F1545CF892F25E2 /* macos-Icon-60x60@2x.png in Resources */, + 7E0730FEF9F2450A8872F8F2 /* macos-Icon-60x60@3x.png in Resources */, + A77494807DF74419839E8DCF /* oldios-Icon-60x60@2x.png in Resources */, + 29FEC2DF7C2A46CDA496C99D /* oldios-Icon-60x60@3x.png in Resources */, + C8D7BE7059424C00959EE9BC /* verscinq-Icon-60x60@2x.png in Resources */, + 4FF886446BD04CA5952CBC8F /* verscinq-Icon-60x60@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -750,7 +750,7 @@ OTHER_LIBTOOLFLAGS = ""; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = xyz.getpapillon.ios; - PRODUCT_NAME = "Papillon"; + PRODUCT_NAME = Papillon; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -788,7 +788,7 @@ OTHER_LIBTOOLFLAGS = ""; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = xyz.getpapillon.ios; - PRODUCT_NAME = "Papillon"; + PRODUCT_NAME = Papillon; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; @@ -1055,9 +1055,6 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ - -/* Begin PBXVariantGroup section */ -/* End PBXVariantGroup section */ }; rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 49e5a4e6..d6e486ec 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -97,6 +97,8 @@ PODS: - ExpoModulesCore - ExpoDevice (5.4.0): - ExpoModulesCore + - ExpoDocumentPicker (11.5.4): + - ExpoModulesCore - ExpoDynamicAppIcon (1.2.0): - ExpoModulesCore - ExpoHaptics (12.4.0): @@ -463,6 +465,8 @@ PODS: - ReactCommon/turbomodule/core - react-native-sfsymbols (1.2.1): - React + - react-native-view-shot (3.8.0): + - React-Core - react-native-webview (13.8.1): - RCT-Folly (= 2021.07.22.00) - React-Core @@ -630,6 +634,8 @@ PODS: - RNScreens (3.22.1): - React-Core - React-RCTImage + - RNShare (10.1.0): + - React-Core - RNSVG (13.9.0): - React-Core - SocketRocket (0.6.1) @@ -667,6 +673,7 @@ DEPENDENCIES: - ExpoClipboard (from `../node_modules/expo-clipboard/ios`) - ExpoCrypto (from `../node_modules/expo-crypto/ios`) - ExpoDevice (from `../node_modules/expo-device/ios`) + - ExpoDocumentPicker (from `../node_modules/expo-document-picker/ios`) - ExpoDynamicAppIcon (from `../node_modules/expo-dynamic-app-icon/ios`) - ExpoHaptics (from `../node_modules/expo-haptics/ios`) - ExpoImagePicker (from `../node_modules/expo-image-picker/ios`) @@ -708,6 +715,7 @@ DEPENDENCIES: - react-native-render-html (from `../node_modules/react-native-render-html`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-sfsymbols (from `../node_modules/react-native-sfsymbols`) + - react-native-view-shot (from `../node_modules/react-native-view-shot`) - react-native-webview (from `../node_modules/react-native-webview`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) @@ -737,6 +745,7 @@ DEPENDENCIES: - RNReactNativeSharedGroupPreferences (from `../node_modules/react-native-shared-group-preferences`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNScreens (from `../node_modules/react-native-screens`) + - RNShare (from `../node_modules/react-native-share`) - RNSVG (from `../node_modules/react-native-svg`) - UMAppLoader (from `../node_modules/unimodules-app-loader/ios`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -799,6 +808,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-crypto/ios" ExpoDevice: :path: "../node_modules/expo-device/ios" + ExpoDocumentPicker: + :path: "../node_modules/expo-document-picker/ios" ExpoDynamicAppIcon: :path: "../node_modules/expo-dynamic-app-icon/ios" ExpoHaptics: @@ -878,6 +889,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-safe-area-context" react-native-sfsymbols: :path: "../node_modules/react-native-sfsymbols" + react-native-view-shot: + :path: "../node_modules/react-native-view-shot" react-native-webview: :path: "../node_modules/react-native-webview" React-NativeModulesApple: @@ -936,6 +949,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-reanimated" RNScreens: :path: "../node_modules/react-native-screens" + RNShare: + :path: "../node_modules/react-native-share" RNSVG: :path: "../node_modules/react-native-svg" UMAppLoader: @@ -969,6 +984,7 @@ SPEC CHECKSUMS: ExpoClipboard: 695f274f8e028cd113837f917da40c76850877eb ExpoCrypto: a382ab9a2fa91f0b511ce1fe4d6baecee40a1615 ExpoDevice: 1c1b0c9cad96c292c1de73948649cfd654b2b3c0 + ExpoDocumentPicker: 5cb7389ff935b4addefdd466a606de51a512e922 ExpoDynamicAppIcon: b0f96e53d0bf00412bbe97da0cfc15b8c94a54ce ExpoHaptics: 360af6898407ee4e8265d30a1a8fb16491a660eb ExpoImagePicker: c58fdf28be551681a8edc550bcec76c397a8dfcd @@ -1010,6 +1026,7 @@ SPEC CHECKSUMS: react-native-render-html: 984dfe2294163d04bf5fe25d7c9f122e60e05ebe react-native-safe-area-context: 36cc67648134e89465663b8172336a19eeda493d react-native-sfsymbols: bd3a0d3eab185e80b571bae60753dcf5a0d57967 + react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688 react-native-webview: bdc091de8cf7f8397653e30182efcd9f772e03b3 React-NativeModulesApple: 02e35e9a51e10c6422f04f5e4076a7c02243fff2 React-perflogger: e3596db7e753f51766bceadc061936ef1472edc3 @@ -1039,6 +1056,7 @@ SPEC CHECKSUMS: RNReactNativeSharedGroupPreferences: 29092869fc2e40d5baca5e15d82fa5c24a668977 RNReanimated: 726395a2fa2f04cea340274ba57a4e659bc0d9c1 RNScreens: 50ffe2fa2342eabb2d0afbe19f7c1af286bc7fb3 + RNShare: b674d9f1cb0dc11116983bebd8712908a226a3ee RNSVG: 53c661b76829783cdaf9b7a57258f3d3b4c28315 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 UMAppLoader: e83f024f75f07802fce99739f04b4537d188caaf diff --git a/package-lock.json b/package-lock.json index 8e2f0c9b..cba618a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "expo-dev-client": "~2.4.8", "expo-dev-launcher": "^3.0.0", "expo-device": "~5.4.0", + "expo-document-picker": "~11.5.4", "expo-dynamic-app-icon": "^1.1.8", "expo-file-system": "~15.4.4", "expo-font": "~11.4.0", @@ -93,6 +94,7 @@ "react-native-screens": "~3.22.0", "react-native-segmented-control-2": "^1.1.0", "react-native-sfsymbols": "^1.2.1", + "react-native-share": "^10.1.0", "react-native-shared-group-preferences": "^1.1.24", "react-native-simple-line-chart": "^0.32.0", "react-native-smooth-pincode-input": "^1.0.9", @@ -100,6 +102,7 @@ "react-native-swiper": "^1.6.0-rc.3", "react-native-tableview-simple": "^4.4.0", "react-native-url-polyfill": "^2.0.0", + "react-native-view-shot": "^3.8.0", "react-native-webview": "^13.8.1", "react-native-wheel-scrollview-picker": "^2.0.4", "reanimated-color-picker": "^2.3.4", @@ -8188,6 +8191,14 @@ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -9379,6 +9390,14 @@ "postcss": "^8.0.9" } }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/css-loader": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", @@ -11860,6 +11879,14 @@ "node": "*" } }, + "node_modules/expo-document-picker": { + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/expo-document-picker/-/expo-document-picker-11.5.4.tgz", + "integrity": "sha512-4lpRixi33kjoQQy9lfrGs48yFRMOgBgdnqjYWVFe85WFy/WkEoFC2E8usxcFdrIigtfy9Z+HY3/je4lHEYqyLg==", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-dynamic-app-icon": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.2.0.tgz", @@ -13414,6 +13441,18 @@ "webpack": "^5.20.0" } }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -19194,6 +19233,14 @@ "react-native": "*" } }, + "node_modules/react-native-share": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-10.1.0.tgz", + "integrity": "sha512-fKKvwaZe5s3HW0tcRKyR5AWvAfXvkk0FgTw1nYWYjI4gNqntXbMjRqWZed8Hmd1MvIJS17K/ELPges0tsxbp3g==", + "engines": { + "node": ">=16" + } + }, "node_modules/react-native-shared-group-preferences": { "version": "1.1.24", "resolved": "https://registry.npmjs.org/react-native-shared-group-preferences/-/react-native-shared-group-preferences-1.1.24.tgz", @@ -19419,6 +19466,18 @@ "node": ">=10" } }, + "node_modules/react-native-view-shot": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-3.8.0.tgz", + "integrity": "sha512-4cU8SOhMn3YQIrskh+5Q8VvVRxQOu8/s1M9NAL4z5BY1Rm0HXMWkQJ4N0XsZ42+Yca+y86ISF3LC5qdLPvPuiA==", + "dependencies": { + "html2canvas": "^1.4.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, "node_modules/react-native-webview": { "version": "13.8.1", "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.8.1.tgz", @@ -21124,6 +21183,14 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -21686,6 +21753,14 @@ "node": ">= 0.4.0" } }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", diff --git a/package.json b/package.json index 28f67207..675ed6ae 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "react-native-screens": "~3.22.0", "react-native-segmented-control-2": "^1.1.0", "react-native-sfsymbols": "^1.2.1", + "react-native-share": "^10.1.0", "react-native-shared-group-preferences": "^1.1.24", "react-native-simple-line-chart": "^0.32.0", "react-native-smooth-pincode-input": "^1.0.9", @@ -103,12 +104,14 @@ "react-native-swiper": "^1.6.0-rc.3", "react-native-tableview-simple": "^4.4.0", "react-native-url-polyfill": "^2.0.0", + "react-native-view-shot": "^3.8.0", "react-native-webview": "^13.8.1", "react-native-wheel-scrollview-picker": "^2.0.4", "reanimated-color-picker": "^2.3.4", "scolengo-api": "^3.0.2", "sync-storage": "^0.4.2", - "typescript": "^5.1.3" + "typescript": "^5.1.3", + "expo-document-picker": "~11.5.4" }, "devDependencies": { "@babel/core": "^7.23.2", diff --git a/stacks/SettingsStack.tsx b/stacks/SettingsStack.tsx index 88e92884..1d3cf484 100644 --- a/stacks/SettingsStack.tsx +++ b/stacks/SettingsStack.tsx @@ -20,6 +20,7 @@ import HeaderSelectScreen from '../views/Settings/HeaderSelectScreen'; import PaymentScreen from '../views/Settings/PaymentScreen'; import NotificationsScreen from '../views/Settings/NotificationsScreen'; import ConsentScreenWithoutAcceptation from '../views/ConsentScreenWithoutAcceptation'; +import TrophiesScreen from '../views/Settings/TrophiesScreen'; function InsetSettings() { const UIColors = GetUIColors(); @@ -117,6 +118,14 @@ function InsetSettings() { headerTitle: 'Notifications', }} /> + { const UIColors = GetUIColors(); @@ -155,6 +156,9 @@ const CreateHomeworkScreen = ({ route, navigation }) => { AsyncStorage.setItem('pap_homeworksCustom', JSON.stringify(hw)).then(() => { console.log('Homework added'); console.log(hw); + + RegisterTrophy('trophy_add_hw'); + navigation.goBack(); }); }); diff --git a/views/Grades/GradeView.tsx b/views/Grades/GradeView.tsx index 9ef41ad4..5740d62a 100644 --- a/views/Grades/GradeView.tsx +++ b/views/Grades/GradeView.tsx @@ -27,6 +27,8 @@ import { X, } from 'lucide-react-native'; +import { RegisterTrophy } from '../Settings/TrophiesScreen'; + import { useLayoutEffect } from 'react'; import { getSavedCourseColor } from '../../utils/ColorCoursName'; @@ -58,6 +60,10 @@ function GradeView({ route, navigation }) { }); }; + useEffect(() => { + RegisterTrophy('trophy_grades_view'); + }, []); + const [modalLoading, setModalLoading] = useState(false); const [modalLoadingText, setModalLoadingText] = useState(''); diff --git a/views/HomeScreen.tsx b/views/HomeScreen.tsx index 166b6acc..61c6c313 100644 --- a/views/HomeScreen.tsx +++ b/views/HomeScreen.tsx @@ -118,6 +118,7 @@ const openURL = (url: string) => { import Carousel from 'react-native-reanimated-carousel'; import TimeSeparator from '../interface/CoursScreen/TimeSeparator'; +import { RegisterTrophy } from './Settings/TrophiesScreen'; // create list of dict from THEMES_IMAGES const THEMES_IMAGES_LIST = [ @@ -1181,6 +1182,7 @@ function HomeScreen({ navigation }: { navigation: any }) { scrollAnimationDuration={100} onSnapToItem={(index) => { setCurrentThemeIndex(index); + RegisterTrophy('trophy_bandeau', new Date().getDate()); Haptics.impactAsync( Haptics.ImpactFeedbackStyle.Light ); @@ -1297,6 +1299,7 @@ function HomeScreen({ navigation }: { navigation: any }) { scrollAnimationDuration={100} onSnapToItem={(index) => { setCurrentThemeIndex(index); + RegisterTrophy('trophy_bandeau', new Date().getDate()); Haptics.impactAsync( Haptics.ImpactFeedbackStyle.Light ); diff --git a/views/Settings/CoursColor.js b/views/Settings/CoursColor.js index 9b7ba4f5..25ca482c 100644 --- a/views/Settings/CoursColor.js +++ b/views/Settings/CoursColor.js @@ -1,6 +1,11 @@ import React, { useState, useEffect, useLayoutEffect } from 'react'; import { View, Button, StyleSheet, TouchableOpacity, Image, ScrollView, TextInput, Alert, Modal, Pressable, Platform, StatusBar } from 'react-native'; +import * as DocumentPicker from 'expo-document-picker'; +import * as FileSystem from 'expo-file-system'; + +const Buffer = require("buffer").Buffer; + import {useTheme, Text, Menu, Divider} from 'react-native-paper'; import * as Haptics from 'expo-haptics'; import GetUIColors from '../../utils/GetUIColors'; @@ -11,6 +16,8 @@ import NativeList from '../../components/NativeList'; import NativeItem from '../../components/NativeItem'; import NativeText from '../../components/NativeText'; +import Share from 'react-native-share'; + import { ContextMenuButton } from 'react-native-ios-context-menu'; import ColorPicker, { @@ -23,8 +30,9 @@ import ColorPicker, { import formatCoursName from '../../utils/FormatCoursName'; import { forceSavedCourseColor } from '../../utils/ColorCoursName'; -import {CircleEllipsis, CircleEllipsisIcon, ListRestart, Lock, MoreVertical, UserCircle2} from 'lucide-react-native'; +import {CircleEllipsis, Share as ShareIcon, CircleEllipsisIcon, ListRestart, Lock, MoreVertical, UserCircle2} from 'lucide-react-native'; import {getContextValues} from '../../utils/AppContext'; +import { RegisterTrophy } from './TrophiesScreen'; const CoursColor = ({ navigation }) => { const theme = useTheme(); @@ -82,6 +90,9 @@ const CoursColor = ({ navigation }) => { }, }); + console.log('Registering trophy for course color'); + RegisterTrophy('trophy_course_color', currentEditedSubject); + forceSavedCourseColor(currentEditedSubject, hex); setColorModalOpen(false); }; @@ -174,6 +185,56 @@ const CoursColor = ({ navigation }) => { setSavedColors(col); }, []); + const exportColors = () => { + const data = JSON.stringify(savedColors); + const base64 = Buffer.from(data).toString('base64'); + + Share.open({ + url: 'data:text/json;base64,' + base64, + filename: 'Papillon_CouleursMatieres_' + new Date().toISOString() + '.json', + type: 'application/json', + }); + }; + + const ImportColors = async () => { + const file = await DocumentPicker.getDocumentAsync({ + type: 'application/json', + }); + + if (file.assets.length > 0) { + const data = await FileSystem.readAsStringAsync(file.assets[0].uri); + const json = JSON.parse(data); + + let newCol = JSON.parse(SyncStorage.get('savedColors')); + + Object.keys(json).forEach((key) => { + newCol[key] = json[key]; + }); + + Alert.alert( + 'Importer des couleurs', + 'Voulez-vous vraiment importer ces couleurs ?', + [ + { + text: 'Importer', + onPress: () => { + setSavedColors(newCol); + SyncStorage.set('savedColors', JSON.stringify(newCol)); + + Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success); + }, + style: 'destructive', + }, + { + text: 'Annuler', + style: 'cancel', + }, + ], + { cancelable: true } + ); + } + }; + // add dice button in header useLayoutEffect(() => { navigation.setOptions({ @@ -198,15 +259,53 @@ const CoursColor = ({ navigation }) => { }, }, { - actionKey: 'resetColor', - actionTitle: 'Réinitialiser les couleurs', + menuTitle: 'Importer / exporter', icon: { type: 'IMAGE_SYSTEM', imageValue: { - systemName: 'arrow.uturn.left', + systemName: 'square.and.arrow.up', }, }, - } + menuItems: [ + { + actionKey: 'exportColors', + actionTitle: 'Exporter les couleurs', + icon: { + type: 'IMAGE_SYSTEM', + imageValue: { + systemName: 'square.and.arrow.up', + }, + }, + }, + { + actionKey: 'importColors', + actionTitle: 'Importer des couleurs', + icon: { + type: 'IMAGE_SYSTEM', + imageValue: { + systemName: 'square.and.arrow.down', + }, + }, + } + ], + }, + { + menuTitle: '', + menuOptions: ['displayInline', 'destructive'], + menuItems: [ + { + actionKey: 'resetColor', + actionTitle: 'Réinitialiser les couleurs', + menuAttributes: ['destructive'], + icon: { + type: 'IMAGE_SYSTEM', + imageValue: { + systemName: 'arrow.uturn.left', + }, + }, + } + ], + }, ], }} onPressMenuItem={({nativeEvent}) => { @@ -248,6 +347,10 @@ const CoursColor = ({ navigation }) => { ], { cancelable: true } ); + } else if (nativeEvent.actionKey == 'exportColors') { + exportColors(); + } else if (nativeEvent.actionKey == 'importColors') { + ImportColors(); } }} > @@ -321,6 +424,24 @@ const CoursColor = ({ navigation }) => { ); }} /> + + { + setUserMenuOpen(false); + exportColors(); + }} + /> + + { + setUserMenuOpen(false); + ImportColors(); + }} + /> ); }, diff --git a/views/Settings/ProfileScreen.tsx b/views/Settings/ProfileScreen.tsx index b8fad78f..45bd0e15 100644 --- a/views/Settings/ProfileScreen.tsx +++ b/views/Settings/ProfileScreen.tsx @@ -49,6 +49,7 @@ import { LinearGradient } from 'expo-linear-gradient'; import AlertBottomSheet from '../../interface/AlertBottomSheet'; import { PapillonUser } from '../../fetch/types/user'; +import { RegisterTrophy } from './TrophiesScreen'; function ProfileScreen() { const theme = useTheme(); @@ -101,6 +102,8 @@ function ProfileScreen() { }).then((base64) => { AsyncStorage.setItem('custom_profile_picture', 'data:image/png;base64,' + base64); setProfilePicture('data:image/png;base64,' + base64); + + RegisterTrophy('trophy_profile_picture'); }); } } diff --git a/views/Settings/TrophiesScreen.tsx b/views/Settings/TrophiesScreen.tsx new file mode 100644 index 00000000..a57cab3d --- /dev/null +++ b/views/Settings/TrophiesScreen.tsx @@ -0,0 +1,670 @@ +import React, { useState, useEffect, useLayoutEffect } from 'react'; +import { Animated, ScrollView, Modal, TouchableOpacity, StyleSheet, View, Text, FlatList, Alert } from 'react-native'; + +import GetUIColors from '../../utils/GetUIColors'; +import AsyncStorage from '@react-native-async-storage/async-storage'; +import NativeText from '../../components/NativeText'; +import { BlurView } from 'expo-blur'; + +import notifee from '@notifee/react-native'; + +import { PressableScale } from 'react-native-pressable-scale'; + +import moment from 'moment'; + +import { Trash2, X } from 'lucide-react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +import MaskedView from '@react-native-masked-view/masked-view'; + +const trophiesList = [ + { + id: 'trophy_trophy1', + emoji: '🏆', + title: 'Trophées', + description: 'Ouvrir la page des trophées 3 fois', + required: 3, + done: 0, + }, + { + id: 'trophy_hw_done', + emoji: '☑️', + title: 'Check', + description: 'Terminer 10 devoirs différents sur l\'app', + completionLabel: '* devoir(s)', + required: 10, + done: 0, + }, + { + id: 'trophy_course_color', + emoji: '🎨', + title: 'Peintre', + description: 'Changer la couleur de 10 cours', + completionLabel: '* cours individuel(s)', + required: 10, + done: 0, + }, + { + id: 'trophy_profile_picture', + emoji: '📸', + title: 'Selfie', + description: 'Changer de photo de profil', + required: 1, + done: 0, + }, + { + id: 'trophy_add_hw', + emoji: '📝', + title: 'Planificateur', + description: 'Ajouter 3 devoirs personnalisés', + completionLabel: '* devoir(s)', + required: 3, + done: 0, + }, + { + id: 'trophy_grades_view', + emoji: '📊', + title: 'Comptable', + description: 'Ouvrir le détail d\'une note 10 fois', + required: 10, + done: 0, + }, + { + id: 'trophy_bandeau', + emoji: '🖼️', + title: 'Décorateur', + description: 'Changer de bandeau 3 jours de suite', + completionLabel: '* jour(s) sur *', + required: 3, + done: 0, + }, +]; + +const originalTrophiesList = [ + ...trophiesList, +]; + +export const RegisterTrophy = async (trophyId, proof : any) => { + AsyncStorage.getItem('trophies').then((trophies) => { + if (trophies) { + trophies = JSON.parse(trophies); + } else { + trophies = []; + } + + if(!proof) { + proof = new Date(); + } + + trophies.push({ + id: trophyId, + date: new Date(), + proof: proof, + }); + + const setTrophy = trophiesList.find((trophy) => trophy.id === trophyId); + + let currentCount = trophies.filter((trophy) => trophy.id === trophyId).length; + const requiredCount = setTrophy ? setTrophy.required : currentCount + 1; + + if(currentCount == requiredCount + 1) { + /* notifee.displayNotification({ + title: '🏆 Trophée obtenu !', + body: 'Vous avez obtenu le trophée ' + (setTrophy.title ? setTrophy.title : '') + ' !', + ios: { + sound: 'papillon_ding.wav', + foregroundPresentationOptions: { + badge: true, + sound: true, + banner: true, + list: true, + }, + }, + }); */ + } + + AsyncStorage.setItem('trophies', JSON.stringify(trophies)); + }); +}; + +const TrophiesScreen = ({ navigation }) => { + const UIColors = GetUIColors(); + const insets = useSafeAreaInsets(); + + const [trophies, setTrophies] = useState(trophiesList); + const [selectedTrophy, setSelectedTrophy] = useState(0); + const [trophyModalVisible, setTrophyModalVisible] = useState(false); + + // floating 3d rotation animation + const animatedValueX = new Animated.Value(0); + const animatedValueY = new Animated.Value(0); + + Animated.loop( + Animated.sequence([ + Animated.timing(animatedValueX, { + toValue: 0, + duration: 0, + useNativeDriver: true, + }), + Animated.timing(animatedValueX, { + toValue: 1, + duration: 2000, + useNativeDriver: true, + }), + Animated.timing(animatedValueX, { + toValue: 0, + duration: 2000, + useNativeDriver: true, + }), + ]) + ).start(); + + Animated.loop( + Animated.sequence([ + Animated.timing(animatedValueY, { + toValue: 0, + duration: 0, + delay: 300, + useNativeDriver: true, + }), + Animated.timing(animatedValueY, { + toValue: 1, + duration: 2000, + delay: 0, + useNativeDriver: true, + }), + Animated.timing(animatedValueY, { + toValue: 0, + duration: 2000, + delay: 0, + useNativeDriver: true, + }), + ]) + ).start(); + + // scale on open + const scale = new Animated.Value(0); + + useEffect(() => { + if (trophyModalVisible) { + Animated.spring(scale, { + toValue: 1, + useNativeDriver: true, + mass: 0.7, + stiffness: 100, + damping: 10, + }).start(); + } + else { + Animated.timing(scale, { + toValue: 0, + duration: 150, + useNativeDriver: true, + }).start(); + } + }, [trophyModalVisible]); + + // header background color + useLayoutEffect(() => { + navigation.setOptions({ + headerStyle: { + backgroundColor: '#d16213', + }, + headerShadowVisible: false, + headerBackTitleVisible: false, + headerRight: () => ( + + + + ), + }); + }, [trophies]); + + function resetTrophies() { + Alert.alert('Réinitialiser les trophées', 'Êtes-vous sûr de vouloir réinitialiser tous vos trophées ? Vous perdrez tout votre progrès.', [ + { + text: 'Annuler', + style: 'cancel', + }, + { + text: 'Réinitialiser', + style: 'destructive', + onPress: () => { + Alert.alert('Êtes-vous vraiment sûr ?', 'Vous perdrez tout votre progrès et ne pourrez pas le récupérer.', [ + { + text: 'Annuler', + style: 'cancel', + }, + { + text: 'Réinitialiser', + style: 'destructive', + onPress: () => { + // set all trophies done to 0 + let newTrophies = [...trophiesList]; + newTrophies = newTrophies.map((trophy) => { + trophy.done = 0; + return trophy; + }); + + setTrophies(newTrophies); + + AsyncStorage.removeItem('trophies'); + }, + }, + ]); + }, + }, + ]); + } + + useEffect(() => { + AsyncStorage.getItem('trophies').then((trophies) => { + if (trophies) { + let newTrohpies = [...trophiesList]; + trophies = JSON.parse(trophies); + + // if multiple trophies share same id and proof, only count it once + let uniqueTrophies = []; + trophies.forEach((trophy) => { + if (!uniqueTrophies.find((t) => t.id === trophy.id && t.proof === trophy.proof)) { + uniqueTrophies.push(trophy); + } + }); + + uniqueTrophies.forEach((trophy) => { + newTrohpies = newTrohpies.map((t) => { + if (t.id === trophy.id) { + // if already in list + if (t.list && t.list.includes(trophy.date)) { + return t; + } + + t.done++; + if(t.list) { + t.list.push(trophy.date); + } + else { + t.list = [trophy.date]; + } + } + + // if completed, set date to when it was completed + if (t.done >= t.required && !t.date) { + t.date = trophy.date; + } + + return t; + }); + }); + + setTrophies(newTrohpies); + } + }); + }, []); + + useEffect(() => { + RegisterTrophy('trophy_trophy1'); + }, []); + + return ( + + { + setTrophyModalVisible(false); + }} + > + + { + setTrophyModalVisible(false); + }} + > + + + + + + {trophies[selectedTrophy].emoji} + + + + + {trophies[selectedTrophy].title} + + + + {trophies[selectedTrophy].description} + + + + + + + + {trophies.filter((trophy) => trophy.done >= trophy.required).length} trophée{trophies.filter((trophy) => trophy.done >= trophy.required).length > 1 ? 's' : ''} obtenu{trophies.filter((trophy) => trophy.done >= trophy.required).length > 1 ? 's' : ''} ! + + + Terminez tous les trophées et devenez le roi de Papillon ! + + + + + + {trophies.filter((trophy) => trophy.done >= trophy.required).length} + + + / {trophies.length} + + + + + + {trophies.map((trophy, index) => ( + { + if (trophy.done >= trophy.required) { + setSelectedTrophy(index); + setTrophyModalVisible(true); + } + }} + > + = trophy.required) ? styles.trophyFullyCompleted : null + ]} + > + + { trophy.done < trophy.required && ( + + )} + + + {trophy.emoji} + + + + + + {trophy.title} + + + {trophy.description} + + + + + + + { (trophy.done < trophy.required) ? ( + trophy.completionLabel ? ( + + {trophy.completionLabel.replace('*', trophy.done).replace('*', trophy.required)} + + ) : ( + + Complété à { Math.round(trophy.done * 100 / trophy.required) }% + + ) + ) : ( + + { moment(trophy.date).fromNow() } + + )} + + + + ))} + + + + ); +}; + +const styles = StyleSheet.create({ + trophyGrid: { + flex: 1, + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'flex-start', + margin: 5, + }, + trophyContainer: { + width: '50%', + padding: 5, + }, + trophy: { + flex: 1, + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + + height: 230, + borderRadius: 10, + + padding: 12, + + shadowColor: '#000', + shadowOffset: { width: 0, height: 1 }, + shadowOpacity: 0.15, + shadowRadius: 2, + + borderColor: 'transparent', + borderWidth: 2, + }, + + trophyFullyCompleted: { + borderColor: '#d16213', + borderWidth: 2, + }, + + trophyEmojiContainer: { + flex: 1, + width: '100%', + flexDirection: 'row', + justifyContent: 'flex-start', + alignItems: 'flex-start', + }, + trophyEmoji: { + fontSize: 68, + marginTop: '-10%', + alignSelf: 'center', + width: '100%', + textAlign: 'center', + }, + + trophyEmojiUncompleted: { + opacity: 0.5, + }, + + trophyData: { + width: '100%', + flexDirection: 'column', + justifyContent: 'flex-start', + alignItems: 'flex-start', + gap: 3, + }, + trophyTitle: { + fontSize: 16, + fontFamily: 'Papillon-Semibold', + }, + trophyDescription: { + fontSize: 15, + fontFamily: 'Papillon-Medium', + opacity: 0.5, + }, + + trophyCompletionBar: { + width: '100%', + height: 6, + backgroundColor: '#f0f0f0', + borderRadius: 5, + overflow: 'hidden', + marginVertical: 5, + }, + + trophyCompletionBarFill: { + height: '100%', + borderRadius: 5, + }, + + trophyCompleted: { + fontSize: 14, + fontFamily: 'Papillon-Medium', + opacity: 0.5, + }, + trophyCompletedCompleted: { + fontSize: 14, + fontFamily: 'Papillon-Semibold', + }, + + secondHeader: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: 14, + paddingTop: 8, + paddingBottom: 14, + gap: 16, + }, + + secondHeaderText: { + flexDirection: 'column', + justifyContent: 'flex-start', + alignItems: 'flex-start', + gap: 3, + flex: 1, + }, + + secondHeaderTitle: { + fontSize: 17, + fontFamily: 'Papillon-Semibold', + color: '#fff', + }, + + secondHeaderDescription: { + fontSize: 15, + fontFamily: 'Papillon-Medium', + color: '#fff', + opacity: 0.5, + }, + + secondHeaderCompletion: { + flexDirection: 'row', + justifyContent: 'flex-end', + alignItems: 'flex-end', + gap: 5, + }, + secondHeaderValue: { + fontSize: 32, + fontFamily: 'Papillon-Semibold', + color: '#fff', + }, + + secondHeaderOutOf: { + fontSize: 20, + fontFamily: 'Papillon-Medium', + color: '#fff', + opacity: 0.5, + }, +}); + +export default TrophiesScreen; \ No newline at end of file diff --git a/views/SettingsScreen.ios.tsx b/views/SettingsScreen.ios.tsx index 36ec6676..5db7aa31 100644 --- a/views/SettingsScreen.ios.tsx +++ b/views/SettingsScreen.ios.tsx @@ -101,6 +101,44 @@ function NewSettings({ navigation }: { ) : null } + + + + + } + chevron + onPress={() => navigation.navigate('TrophiesScreen')} + > + + Trophées + + + Votre progression sur Papillon + + + +