├── .devcontainer └── devcontainer.json ├── .gitattributes ├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── app ├── build.gradle.kts └── src │ ├── androidTest │ └── java │ │ └── me │ │ └── mamiiblt │ │ └── instafel │ │ └── updater │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── me │ │ │ └── mamiiblt │ │ │ └── instafel │ │ │ ├── ExampleAppClass.java │ │ │ ├── InstafelEnv.java │ │ │ ├── activity │ │ │ ├── about │ │ │ │ ├── ifl_a_about.java │ │ │ │ ├── ifl_a_about_contributors.java │ │ │ │ ├── ifl_a_about_translators.java │ │ │ │ └── ifl_a_build_info.java │ │ │ ├── admin │ │ │ │ ├── ifl_a_admin_action_approvepreview.java │ │ │ │ ├── ifl_a_admin_action_updatebackup.java │ │ │ │ ├── ifl_a_admin_dashboard.java │ │ │ │ ├── ifl_a_admin_login.java │ │ │ │ └── ifl_a_admin_pref_manager.java │ │ │ ├── crash_manager │ │ │ │ ├── ifl_a_crash_reports.java │ │ │ │ └── ifl_a_crash_viewer.java │ │ │ ├── devmode │ │ │ │ ├── analyzer │ │ │ │ │ ├── ifl_a_devmode_backup_analyzer.java │ │ │ │ │ └── ifl_a_devmode_backup_analyzer_menu.java │ │ │ │ ├── backup │ │ │ │ │ └── ifl_a_export_backup.java │ │ │ │ ├── comparator │ │ │ │ │ ├── ifl_a_devmode_backup_comparator.java │ │ │ │ │ └── ifl_a_devmode_backup_comparator_menu.java │ │ │ │ ├── ifl_a_devmode.java │ │ │ │ └── ifl_a_devmode_import.java │ │ │ ├── ifl_a_language.java │ │ │ ├── ifl_a_menu.java │ │ │ ├── ifl_a_misc.java │ │ │ ├── ifl_a_ota.java │ │ │ └── library │ │ │ │ ├── backup │ │ │ │ ├── ifl_a_library_backup.java │ │ │ │ ├── ifl_a_library_backup_info.java │ │ │ │ └── ifl_a_library_backup_info_author.java │ │ │ │ └── ifl_a_library_menu.java │ │ │ ├── api │ │ │ ├── models │ │ │ │ ├── AutoUpdateInfo.java │ │ │ │ ├── Backup.java │ │ │ │ ├── BackupListItem.java │ │ │ │ └── InstafelResponse.java │ │ │ ├── requests │ │ │ │ ├── ApiCallbackInterface.java │ │ │ │ ├── ApiGet.java │ │ │ │ ├── ApiGetAdmin.java │ │ │ │ ├── ApiGetString.java │ │ │ │ ├── ApiPostAdmin.java │ │ │ │ └── admin │ │ │ │ │ └── AdminLogin.java │ │ │ └── tasks │ │ │ │ ├── BackupUpdateDownloadTask.java │ │ │ │ └── BackupUpdateTask.java │ │ │ ├── managers │ │ │ ├── AttributeManager.java │ │ │ ├── CrashManager.java │ │ │ ├── FrequencyManager.java │ │ │ ├── NotificationOtaManager.java │ │ │ ├── OverridesManager.java │ │ │ ├── PermissionManager.java │ │ │ ├── PreferenceManager.java │ │ │ └── helpers │ │ │ │ ├── FlagItem.java │ │ │ │ └── ParseResult.java │ │ │ ├── ota │ │ │ ├── CheckUpdates.java │ │ │ ├── FreqLabels.java │ │ │ ├── IflEnvironment.java │ │ │ ├── LastCheck.java │ │ │ └── tasks │ │ │ │ ├── BuildInfoTask.java │ │ │ │ ├── ChangelogContentTask.java │ │ │ │ ├── ChangelogTask.java │ │ │ │ ├── DownloadUpdateTask.java │ │ │ │ └── VersionTask.java │ │ │ ├── ui │ │ │ ├── LoadingBar.java │ │ │ ├── Page.java │ │ │ ├── PageContentArea.java │ │ │ ├── PageTitle.java │ │ │ ├── TileCompact.java │ │ │ ├── TileLarge.java │ │ │ ├── TileLargeEditText.java │ │ │ ├── TileLargeSwitch.java │ │ │ ├── TileSocials.java │ │ │ └── TileTitle.java │ │ │ └── utils │ │ │ ├── DialogItem.java │ │ │ ├── GeneralFn.java │ │ │ ├── InitializeInstafel.java │ │ │ ├── InstafelAdminUser.java │ │ │ ├── InstafelCrashHandler.java │ │ │ ├── InstafelFileProvider.java │ │ │ ├── Localizator.java │ │ │ ├── OpenIflMenu.java │ │ │ ├── PreferenceKeys.java │ │ │ ├── PreferenceTypes.java │ │ │ ├── Preferences.java │ │ │ ├── dialog │ │ │ ├── InstafelDialog.java │ │ │ ├── InstafelDialogItem.java │ │ │ ├── InstafelDialogMargins.java │ │ │ ├── InstafelDialogTextType.java │ │ │ └── StringInputViews.java │ │ │ └── models │ │ │ ├── AppData.java │ │ │ ├── CrashData.java │ │ │ ├── Crashlog.java │ │ │ └── DeviceData.java │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ifl_about.xml │ │ ├── ifl_action.xml │ │ ├── ifl_admin.xml │ │ ├── ifl_amoled_theme.xml │ │ ├── ifl_android.xml │ │ ├── ifl_applied_patches.xml │ │ ├── ifl_approve_backup.xml │ │ ├── ifl_arch.xml │ │ ├── ifl_author.xml │ │ ├── ifl_backup.xml │ │ ├── ifl_backup_analyzer.xml │ │ ├── ifl_backup_comp.xml │ │ ├── ifl_backup_export.xml │ │ ├── ifl_backup_import.xml │ │ ├── ifl_base.xml │ │ ├── ifl_build_info.xml │ │ ├── ifl_button_background.xml │ │ ├── ifl_button_primary_background.xml │ │ ├── ifl_button_primary_background_dark.xml │ │ ├── ifl_button_primary_background_light.xml │ │ ├── ifl_button_secondary_background.xml │ │ ├── ifl_button_secondary_background_dark.xml │ │ ├── ifl_button_secondary_background_light.xml │ │ ├── ifl_changelog.xml │ │ ├── ifl_chat.xml │ │ ├── ifl_check_frequency.xml │ │ ├── ifl_contributors.xml │ │ ├── ifl_copy.xml │ │ ├── ifl_crashlog.xml │ │ ├── ifl_deletelog.xml │ │ ├── ifl_deleteov.xml │ │ ├── ifl_dev_circle.xml │ │ ├── ifl_developer.xml │ │ ├── ifl_device.xml │ │ ├── ifl_dg_ota_background.xml │ │ ├── ifl_edittext_background.xml │ │ ├── ifl_enable_updates.xml │ │ ├── ifl_export_devfile.xml │ │ ├── ifl_export_path.xml │ │ ├── ifl_filename.xml │ │ ├── ifl_flag_az.xml │ │ ├── ifl_flag_de.xml │ │ ├── ifl_flag_el.xml │ │ ├── ifl_flag_es.xml │ │ ├── ifl_flag_fr.xml │ │ ├── ifl_flag_hi.xml │ │ ├── ifl_flag_hu.xml │ │ ├── ifl_flag_pt.xml │ │ ├── ifl_flag_tr.xml │ │ ├── ifl_flag_us.xml │ │ ├── ifl_generation_id.xml │ │ ├── ifl_genid.xml │ │ ├── ifl_github.xml │ │ ├── ifl_guide.xml │ │ ├── ifl_handbook.xml │ │ ├── ifl_heart.xml │ │ ├── ifl_import_devopt.xml │ │ ├── ifl_instafel.xml │ │ ├── ifl_instagram.xml │ │ ├── ifl_installation_type.xml │ │ ├── ifl_language.xml │ │ ├── ifl_libraries.xml │ │ ├── ifl_library_backup.xml │ │ ├── ifl_library_flags.xml │ │ ├── ifl_misc.xml │ │ ├── ifl_notifications.xml │ │ ├── ifl_open_in_browser.xml │ │ ├── ifl_ota.xml │ │ ├── ifl_ota_expand.xml │ │ ├── ifl_ota_refresh.xml │ │ ├── ifl_ota_refresh_2.xml │ │ ├── ifl_patcher_commit.xml │ │ ├── ifl_progress_background_dark.xml │ │ ├── ifl_progress_background_light.xml │ │ ├── ifl_progress_circle_drawable.xml │ │ ├── ifl_remove_ads.xml │ │ ├── ifl_share.xml │ │ ├── ifl_social_github.xml │ │ ├── ifl_social_instagram.xml │ │ ├── ifl_social_medium.xml │ │ ├── ifl_social_x.xml │ │ ├── ifl_tag.xml │ │ ├── ifl_telegram.xml │ │ ├── ifl_tick.xml │ │ ├── ifl_translate.xml │ │ ├── ifl_version.xml │ │ └── ifl_website.xml │ │ ├── layout │ │ ├── ifl_at_about.xml │ │ ├── ifl_at_about_contributors.xml │ │ ├── ifl_at_about_translators.xml │ │ ├── ifl_at_admin_action_approvepreview.xml │ │ ├── ifl_at_admin_action_pref_manager.xml │ │ ├── ifl_at_admin_action_updatebackup.xml │ │ ├── ifl_at_admin_dashboard.xml │ │ ├── ifl_at_admin_login.xml │ │ ├── ifl_at_build_info.xml │ │ ├── ifl_at_crash_reports.xml │ │ ├── ifl_at_crash_viewer.xml │ │ ├── ifl_at_devmode.xml │ │ ├── ifl_at_devmode_backup_analyzer.xml │ │ ├── ifl_at_devmode_backup_analyzer_menu.xml │ │ ├── ifl_at_devmode_backup_comparator.xml │ │ ├── ifl_at_devmode_backup_comparator_menu.xml │ │ ├── ifl_at_devmode_import.xml │ │ ├── ifl_at_export_backup.xml │ │ ├── ifl_at_language.xml │ │ ├── ifl_at_library_backup.xml │ │ ├── ifl_at_library_backup_info.xml │ │ ├── ifl_at_library_backup_info_author.xml │ │ ├── ifl_at_library_menu.xml │ │ ├── ifl_at_menu.xml │ │ ├── ifl_at_misc.xml │ │ ├── ifl_at_ota.xml │ │ ├── ifl_dg_ota_found_dark.xml │ │ ├── ifl_dg_ota_found_light.xml │ │ ├── ifl_dg_ota_set_freq.xml │ │ ├── ifl_dg_ota_uptodate.xml │ │ ├── ifl_dg_welcome_dark.xml │ │ ├── ifl_dg_welcome_light.xml │ │ ├── ifl_exampledialog.xml │ │ ├── ifl_ui_loadingbar.xml │ │ ├── ifl_ui_page.xml │ │ ├── ifl_ui_pagecontentarea.xml │ │ ├── ifl_ui_pagetitle.xml │ │ ├── ifl_ui_tilecompact.xml │ │ ├── ifl_ui_tilelarge.xml │ │ ├── ifl_ui_tilelarge_edittext.xml │ │ ├── ifl_ui_tilelarge_switch.xml │ │ ├── ifl_ui_tilesocials.xml │ │ └── ifl_ui_tiletitle.xml │ │ ├── mipmap-anydpi │ │ ├── ifl_ic_launcher.xml │ │ └── ifl_ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ifl_ic_launcher.webp │ │ └── ifl_ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ifl_ic_launcher.webp │ │ └── ifl_ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ifl_ic_launcher.webp │ │ └── ifl_ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ifl_ic_launcher.webp │ │ └── ifl_ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ifl_ic_launcher.webp │ │ ├── ifl_ic_launcher_round.webp │ │ └── ig_launcher_background.png │ │ ├── values-az │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-el │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-hi │ │ └── strings.xml │ │ ├── values-hu │ │ └── strings.xml │ │ ├── values-night │ │ └── themes.xml │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── me │ └── mamiiblt │ └── instafel │ └── updater │ └── ExampleUnitTest.java ├── build-patcher.sh ├── config └── example.ifl_config.json ├── gplayapi ├── README.md ├── build.gradle.kts └── src │ └── main │ ├── java │ └── me │ │ └── mamiiblt │ │ └── instafel │ │ └── gplayapi │ │ ├── Env.java │ │ ├── InstafelGplayapiInstance.java │ │ ├── Main.java │ │ └── utils │ │ ├── AppInfo.java │ │ ├── ExceptionHandler.java │ │ ├── General.java │ │ └── Log.java │ └── resources │ └── device_props │ └── gplayapi_px_3a.properties ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── patcher ├── cli │ ├── build.gradle.kts │ ├── publish.gradle.kts │ └── src │ │ └── main │ │ └── java │ │ └── me │ │ └── mamiiblt │ │ └── instafel │ │ └── patcher │ │ └── cli │ │ ├── Main.java │ │ ├── commands │ │ ├── AboutCmd.java │ │ ├── BuildCmd.java │ │ ├── ClearPatcherCache.java │ │ ├── ForceUpdateCore.java │ │ ├── HelpCmd.java │ │ ├── InitProject.java │ │ ├── ListPatches.java │ │ └── RunPatch.java │ │ ├── handlers │ │ ├── Command.java │ │ ├── CommandHandler.java │ │ └── CoreHandler.java │ │ └── utils │ │ ├── Log.java │ │ ├── Utils.java │ │ └── modals │ │ └── UpdateInfo.java ├── core │ ├── build.gradle.kts │ ├── publish.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── mamiiblt │ │ │ └── instafel │ │ │ └── patcher │ │ │ └── core │ │ │ ├── PatchLoader.java │ │ │ ├── jobs │ │ │ ├── BuildProject.java │ │ │ ├── InitializeProject.java │ │ │ └── RunPatches.java │ │ │ ├── managers │ │ │ └── resources │ │ │ │ ├── IFLResData.java │ │ │ │ ├── ResourceParser.java │ │ │ │ ├── Resources.java │ │ │ │ └── types │ │ │ │ ├── ResourceType.java │ │ │ │ ├── TAttr.java │ │ │ │ ├── TColor.java │ │ │ │ ├── TId.java │ │ │ │ ├── TPublic.java │ │ │ │ ├── TString.java │ │ │ │ └── TStyle.java │ │ │ ├── patches │ │ │ ├── Clone.java │ │ │ ├── ExtendSnoozeWarningDuration.java │ │ │ ├── FixSecureCtxCrash.java │ │ │ ├── InstafelStuffs.java │ │ │ ├── RemoveAds.java │ │ │ ├── UnlockDeveloperOptions.java │ │ │ ├── clone │ │ │ │ ├── CloneGeneral.java │ │ │ │ └── ClonePackageReplacer.java │ │ │ └── general │ │ │ │ ├── AddAppTrigger.java │ │ │ │ ├── AddInitInstafel.java │ │ │ │ ├── AddLongClickEvent.java │ │ │ │ ├── CopyInstafelSources.java │ │ │ │ └── GetGenerationInfo.java │ │ │ ├── providers │ │ │ └── InfoProvider.java │ │ │ ├── source │ │ │ ├── APKSigner.java │ │ │ ├── SmaliParser.java │ │ │ ├── SourceManager.java │ │ │ ├── SourceUtils.java │ │ │ └── WorkingDir.java │ │ │ └── utils │ │ │ ├── Env.java │ │ │ ├── Log.java │ │ │ ├── PropertyManager.java │ │ │ ├── PublicResHelper.java │ │ │ ├── SmaliUtils.java │ │ │ ├── Utils.java │ │ │ ├── models │ │ │ └── LineData.java │ │ │ └── patch │ │ │ ├── InstafelPatch.java │ │ │ ├── InstafelPatchGroup.java │ │ │ ├── InstafelTask.java │ │ │ ├── PInfos.java │ │ │ └── PatchLoader.java │ │ └── resources │ │ ├── blacklisted_perms.json │ │ ├── clone_assets │ │ ├── ifl_clone_background.png │ │ └── ifl_clone_foreground.png │ │ ├── ifl_sources │ │ ├── ifl_data.xml │ │ ├── ifl_resources.zip │ │ └── ifl_sources.zip │ │ ├── signing │ │ ├── debug.keystore │ │ └── uber-apk-signer.zip │ │ └── styling.xslt └── mobile │ ├── build.gradle.kts │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── iflu_icon-playstore.png │ ├── java │ └── me │ │ └── mamiiblt │ │ └── instafel │ │ └── patcher │ │ └── mobile │ │ ├── MainActivity.java │ │ ├── fragments │ │ ├── CoreFragment.java │ │ ├── HomeFragment.java │ │ ├── PatchesFragment.java │ │ └── SettingsFragment.java │ │ └── utils │ │ ├── MaterialListPreference.java │ │ └── Utils.java │ └── res │ ├── drawable │ ├── about_decompiler.xml │ ├── app_info.xml │ ├── check_for_updates.xml │ ├── clear_cache.xml │ ├── core.xml │ ├── create_issue.xml │ ├── custom_app_icon.xml │ ├── custom_app_name.xml │ ├── custom_keystore.xml │ ├── custom_package_name.xml │ ├── home.xml │ ├── iflpm_icon_foreground.xml │ ├── material_you.xml │ ├── number_of_threads.xml │ ├── patches.xml │ ├── reset_frameworks.xml │ ├── settings.xml │ ├── source_code_2.xml │ └── test_keystore.xml │ ├── layout │ ├── activity_main.xml │ ├── fragment_core.xml │ ├── fragment_home.xml │ ├── fragment_patches.xml │ └── m3_switch.xml │ ├── menu │ └── bottom_nav_menu.xml │ ├── mipmap-anydpi-v26 │ ├── iflpm_icon.xml │ └── iflpm_icon_round.xml │ ├── mipmap-hdpi │ ├── iflpm_icon.webp │ └── iflpm_icon_round.webp │ ├── mipmap-mdpi │ ├── iflpm_icon.webp │ └── iflpm_icon_round.webp │ ├── mipmap-xhdpi │ ├── iflpm_icon.webp │ └── iflpm_icon_round.webp │ ├── mipmap-xxhdpi │ ├── iflpm_icon.webp │ └── iflpm_icon_round.webp │ ├── mipmap-xxxhdpi │ ├── iflpm_icon.webp │ └── iflpm_icon_round.webp │ ├── navigation │ └── nav_graph.xml │ ├── values-night │ └── themes.xml │ ├── values │ ├── arrays.xml │ ├── colors.xml │ ├── iflpm_icon_background.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── app_options.xml │ ├── backup_rules.xml │ ├── data_extraction_rules.xml │ └── iflpm_file_provider.xml ├── settings.gradle.kts ├── updater ├── README.md ├── build.gradle.kts └── src │ ├── androidTest │ └── java │ │ └── me │ │ └── mamiiblt │ │ └── instafel │ │ └── updater │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── aidl │ │ └── me │ │ │ └── mamiiblt │ │ │ └── instafel │ │ │ └── updater │ │ │ └── IUserService.aidl │ ├── iflu_icon-playstore.png │ ├── java │ │ └── me │ │ │ └── mamiiblt │ │ │ └── instafel │ │ │ └── updater │ │ │ ├── App.java │ │ │ ├── MainActivity.java │ │ │ ├── SetupActivity.java │ │ │ ├── fragments │ │ │ ├── InfoFragment.java │ │ │ ├── LogsFragment.java │ │ │ └── SettingsFragment.java │ │ │ ├── services │ │ │ └── UserService.java │ │ │ ├── update │ │ │ ├── InstafelUpdateService.java │ │ │ ├── UpdateWork.java │ │ │ └── UpdateWorkHelper.java │ │ │ └── utils │ │ │ ├── AppPreferences.java │ │ │ ├── CommandOutput.java │ │ │ ├── LocalizationUtils.java │ │ │ ├── LogUtils.java │ │ │ ├── MaterialListPreference.java │ │ │ ├── RootManager.java │ │ │ ├── ShizukuInstaller.java │ │ │ └── Utils.java │ └── res │ │ ├── drawable │ │ ├── alert.xml │ │ ├── app_info.xml │ │ ├── baseline_battery_alert_24.xml │ │ ├── battery_status.xml │ │ ├── bell_off.xml │ │ ├── check_interval.xml │ │ ├── clear_logs.xml │ │ ├── clock_alert.xml │ │ ├── create_issue.xml │ │ ├── hour_12_rule.xml │ │ ├── iflu_icon_foreground.xml │ │ ├── info.xml │ │ ├── installation_type.xml │ │ ├── installing.xml │ │ ├── language.xml │ │ ├── log.xml │ │ ├── logs.xml │ │ ├── mobile_data.xml │ │ ├── restart.xml │ │ ├── root.xml │ │ ├── send_notification.xml │ │ ├── settings.xml │ │ ├── shizuku.xml │ │ ├── show_crash_logs.xml │ │ ├── source_code_1.xml │ │ ├── source_code_2.xml │ │ ├── start.xml │ │ ├── status.xml │ │ ├── stop.xml │ │ ├── update_success.xml │ │ ├── updater_guide.xml │ │ └── use_instafel_api.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_setup.xml │ │ ├── fragment_info.xml │ │ ├── fragment_logs.xml │ │ └── m3_switch.xml │ │ ├── menu │ │ └── bottom_nav_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── iflu_icon.xml │ │ └── iflu_icon_round.xml │ │ ├── mipmap-hdpi │ │ ├── iflu_icon.webp │ │ ├── iflu_icon_background.webp │ │ └── iflu_icon_round.webp │ │ ├── mipmap-mdpi │ │ ├── iflu_icon.webp │ │ ├── iflu_icon_background.webp │ │ └── iflu_icon_round.webp │ │ ├── mipmap-xhdpi │ │ ├── iflu_icon.webp │ │ ├── iflu_icon_background.webp │ │ └── iflu_icon_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── iflu_icon.webp │ │ ├── iflu_icon_background.webp │ │ └── iflu_icon_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── iflu_icon.webp │ │ ├── iflu_icon_background.webp │ │ └── iflu_icon_round.webp │ │ ├── navigation │ │ └── nav_graph.xml │ │ ├── values-en │ │ └── strings.xml │ │ ├── values-night │ │ └── themes.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── iflu_icon_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── app_options.xml │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ └── iflu_file_provider.xml │ └── test │ └── java │ └── me │ └── mamiiblt │ └── instafel │ └── updater │ └── ExampleUnitTest.java └── website ├── .eslintrc.json ├── .gitignore ├── build.gradle.kts ├── components.json ├── next.config.ts ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── public ├── content │ ├── gassets │ │ └── instafel-guide │ │ │ ├── instafel-menu.jpg │ │ │ └── menu-access.jpg │ └── guides │ │ └── 1.instafel-guide.md ├── instafel.jpg ├── mockups │ ├── mockup_dark.png │ └── mockup_light.png ├── robots.txt ├── web-app-manifest-192x192.png └── web-app-manifest-512x512.png ├── src ├── app │ ├── [lng] │ │ ├── about_updater │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── backup │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── download │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── error.tsx │ │ ├── flag │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── flags │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── guides │ │ │ ├── [id] │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── library_backup │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── library_flag │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── not-found.tsx │ │ └── page.tsx │ ├── api │ │ └── guide │ │ │ └── route.ts │ ├── apple-icon.png │ ├── favicon.ico │ ├── globals.css │ ├── icon0.svg │ ├── icon1.png │ ├── manifest.json │ └── sitemap.ts ├── components │ ├── Footer.tsx │ ├── HomeMockup.tsx │ ├── Icons.tsx │ ├── LanguageSwitcher.tsx │ ├── Navbar.tsx │ ├── NavigationItem.tsx │ ├── ThemeSwitcher.tsx │ ├── carousel.tsx │ ├── ifl.tsx │ ├── loading │ │ ├── footer-loading.tsx │ │ ├── index.ts │ │ └── navbar-loading.tsx │ ├── providers │ │ └── theme-provider.tsx │ └── ui │ │ ├── accordion.tsx │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── dropdown-menu.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── loading-spinner.tsx │ │ ├── navigation-menu.tsx │ │ ├── radio-group.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── skeleton.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ └── toaster.tsx ├── config │ ├── config.tsx │ └── metadata.ts ├── hooks │ ├── use-toast.ts │ ├── useGuides.ts │ └── useMediaQuery.ts ├── i18n │ ├── client.js │ ├── i18next.js │ ├── index.js │ └── settings.js ├── lib │ ├── guide.ts │ └── utils.ts ├── locales │ ├── de │ │ ├── backup.json │ │ ├── common.json │ │ ├── download.json │ │ ├── guides.json │ │ ├── home.json │ │ ├── library_backup.json │ │ └── updater.json │ ├── en │ │ ├── backup.json │ │ ├── common.json │ │ ├── download.json │ │ ├── guides.json │ │ ├── home.json │ │ ├── library_backup.json │ │ └── updater.json │ ├── es │ │ ├── backup.json │ │ ├── common.json │ │ ├── download.json │ │ ├── guides.json │ │ ├── home.json │ │ ├── library_backup.json │ │ └── updater.json │ ├── hi │ │ ├── backup.json │ │ ├── common.json │ │ ├── download.json │ │ ├── guides.json │ │ ├── home.json │ │ ├── library_backup.json │ │ └── updater.json │ └── tr │ │ ├── backup.json │ │ ├── common.json │ │ ├── download.json │ │ ├── guides.json │ │ ├── home.json │ │ ├── library_backup.json │ │ └── updater.json └── middleware.js └── tsconfig.json /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "mcr.microsoft.com/devcontainers/universal:2", 3 | "forwardPorts": [6080], 4 | "portsAttributes": { 5 | "6080": { 6 | "label": "desktop" 7 | } 8 | }, 9 | "runArgs": ["--device=/dev/net/tun"], 10 | "features": { 11 | "ghcr.io/devcontainers/features/desktop-lite:1": { 12 | "version": "latest", 13 | "noVncVersion": "1.2.0", 14 | "password": "vscode", 15 | "webPort": "6080", 16 | "vncPort": "5901" 17 | }, 18 | "ghcr.io/tailscale/codespace/tailscale": {} 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | # 4 | # Linux start script should use lf 5 | /gradlew text eol=lf 6 | 7 | # These are Windows script files and should use crlf 8 | *.bat text eol=crlf 9 | 10 | # Binary files should be left untouched 11 | *.jar binary 12 | 13 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: mamiiblt 2 | buy_me_a_coffee: mamiiblt 3 | -------------------------------------------------------------------------------- /app/src/androidTest/java/me/mamiiblt/instafel/updater/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("me.mamiiblt.instafel", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/ExampleAppClass.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel; 2 | 3 | import android.app.Application; 4 | 5 | import me.mamiiblt.instafel.utils.InstafelCrashHandler; 6 | public class ExampleAppClass extends Application { 7 | @Override 8 | public void onCreate() { 9 | super.onCreate(); 10 | Thread.setDefaultUncaughtExceptionHandler(new InstafelCrashHandler(this)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/api/models/BackupListItem.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.api.models; 2 | 3 | import org.json.JSONObject; 4 | 5 | public class BackupListItem { 6 | private String id; 7 | private String name; 8 | private String author; 9 | 10 | public BackupListItem(String id, String name, String author) { 11 | this.id = id; 12 | this.name = name; 13 | this.author = author; 14 | } 15 | 16 | public String getId() { 17 | return id; 18 | } 19 | 20 | public String getName() { 21 | return name; 22 | } 23 | 24 | public String getAuthor() { 25 | return author; 26 | } 27 | 28 | public String convertForPutIntoActivity() { 29 | try { 30 | JSONObject jsonObject = new JSONObject(); 31 | jsonObject.put("id", id); 32 | jsonObject.put("author", author); 33 | jsonObject.put("name", name); 34 | return jsonObject.toString(); 35 | } catch (Exception e) { 36 | e.printStackTrace(); 37 | return "CANNOT_BE_CONVERTED"; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/api/requests/ApiCallbackInterface.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.api.requests; 2 | 3 | import me.mamiiblt.instafel.api.models.InstafelResponse; 4 | 5 | public interface ApiCallbackInterface { 6 | void getResponse(InstafelResponse instafelResponse, int taskId); 7 | void getResponse(String rawResponse, int taskId); 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/managers/PermissionManager.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.managers; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.net.Uri; 6 | import android.os.Build; 7 | import android.provider.Settings; 8 | 9 | public class PermissionManager { 10 | 11 | public static boolean checkPermission(Activity activity) { 12 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 13 | return activity.getPackageManager().canRequestPackageInstalls(); 14 | } else { 15 | return true; 16 | } 17 | } 18 | public static void requestInstallPermission(Activity activity) { 19 | activity.startActivityForResult( 20 | new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES) 21 | .setData(Uri.parse(String.format("package:%s", activity.getPackageName()))), 1); 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/managers/helpers/FlagItem.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.managers.helpers; 2 | 3 | public class FlagItem { 4 | private String id; 5 | private String name; 6 | private String desc; 7 | 8 | public FlagItem(String id, String name, String desc) { 9 | this.id = id; 10 | this.name = name; 11 | this.desc = desc; 12 | } 13 | 14 | public String getId() { 15 | return id; 16 | } 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | public String getDesc() { 23 | return desc; 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/managers/helpers/ParseResult.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.managers.helpers; 2 | 3 | import org.json.JSONObject; 4 | 5 | public class ParseResult { 6 | private JSONObject mappingObject; 7 | private String flagId; 8 | 9 | public ParseResult(String flagId, JSONObject mappingObject) { 10 | this.flagId = flagId; 11 | this.mappingObject = mappingObject; 12 | } 13 | 14 | public JSONObject getMappingObject() { 15 | return mappingObject; 16 | } 17 | 18 | public String getFlagId() { 19 | return flagId; 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/ota/FreqLabels.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.ota; 2 | 3 | public class FreqLabels { 4 | public static int EVERY_OPEN = 0; 5 | public static int NEVER = 1; 6 | public static int EVERY_DAY = 2; 7 | public static int ONCE_IN_THREE_DAYS = 3; 8 | public static int ONCE_IN_FIVE_DAYS = 4; 9 | public static int ONCE_A_WEEK = 5; 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/ui/Page.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.ui; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.util.AttributeSet; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.widget.LinearLayout; 9 | import android.widget.ScrollView; 10 | import android.widget.TextView; 11 | 12 | import androidx.constraintlayout.widget.ConstraintLayout; 13 | 14 | import java.util.concurrent.atomic.AtomicReference; 15 | 16 | import me.mamiiblt.instafel.R; 17 | 18 | public class Page extends ConstraintLayout { 19 | 20 | public Page(Context ctx) { 21 | super(ctx); 22 | init(ctx); 23 | } 24 | 25 | public Page(Context ctx, AttributeSet attrs) { 26 | super(ctx, attrs); 27 | init(ctx); 28 | } 29 | 30 | public Page(Context ctx, AttributeSet attrs, int defStyle) { 31 | super(ctx, attrs, defStyle); 32 | init(ctx); 33 | } 34 | 35 | public void init(Context ctx) { 36 | View rootView = LayoutInflater.from(ctx).inflate(R.layout.ifl_ui_page, this, true); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/DialogItem.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils; 2 | 3 | import android.widget.TextView; 4 | 5 | public class DialogItem { 6 | private final TextView textView; 7 | private final String string_name; 8 | 9 | public DialogItem(TextView textView, String string_name) { 10 | this.textView = textView; 11 | this.string_name = string_name; 12 | } 13 | 14 | public String getStringName() { 15 | return string_name; 16 | } 17 | 18 | public TextView getTextView() { 19 | return textView; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/InstafelCrashHandler.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils; 2 | 3 | import android.content.Context; 4 | import android.widget.Toast; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | import me.mamiiblt.instafel.managers.CrashManager; 9 | 10 | public class InstafelCrashHandler implements Thread.UncaughtExceptionHandler { 11 | 12 | private Context mContext; 13 | public InstafelCrashHandler(Context context) { 14 | mContext = context; 15 | } 16 | 17 | @Override 18 | public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) { 19 | 20 | Toast.makeText(mContext, "Instafel crashed, crash log saved.", Toast.LENGTH_SHORT).show(); 21 | CrashManager crashManager = new CrashManager(mContext); 22 | crashManager.saveLog(e); 23 | 24 | android.os.Process.killProcess(android.os.Process.myPid()); 25 | System.exit(1); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/OpenIflMenu.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils; 2 | 3 | import android.view.View; 4 | 5 | public class OpenIflMenu implements View.OnLongClickListener { 6 | public OpenIflMenu() { 7 | super(); 8 | } 9 | 10 | @Override 11 | public boolean onLongClick(View view) { 12 | InitializeInstafel.startInstafel(); 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/PreferenceTypes.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils; 2 | 3 | public class PreferenceTypes { 4 | public static int INT = 1; 5 | public static int STRING = 2; 6 | public static int BOOLEAN = 3; 7 | public static int LONG = 4; 8 | } -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/Preferences.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils; 2 | 3 | public class Preferences { 4 | String id, name, type; 5 | 6 | public Preferences(String id, String name, String type) { 7 | this.id = id; 8 | this.name = name; 9 | this.type = type; 10 | } 11 | 12 | public String getId() { 13 | return id; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public String getType() { 21 | return type; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/dialog/InstafelDialogItem.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.dialog; 2 | 3 | import android.view.View; 4 | 5 | public class InstafelDialogItem { 6 | 7 | private String name; 8 | private View view; 9 | 10 | public String getName() { 11 | return name; 12 | } 13 | 14 | public View getView() { 15 | return view; 16 | } 17 | 18 | public InstafelDialogItem(String name, View view) { 19 | this.name = name; 20 | this.view = view; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/dialog/InstafelDialogMargins.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.dialog; 2 | 3 | import android.app.Activity; 4 | import android.util.TypedValue; 5 | 6 | public class InstafelDialogMargins { 7 | private int start, end; 8 | private Activity activity; 9 | 10 | public int getStart() { 11 | return convert(start); 12 | } 13 | 14 | public int getEnd() { 15 | return convert(end); 16 | } 17 | 18 | private int convert(int value) { 19 | return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, activity.getResources().getDisplayMetrics()); 20 | } 21 | 22 | public InstafelDialogMargins(Activity act, int start, int end) { 23 | this.activity = act; 24 | this.start = start; 25 | this.end = end; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/dialog/InstafelDialogTextType.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.dialog; 2 | 3 | public class InstafelDialogTextType { 4 | public static int TITLE = 0; 5 | public static int DESCRIPTION = 1; 6 | public static int SUBTEXT = 2; 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/dialog/StringInputViews.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.dialog; 2 | 3 | import android.widget.EditText; 4 | 5 | public class StringInputViews { 6 | 7 | private EditText editText; 8 | private InstafelDialog instafelDialog; 9 | 10 | public StringInputViews(EditText editText, InstafelDialog instafelDialog) { 11 | this.editText = editText; 12 | this.instafelDialog = instafelDialog; 13 | } 14 | 15 | public EditText getEditText() { 16 | return editText; 17 | } 18 | 19 | public InstafelDialog getInstafelDialog() { 20 | return instafelDialog; 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/models/AppData.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.models; 2 | 3 | public class AppData { 4 | private Object ifl_ver, ig_ver, ig_ver_code, ig_itype; 5 | 6 | public AppData(Object ifl_ver, Object ig_ver, Object ig_ver_code, Object ig_itype) { 7 | this.ifl_ver = ifl_ver; 8 | this.ig_ver = ig_ver; 9 | this.ig_ver_code = ig_ver_code; 10 | this.ig_itype = ig_itype; 11 | } 12 | 13 | public Object getIfl_ver() { 14 | return ifl_ver; 15 | } 16 | 17 | public Object getIg_ver() { 18 | return ig_ver; 19 | } 20 | 21 | public Object getIg_ver_code() { 22 | return ig_ver_code; 23 | } 24 | 25 | public Object getIg_itype() { 26 | return ig_itype; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/models/CrashData.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.models; 2 | 3 | public class CrashData { 4 | private Object msg, trace, className, date; 5 | 6 | public CrashData(Object msg, Object trace, Object className) { 7 | this.msg = msg; 8 | this.trace = trace; 9 | this.className = className; 10 | } 11 | 12 | public Object getMsg() { 13 | return msg; 14 | } 15 | 16 | public Object getTrace() { 17 | return trace; 18 | } 19 | 20 | public Object getClassName() { 21 | return className; 22 | } 23 | 24 | public Object getDate() { 25 | return date; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/me/mamiiblt/instafel/utils/models/DeviceData.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.utils.models; 2 | 3 | public class DeviceData { 4 | 5 | private Object aver, sdk, model, brand, product; 6 | 7 | public DeviceData(Object aver, Object sdk, Object model, Object brand, Object product) { 8 | this.aver = aver; 9 | this.sdk = sdk; 10 | this.model = model; 11 | this.brand = brand; 12 | this.product = product; 13 | } 14 | 15 | public Object getAver() { 16 | return aver; 17 | } 18 | 19 | public Object getSdk() { 20 | return sdk; 21 | } 22 | 23 | public Object getModel() { 24 | return model; 25 | } 26 | 27 | public Object getBrand() { 28 | return brand; 29 | } 30 | 31 | public Object getProduct() { 32 | return product; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_about.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_action.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_admin.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_amoled_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_android.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_applied_patches.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_approve_backup.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_arch.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_author.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_backup_analyzer.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_backup_export.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_backup_import.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_base.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_build_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_primary_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_primary_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_primary_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_secondary_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_secondary_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_button_secondary_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_chat.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 17 | 24 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_deletelog.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_developer.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_device.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_dg_ota_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_edittext_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_export_path.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_filename.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_az.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 21 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_de.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_el.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_fr.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_hi.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_hu.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_pt.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_flag_tr.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_generation_id.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_genid.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_github.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 17 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_guide.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 17 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_handbook.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 17 | 24 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_instagram.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_libraries.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_library_backup.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_library_flags.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_misc.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_open_in_browser.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_ota_expand.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_ota_refresh.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_ota_refresh_2.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 17 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_progress_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_progress_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_progress_circle_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_remove_ads.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_social_github.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_social_instagram.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_social_medium.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_social_x.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_telegram.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ifl_tick.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/ifl_ui_loadingbar.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/ifl_ui_page.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/ifl_ui_pagecontentarea.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/ifl_ui_tiletitle.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi/ifl_ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi/ifl_ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ifl_ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-hdpi/ifl_ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ifl_ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-hdpi/ifl_ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ifl_ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-mdpi/ifl_ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ifl_ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-mdpi/ifl_ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ifl_ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xhdpi/ifl_ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ifl_ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xhdpi/ifl_ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ifl_ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xxhdpi/ifl_ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ifl_ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xxhdpi/ifl_ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ifl_ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xxxhdpi/ifl_ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ifl_ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xxxhdpi/ifl_ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ig_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/app/src/main/res/mipmap-xxxhdpi/ig_launcher_background.png -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #212328 4 | #FFFFFFFF 5 | #FFEB3B 6 | 7 | 8 | #949494 9 | #0C0F14 10 | #25282D 11 | 12 | #12151B 13 | #FFFFFF 14 | #DFDFDF 15 | 16 | #949494 17 | #000000 18 | #1A1C1F 19 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/src/test/java/me/mamiiblt/instafel/updater/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build-patcher.sh: -------------------------------------------------------------------------------- 1 | ./gradlew :patcher:core:build-jar 2 | ./gradlew :patcher:cli:build-jar 3 | -------------------------------------------------------------------------------- /gplayapi/README.md: -------------------------------------------------------------------------------- 1 | # Instafel GPlayAPI 2 | 3 | This project used to grab latest Instagram apks from Google Play 4 | 5 | # How to run 6 | 7 | First of all, you need to update properties file with your credentials (you need to crate a file named 'gplayapi.properties' in me.mamiiblt.instafel.gplayapi's [resource folder](https://github.com/mamiiblt/instafel-gplayapi/tree/main/src/main/resources/)) 8 | 9 | ```properties 10 | email = 11 | aas_token = aas_et/..... 12 | ``` 13 | > You need to get AAS Token from [Aurora's Authenticator](https://github.com/whyorean/Authenticator/releases/latest) app. 14 | 15 | > Instafel GPlayapi needs github_pat, github_releases_link and telegram_bot_token for normally, you can customize for your jobs too. 16 | 17 | You are ready to use Aurora Store's GPlayAPI now! 18 | 19 | # How to build 20 | 21 | You can build project with `./gradlew :instafel.gplayapi:build-jar` command. Output JAR will be saved in `/instafel.gplayapi/output/ifl-gplayapi-..-snapshot.jar` format 22 | 23 | # Don't Forget 24 | 25 | Thanks [AuroraOSS/gplayapi](https://gitlab.com/AuroraOSS/gplayapi) for made this project possible. -------------------------------------------------------------------------------- /gplayapi/src/main/java/me/mamiiblt/instafel/gplayapi/Main.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.gplayapi; 2 | 3 | import me.mamiiblt.instafel.gplayapi.utils.ExceptionHandler; 4 | import me.mamiiblt.instafel.gplayapi.utils.Log; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws Exception { 9 | 10 | Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler()); // set an uncaught exception handler for abnormal status 11 | 12 | Log.println("I", "Instafel GplayApi"); 13 | 14 | // load email & aas token from gplayapi.properties 15 | Env.updateEnvironment(); 16 | // set device config (you can get device props from https://gitlab.com/AuroraOSS/gplayapi , And don't forget to import prop file into resources) 17 | Env.updateDeviceProp("gplayapi_px_3a.properties"); 18 | // this method starts checker, you can customize it whatever you want :) 19 | Env.startChecker(); 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /gplayapi/src/main/java/me/mamiiblt/instafel/gplayapi/utils/ExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.gplayapi.utils; 2 | 3 | public class ExceptionHandler implements Thread.UncaughtExceptionHandler { 4 | @Override 5 | public void uncaughtException(Thread t, Throwable e) { 6 | e.printStackTrace(); 7 | Log.print("E", e.getMessage()); 8 | System.exit(-1); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gplayapi/src/main/java/me/mamiiblt/instafel/gplayapi/utils/General.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.gplayapi.utils; 2 | 3 | import com.aurora.gplayapi.data.models.AuthData; 4 | import com.aurora.gplayapi.helpers.AuthHelper; 5 | 6 | import java.nio.file.Paths; 7 | import java.util.Properties; 8 | 9 | public class General { 10 | public static AuthData authenticateUser(String email, String aasKey, Properties deviceProp) { 11 | try { 12 | AuthData authData = AuthHelper.Companion.build(email, aasKey, deviceProp); 13 | return authData; 14 | } catch (Exception e) { 15 | e.printStackTrace(); 16 | System.exit(-1); 17 | return null; 18 | } 19 | } 20 | 21 | public static String mergePaths(String basePath, String... args) { 22 | return Paths.get(basePath, args).toString(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gplayapi/src/main/java/me/mamiiblt/instafel/gplayapi/utils/Log.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.gplayapi.utils; 2 | 3 | public class Log { 4 | 5 | public static void print(String tag, String msg) { 6 | System.out.print(tag + " : " + msg); 7 | } 8 | 9 | public static void println(String tag, String msg) { 10 | System.out.println(tag + " : " + msg); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # This file was generated by the Gradle 'init' task. 2 | # https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties 3 | 4 | org.gradle.configuration-cache=false 5 | org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 6 | android.useAndroidX=true 7 | android.nonTransitiveRClass=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /patcher/cli/src/main/java/me/mamiiblt/instafel/patcher/cli/Main.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.cli; 2 | 3 | import me.mamiiblt.instafel.patcher.cli.handlers.CommandHandler; 4 | import me.mamiiblt.instafel.patcher.cli.handlers.CoreHandler; 5 | import me.mamiiblt.instafel.patcher.cli.utils.Log; 6 | import me.mamiiblt.instafel.patcher.cli.utils.Utils; 7 | 8 | public class Main { 9 | public static void main(String[] args) { 10 | 11 | System.setProperty("java.awt.headless", "true"); 12 | System.setProperty("jdk.nio.zipfs.allowDotZipEntry", "true"); 13 | System.setProperty("jdk.util.zip.disableZip64ExtraFieldValidation", "true"); 14 | 15 | Log.setupLogger(); 16 | Utils.readPatcherProps(); 17 | Utils.printPatcherHeader(); 18 | new CoreHandler(); 19 | new CommandHandler(args); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /patcher/cli/src/main/java/me/mamiiblt/instafel/patcher/cli/commands/AboutCmd.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.cli.commands; 2 | 3 | import brut.androlib.ApktoolProperties; 4 | import me.mamiiblt.instafel.patcher.cli.handlers.Command; 5 | import me.mamiiblt.instafel.patcher.cli.utils.Utils; 6 | 7 | public class AboutCmd implements Command { 8 | 9 | @Override 10 | public void execute(String[] args) { 11 | String[] helpLines = { 12 | "CLI Version : v" + Utils.PROP_CLI_VERSION + " (" + Utils.PROP_CLI_PROJECT_TAG + ")", 13 | "CLI Commit : " + Utils.PROP_CLI_COMMIT_HASH + "@" + Utils.PROP_CLI_PROJECT_BRANCH, 14 | "Core Commit : " + Utils.PROP_CORE_COMMIT + "@" + Utils.PROP_CORE_BRANCH, 15 | "Apktool Ver. : v" + ApktoolProperties.getVersion(), 16 | "Baksmali Ver. : v" + ApktoolProperties.getBaksmaliVersion(), 17 | "Telegram : t.me/instafel", 18 | "Repository : github.com/mamiiblt/instafel", 19 | "", 20 | "Developed with ❤️ by mamiiblt" 21 | }; 22 | 23 | for (String line : helpLines) { 24 | System.out.println(line); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /patcher/cli/src/main/java/me/mamiiblt/instafel/patcher/cli/commands/ClearPatcherCache.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.cli.commands; 2 | 3 | import java.io.File; 4 | 5 | import org.apache.commons.io.FileUtils; 6 | 7 | import me.mamiiblt.instafel.patcher.cli.handlers.Command; 8 | import me.mamiiblt.instafel.patcher.cli.utils.Log; 9 | import me.mamiiblt.instafel.patcher.cli.utils.Utils; 10 | 11 | public class ClearPatcherCache implements Command { 12 | 13 | @Override 14 | public void execute(String[] args) { 15 | try { 16 | File cacheFolder = new File(Utils.getPatcherFolder()); 17 | Log.info("Cache folder path is " + cacheFolder.getAbsolutePath()); 18 | if (cacheFolder.exists()) { 19 | FileUtils.deleteDirectory(cacheFolder); 20 | Log.info("Cache folder deleted succesfully."); 21 | } else { 22 | Log.warning("No any cache folder found."); 23 | } 24 | } catch (Exception e) { 25 | e.printStackTrace(); 26 | Log.severe("Error while clearing cache folder."); 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /patcher/cli/src/main/java/me/mamiiblt/instafel/patcher/cli/handlers/Command.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.cli.handlers; 2 | 3 | public interface Command { 4 | void execute(String[] args); 5 | } -------------------------------------------------------------------------------- /patcher/cli/src/main/java/me/mamiiblt/instafel/patcher/cli/utils/modals/UpdateInfo.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.cli.utils.modals; 2 | 3 | public class UpdateInfo { 4 | public String commit, supported_pversion; 5 | } -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/ResourceType.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class ResourceType { 6 | public Element element; 7 | 8 | public ResourceType(Element element) { 9 | this.element = element; 10 | } 11 | 12 | public Element getElement() { 13 | return this.element; 14 | } 15 | 16 | public void setElement(Element element) { 17 | this.element = element; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TAttr.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TAttr extends ResourceType { 6 | 7 | public TAttr(Element element) { 8 | super(element); 9 | } 10 | 11 | public String getName() { 12 | return element.getAttribute("name"); 13 | } 14 | 15 | public String getFormat() { 16 | return element.getAttribute("format"); 17 | } 18 | 19 | public void setName(String newVal) { 20 | element.setAttribute("name", newVal); 21 | } 22 | 23 | public void setFormat(String newVal) { 24 | element.setAttribute("format", newVal); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TColor.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TColor extends ResourceType { 6 | 7 | public TColor(Element element) { 8 | super(element); 9 | } 10 | 11 | public String getName() { 12 | return element.getAttribute("name"); 13 | } 14 | 15 | public String getValue() { 16 | return element.getTextContent(); 17 | } 18 | 19 | public void setName(String newVal) { 20 | element.setAttribute("name", newVal); 21 | } 22 | 23 | public void setValue(String newVal) { 24 | element.setTextContent(newVal); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TId.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TId extends ResourceType { 6 | 7 | public TId(Element element) { 8 | super(element); 9 | } 10 | 11 | public String getType() { 12 | return element.getAttribute("type"); 13 | } 14 | 15 | public String getName() { 16 | return element.getAttribute("name"); 17 | } 18 | 19 | public void setType(String newVal) { 20 | element.setAttribute("type", newVal); 21 | } 22 | 23 | public void setName(String newVal) { 24 | element.setAttribute("name", newVal); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TPublic.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TPublic extends ResourceType { 6 | 7 | private long convertedID = 0; 8 | 9 | public TPublic(Element element) { 10 | super(element); 11 | } 12 | 13 | public String getType() { 14 | return element.getAttribute("type"); 15 | } 16 | 17 | public String getName() { 18 | return element.getAttribute("name"); 19 | } 20 | 21 | public String getId() { 22 | return element.getAttribute("id"); 23 | } 24 | 25 | public void setId(String val) { 26 | element.setAttribute("id", val); 27 | } 28 | 29 | public void setConvertedId(long id) { 30 | convertedID = id; 31 | } 32 | 33 | public long getConvertedId() { 34 | return convertedID; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TString.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TString extends ResourceType { 6 | 7 | public TString(Element element) { 8 | super(element); 9 | } 10 | 11 | public String getName() { 12 | return element.getAttribute("name"); 13 | } 14 | 15 | public String getValue() { 16 | return element.getTextContent(); 17 | } 18 | 19 | public void setName(String newVal) { 20 | element.setAttribute("name", newVal); 21 | } 22 | 23 | public void setValue(String newVal) { 24 | element.setTextContent(newVal); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/managers/resources/types/TStyle.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.managers.resources.types; 2 | 3 | import org.w3c.dom.Element; 4 | 5 | public class TStyle extends ResourceType { 6 | 7 | public TStyle(Element element) { 8 | super(element); 9 | } 10 | 11 | public String getName() { 12 | return element.getAttribute("name"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/patches/Clone.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.patches; 2 | 3 | import java.util.List; 4 | 5 | import me.mamiiblt.instafel.patcher.core.patches.clone.CloneGeneral; 6 | import me.mamiiblt.instafel.patcher.core.patches.clone.ClonePackageReplacer; 7 | import me.mamiiblt.instafel.patcher.core.utils.patch.InstafelPatch; 8 | import me.mamiiblt.instafel.patcher.core.utils.patch.InstafelPatchGroup; 9 | import me.mamiiblt.instafel.patcher.core.utils.patch.PInfos; 10 | 11 | @PInfos.PatchGroupInfo ( 12 | name = "Clone Patches", 13 | shortname = "clone", 14 | desc = "These patchs needs to be applied for generate clone in build.", 15 | author = "mamiiblt" 16 | ) 17 | public class Clone extends InstafelPatchGroup { 18 | 19 | @Override 20 | public List> initializePatches() throws Exception { 21 | return List.of( 22 | CloneGeneral.class, 23 | ClonePackageReplacer.class 24 | ); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/patches/InstafelStuffs.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.patches; 2 | 3 | import java.util.List; 4 | 5 | import me.mamiiblt.instafel.patcher.core.patches.general.*; 6 | import me.mamiiblt.instafel.patcher.core.utils.patch.*; 7 | 8 | @PInfos.PatchGroupInfo( 9 | name = "Instafel Stuffs", 10 | shortname = "instafel", 11 | desc = "You can add Instafel stuffs with this patches.", 12 | author = "mamiiblt" 13 | ) 14 | public class InstafelStuffs extends InstafelPatchGroup { 15 | 16 | @Override 17 | public List> initializePatches() throws Exception { 18 | return List.of( 19 | GetGenerationInfo.class, // get_generation_info 20 | CopyInstafelSources.class, // copy_instafel_src 21 | AddInitInstafel.class, // add_init_instafel 22 | AddLongClickEvent.class, // add_long_click_event 23 | AddAppTrigger.class // add_app_trigger 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/utils/models/LineData.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.utils.models; 2 | 3 | public class LineData { 4 | 5 | private int num; 6 | private String content; 7 | 8 | public LineData(int num, String content) { 9 | this.num = num; 10 | this.content = content; 11 | } 12 | 13 | public String getContent() { 14 | return this.content; 15 | } 16 | 17 | public int getNum() { 18 | return this.num; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/utils/patch/InstafelTask.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.utils.patch; 2 | 3 | import me.mamiiblt.instafel.patcher.core.utils.Env; 4 | import me.mamiiblt.instafel.patcher.core.utils.Log; 5 | 6 | public abstract class InstafelTask { 7 | public String stepName; 8 | public int taskStatus = 0; 9 | public String finishString; 10 | 11 | public InstafelTask(String stepName) { 12 | this.stepName = stepName; 13 | } 14 | 15 | public abstract void execute() throws Exception; 16 | 17 | public void success(String message) { 18 | taskStatus = 1; 19 | finishString = message; 20 | finishTask(); 21 | } 22 | 23 | public void failure(String message) { 24 | taskStatus = 2; 25 | finishString = message; 26 | finishTask(); 27 | } 28 | 29 | private void finishTask() { 30 | if (taskStatus == 1) { 31 | Log.info("SUCCESS: " + finishString); 32 | } else if (taskStatus == 2) { 33 | Log.info("FAILURE: " + finishString); 34 | Log.info(Env.SPERATOR_STR); 35 | System.exit(-1); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /patcher/core/src/main/java/me/mamiiblt/instafel/patcher/core/utils/patch/PInfos.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.core.utils.patch; 2 | 3 | import java.lang.annotation.*; 4 | 5 | public class PInfos { 6 | 7 | @Retention(RetentionPolicy.RUNTIME) 8 | @Target(ElementType.TYPE) 9 | public @interface PatchInfo { 10 | String name(); 11 | String author(); 12 | String desc(); 13 | String shortname(); 14 | boolean isSingle(); 15 | } 16 | 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Target(ElementType.TYPE) 19 | public @interface PatchGroupInfo { 20 | String name(); 21 | String author(); 22 | String desc(); 23 | String shortname(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /patcher/core/src/main/resources/blacklisted_perms.json: -------------------------------------------------------------------------------- 1 | [ 2 | "com.google.android", 3 | "com.amazon.device", 4 | "com.instagram.direct", 5 | ".permission.RECEIVE_ADM_MESSAGE", 6 | "android.permission", 7 | "com.android", 8 | "com.htc", 9 | "com.huawei", 10 | "com.sonymobile", 11 | "com.sonyericsson", 12 | "android.hardware" 13 | ] -------------------------------------------------------------------------------- /patcher/core/src/main/resources/clone_assets/ifl_clone_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/clone_assets/ifl_clone_background.png -------------------------------------------------------------------------------- /patcher/core/src/main/resources/clone_assets/ifl_clone_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/clone_assets/ifl_clone_foreground.png -------------------------------------------------------------------------------- /patcher/core/src/main/resources/ifl_sources/ifl_resources.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/ifl_sources/ifl_resources.zip -------------------------------------------------------------------------------- /patcher/core/src/main/resources/ifl_sources/ifl_sources.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/ifl_sources/ifl_sources.zip -------------------------------------------------------------------------------- /patcher/core/src/main/resources/signing/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/signing/debug.keystore -------------------------------------------------------------------------------- /patcher/core/src/main/resources/signing/uber-apk-signer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/core/src/main/resources/signing/uber-apk-signer.zip -------------------------------------------------------------------------------- /patcher/core/src/main/resources/styling.xslt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/iflu_icon-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/iflu_icon-playstore.png -------------------------------------------------------------------------------- /patcher/mobile/src/main/java/me/mamiiblt/instafel/patcher/mobile/fragments/CoreFragment.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.mobile.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import androidx.fragment.app.Fragment; 9 | 10 | import me.mamiiblt.instafel.patcher.mobile.R; 11 | 12 | public class CoreFragment extends Fragment { 13 | @Override 14 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 15 | View view = inflater.inflate(R.layout.fragment_core, container, false); 16 | return view; 17 | } 18 | } -------------------------------------------------------------------------------- /patcher/mobile/src/main/java/me/mamiiblt/instafel/patcher/mobile/fragments/HomeFragment.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.mobile.fragments; 2 | 3 | import android.os.Bundle; 4 | import androidx.fragment.app.Fragment; 5 | 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import me.mamiiblt.instafel.patcher.mobile.R; 10 | 11 | public class HomeFragment extends Fragment { 12 | @Override 13 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 14 | View view = inflater.inflate(R.layout.fragment_home, container, false); 15 | return view; 16 | } 17 | } -------------------------------------------------------------------------------- /patcher/mobile/src/main/java/me/mamiiblt/instafel/patcher/mobile/fragments/PatchesFragment.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.patcher.mobile.fragments; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.fragment.app.Fragment; 6 | 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | 11 | import me.mamiiblt.instafel.patcher.mobile.R; 12 | 13 | public class PatchesFragment extends Fragment { 14 | @Override 15 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 16 | View view = inflater.inflate(R.layout.fragment_patches, container, false); 17 | return view; 18 | } 19 | } -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/app_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/create_issue.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/home.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/iflpm_icon_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/patches.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/reset_frameworks.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/source_code_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/drawable/test_keystore.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/layout/fragment_core.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/layout/fragment_patches.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/layout/m3_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/menu/bottom_nav_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 13 | 14 | 18 | 19 | 23 | 24 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-anydpi-v26/iflpm_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-anydpi-v26/iflpm_icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-hdpi/iflpm_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-hdpi/iflpm_icon.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-hdpi/iflpm_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-hdpi/iflpm_icon_round.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-mdpi/iflpm_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-mdpi/iflpm_icon.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-mdpi/iflpm_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-mdpi/iflpm_icon_round.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xhdpi/iflpm_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xhdpi/iflpm_icon.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xhdpi/iflpm_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xhdpi/iflpm_icon_round.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xxhdpi/iflpm_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xxhdpi/iflpm_icon.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xxhdpi/iflpm_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xxhdpi/iflpm_icon_round.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xxxhdpi/iflpm_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xxxhdpi/iflpm_icon.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/mipmap-xxxhdpi/iflpm_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/patcher/mobile/src/main/res/mipmap-xxxhdpi/iflpm_icon_round.webp -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | arm64-v8a (64-bit) 5 | armeabi-v7a (32-bit) 6 | 7 | 8 | 9 | Unclone 10 | Clone 11 | 12 | 13 | 14 | 2 hour 15 | 3 hour 16 | 4 hour 17 | 6 hour 18 | 8 hour 19 | 12 hour 20 | 14 hour 21 | 24 hour 22 | 23 | 24 | Use Device Language 25 | English (en_US) 26 | Türkçe (tr_TR) 27 | 28 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values/iflpm_icon_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ECE3D4 4 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Instafel Patcher 3 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /patcher/mobile/src/main/res/xml/iflpm_file_provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /updater/src/androidTest/java/me/mamiiblt/instafel/updater/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.updater; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("me.mamiiblt.instafel.updater", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /updater/src/main/aidl/me/mamiiblt/instafel/updater/IUserService.aidl: -------------------------------------------------------------------------------- 1 | // IUserService.aidl 2 | package me.mamiiblt.instafel.updater; 3 | 4 | interface IUserService { 5 | 6 | void destroy() = 16777114; // Destroy method defined by Shizuku server 7 | 8 | String executeShellCommand(String command) = 0; 9 | } 10 | -------------------------------------------------------------------------------- /updater/src/main/iflu_icon-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/iflu_icon-playstore.png -------------------------------------------------------------------------------- /updater/src/main/java/me/mamiiblt/instafel/updater/App.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.updater; 2 | 3 | import android.app.Application; 4 | 5 | import me.mamiiblt.instafel.updater.utils.LocalizationUtils; 6 | 7 | public class App extends Application { 8 | @Override 9 | public void onCreate() { 10 | 11 | super.onCreate(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /updater/src/main/java/me/mamiiblt/instafel/updater/utils/AppPreferences.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.updater.utils; 2 | 3 | public class AppPreferences { 4 | private boolean send_notification, use_mobile_data, hour_mode12, disable_error_notifications, crash_logger; 5 | 6 | public AppPreferences(boolean send_notification, boolean use_mobile_data, boolean hour_mode12, boolean disable_error_notifications, boolean crash_logger) { 7 | this.send_notification = send_notification; 8 | this.use_mobile_data = use_mobile_data; 9 | this.hour_mode12 = hour_mode12; 10 | this.disable_error_notifications = disable_error_notifications; 11 | this.crash_logger = crash_logger; 12 | } 13 | 14 | public boolean isAllowNotification() { 15 | return send_notification; 16 | } 17 | 18 | public boolean isAllowUseMobileData() { 19 | return use_mobile_data; 20 | } 21 | 22 | public boolean isAllow12HourMode() { 23 | return hour_mode12; 24 | } 25 | 26 | public boolean isCrashLoggerEnabled() { 27 | return crash_logger; 28 | } 29 | 30 | public boolean isDisable_error_notifications() { 31 | return disable_error_notifications; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /updater/src/main/java/me/mamiiblt/instafel/updater/utils/CommandOutput.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.updater.utils; 2 | 3 | public class CommandOutput { 4 | 5 | int exitCode; 6 | String log, errorLog; 7 | 8 | public CommandOutput(int exitCode, String log, String errorLog) { 9 | this.exitCode = exitCode; 10 | this.log = log; 11 | this.errorLog = errorLog; 12 | } 13 | 14 | public int getExitCode() { 15 | return exitCode; 16 | } 17 | 18 | public String getLog() { 19 | return log; 20 | } 21 | 22 | public String getErrorLog() { 23 | return errorLog; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/alert.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/app_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/baseline_battery_alert_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/battery_status.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/clear_logs.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/create_issue.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/iflu_icon_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/info.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/installing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/language.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/restart.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/root.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/send_notification.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/source_code_1.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/source_code_2.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/start.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/status.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/stop.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/update_success.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /updater/src/main/res/drawable/updater_guide.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/layout/m3_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /updater/src/main/res/menu/bottom_nav_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-anydpi-v26/iflu_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-anydpi-v26/iflu_icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-hdpi/iflu_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-hdpi/iflu_icon.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-hdpi/iflu_icon_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-hdpi/iflu_icon_background.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-hdpi/iflu_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-hdpi/iflu_icon_round.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-mdpi/iflu_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-mdpi/iflu_icon.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-mdpi/iflu_icon_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-mdpi/iflu_icon_background.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-mdpi/iflu_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-mdpi/iflu_icon_round.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xhdpi/iflu_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xhdpi/iflu_icon.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xhdpi/iflu_icon_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xhdpi/iflu_icon_background.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xhdpi/iflu_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xhdpi/iflu_icon_round.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxhdpi/iflu_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxhdpi/iflu_icon.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxhdpi/iflu_icon_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxhdpi/iflu_icon_background.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxhdpi/iflu_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxhdpi/iflu_icon_round.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxxhdpi/iflu_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxxhdpi/iflu_icon.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxxhdpi/iflu_icon_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxxhdpi/iflu_icon_background.webp -------------------------------------------------------------------------------- /updater/src/main/res/mipmap-xxxhdpi/iflu_icon_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/updater/src/main/res/mipmap-xxxhdpi/iflu_icon_round.webp -------------------------------------------------------------------------------- /updater/src/main/res/navigation/nav_graph.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 19 | 20 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /updater/src/main/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /updater/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /updater/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | arm64-v8a (64-bit) 5 | armeabi-v7a (32-bit) 6 | 7 | 8 | 9 | Unclone 10 | Clone 11 | 12 | 13 | 14 | 2 hour 15 | 3 hour 16 | 4 hour 17 | 6 hour 18 | 8 hour 19 | 12 hour 20 | 14 hour 21 | 24 hour 22 | 23 | 24 | Use Device Language 25 | English (en_US) 26 | Türkçe (tr_TR) 27 | 28 | -------------------------------------------------------------------------------- /updater/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | -------------------------------------------------------------------------------- /updater/src/main/res/values/iflu_icon_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #ECE3D4 4 | -------------------------------------------------------------------------------- /updater/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /updater/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /updater/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /updater/src/main/res/xml/iflu_file_provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /updater/src/test/java/me/mamiiblt/instafel/updater/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package me.mamiiblt.instafel.updater; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /website/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next" 3 | } 4 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | 20 | # production 21 | /build 22 | 23 | # misc 24 | .DS_Store 25 | *.pem 26 | 27 | # debug 28 | npm-debug.log* 29 | yarn-debug.log* 30 | yarn-error.log* 31 | .pnpm-debug.log* 32 | 33 | # env files 34 | .env* 35 | !.env.example 36 | 37 | # vercel 38 | .vercel 39 | 40 | # typescript 41 | *.tsbuildinfo 42 | next-env.d.ts 43 | -------------------------------------------------------------------------------- /website/build.gradle.kts: -------------------------------------------------------------------------------- 1 | group = "me.mamiiblt.instafel" 2 | version = "latest-website" 3 | -------------------------------------------------------------------------------- /website/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "src/app/globals.css", 9 | "baseColor": "stone", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /website/next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | 3 | const nextConfig: NextConfig = { 4 | webpack(config) { 5 | config.resolve.fallback = { 6 | ...config.resolve.fallback, 7 | 8 | fs: false, 9 | }; 10 | return config; 11 | }, 12 | images: { 13 | remotePatterns: [ 14 | { 15 | protocol: "https", 16 | hostname: "raw.githubusercontent.com", 17 | pathname: "/**", 18 | }, 19 | ], 20 | }, 21 | env: { 22 | NEXT_PUBLIC_SITE_URL: "https://instafel.mamiiblt.me", 23 | }, 24 | redirects: async () => { 25 | return [ 26 | { 27 | source: "/home", 28 | destination: "/", 29 | permanent: true, 30 | }, 31 | { 32 | source: "/guide", 33 | destination: "/guides", 34 | permanent: true, 35 | }, 36 | ]; 37 | }, 38 | }; 39 | 40 | export default nextConfig; 41 | -------------------------------------------------------------------------------- /website/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | '@tailwindcss/postcss': {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /website/public/content/gassets/instafel-guide/instafel-menu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/content/gassets/instafel-guide/instafel-menu.jpg -------------------------------------------------------------------------------- /website/public/content/gassets/instafel-guide/menu-access.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/content/gassets/instafel-guide/menu-access.jpg -------------------------------------------------------------------------------- /website/public/instafel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/instafel.jpg -------------------------------------------------------------------------------- /website/public/mockups/mockup_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/mockups/mockup_dark.png -------------------------------------------------------------------------------- /website/public/mockups/mockup_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/mockups/mockup_light.png -------------------------------------------------------------------------------- /website/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | # Sitemap URL 5 | Sitemap: https://mamiiblt.me/sitemap.xml 6 | -------------------------------------------------------------------------------- /website/public/web-app-manifest-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/web-app-manifest-192x192.png -------------------------------------------------------------------------------- /website/public/web-app-manifest-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/public/web-app-manifest-512x512.png -------------------------------------------------------------------------------- /website/src/app/[lng]/about_updater/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `About Updater`, 7 | description: 8 | "Automatically update Instafel with Shizuku and Root as an additional alternative to the in-app OTA system", 9 | }; 10 | 11 | export default function AboutLayout({ 12 | children, 13 | }: { 14 | children: React.ReactNode; 15 | }) { 16 | return ( 17 |
18 | {children} 19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /website/src/app/[lng]/backup/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Backup Info`, 7 | description: "This backup is available on Instafel Library!", 8 | }; 9 | 10 | export default function BackupLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/download/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Download Instafel`, 7 | description: "Download Instafel", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/flag/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Backups`, 7 | description: "You can find all backups in here!", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/flags/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Backups`, 7 | description: "You can find all backups in here!", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/guides/[id]/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Guide`, 7 | description: "Learn everything about Instafel!", 8 | }; 9 | 10 | export default function GuideDetailLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/guides/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Guide`, 7 | description: "Learn everything about Instafel!", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Geist } from "next/font/google"; 2 | import "@/app/globals.css"; 3 | import { ThemeProvider } from "@/components/providers/theme-provider"; 4 | import Navbar from "@/components/Navbar"; 5 | import { SITE_CONFIG } from "@/config/config"; 6 | import { Toaster } from "@/components/ui/toaster"; 7 | import { defaultMetadata } from "@/config/metadata"; 8 | const appleTitle = SITE_CONFIG.siteName; 9 | const geist = Geist({ 10 | subsets: ["latin"], 11 | }); 12 | 13 | export const metadata = defaultMetadata; 14 | 15 | export default function RootLayout({ 16 | children, 17 | }: Readonly<{ 18 | children: React.ReactNode; 19 | }>) { 20 | return ( 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 |
{children}
32 |
33 | 34 | 35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /website/src/app/[lng]/library_backup/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Backups`, 7 | description: "You can find all backups in here!", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/[lng]/library_flag/layout.tsx: -------------------------------------------------------------------------------- 1 | import { Metadata } from "next"; 2 | import { defaultMetadata } from "@/config/metadata"; 3 | 4 | export const metadata: Metadata = { 5 | ...defaultMetadata, 6 | title: `Instafel Backups`, 7 | description: "You can find all backups in here!", 8 | }; 9 | 10 | export default function AboutLayout({ 11 | children, 12 | }: { 13 | children: React.ReactNode; 14 | }) { 15 | return ( 16 |
17 | {children} 18 |
19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /website/src/app/api/guide/route.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from "next/server"; 2 | import { getAllPostsSync, getPostByIdSync } from "@/lib/guide"; 3 | 4 | export async function GET(request: Request) { 5 | const { searchParams } = new URL(request.url); 6 | const id = searchParams.get("id"); 7 | 8 | if (id) { 9 | const post = getPostByIdSync(id); 10 | return NextResponse.json(post || { error: "Post not found" }); 11 | } else { 12 | const posts = getAllPostsSync(); 13 | return NextResponse.json(posts); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /website/src/app/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/src/app/apple-icon.png -------------------------------------------------------------------------------- /website/src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/src/app/favicon.ico -------------------------------------------------------------------------------- /website/src/app/icon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mamiiblt/instafel/fa687876698685edf0a617dc780c7e1a3a249e86/website/src/app/icon1.png -------------------------------------------------------------------------------- /website/src/app/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Instafel", 3 | "short_name": "Instafel", 4 | "icons": [ 5 | { 6 | "src": "/web-app-manifest-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png", 9 | "purpose": "maskable" 10 | }, 11 | { 12 | "src": "/web-app-manifest-512x512.png", 13 | "sizes": "512x512", 14 | "type": "image/png", 15 | "purpose": "maskable" 16 | } 17 | ], 18 | "theme_color": "#ffffff", 19 | "background_color": "#ffffff", 20 | "display": "standalone" 21 | } -------------------------------------------------------------------------------- /website/src/app/sitemap.ts: -------------------------------------------------------------------------------- 1 | import { MetadataRoute } from "next"; 2 | 3 | const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || ""; 4 | if (!baseUrl) { 5 | throw new Error("NEXT_PUBLIC_SITE_URL is not defined"); 6 | } 7 | 8 | export default async function sitemap(): Promise { 9 | const routes = ["", "/library_backup", "/about_updater", "/download"].map( 10 | (route) => ({ 11 | url: `${baseUrl}${route}`, 12 | lastModified: new Date(), 13 | changeFrequency: "monthly" as const, 14 | priority: route === "" ? 1 : 0.8, 15 | }) 16 | ); 17 | 18 | return [...routes]; 19 | } 20 | -------------------------------------------------------------------------------- /website/src/components/HomeMockup.tsx: -------------------------------------------------------------------------------- 1 | import { useTheme } from "next-themes"; 2 | import Image from "next/image"; 3 | import { useEffect, useState } from "react"; 4 | 5 | export default function HomeMockup() { 6 | const { theme, resolvedTheme } = useTheme(); 7 | const [mounted, setMounted] = useState(false); 8 | 9 | useEffect(() => setMounted(true), []); 10 | 11 | if (!mounted) return null; 12 | 13 | const currentTheme = theme === "system" ? resolvedTheme : theme; 14 | const imageSrc = 15 | currentTheme === "dark" 16 | ? "/mockups/mockup_dark.png" 17 | : "/mockups/mockup_light.png"; 18 | 19 | return ( 20 | Instafel App Mockup 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /website/src/components/Icons.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | interface IconProps extends React.SVGProps { 4 | size?: number; 5 | color?: string; 6 | } 7 | const defaultIconProps: IconProps = { 8 | size: 24, 9 | color: "currentColor", 10 | strokeWidth: 2, 11 | strokeLinecap: "round", 12 | strokeLinejoin: "round", 13 | }; 14 | 15 | const createIcon = (path: React.ReactNode) => { 16 | const IconComponent = ({ 17 | size = 24, 18 | color = "currentColor", 19 | ...props 20 | }: IconProps) => ( 21 | 34 | {path} 35 | 36 | ); 37 | 38 | IconComponent.displayName = "IconComponent"; 39 | return IconComponent; 40 | }; 41 | -------------------------------------------------------------------------------- /website/src/components/ifl.tsx: -------------------------------------------------------------------------------- 1 | export function LoadingBar() { 2 | return ( 3 |
4 |
5 |
6 |
7 |
8 | ); 9 | } 10 | 11 | export function LoadingBarNotCenter() { 12 | return ( 13 |
14 |
15 |
16 |
17 |
18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /website/src/components/loading/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./navbar-loading"; 2 | export * from "./footer-loading"; 3 | -------------------------------------------------------------------------------- /website/src/components/providers/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import { ThemeProvider as NextThemesProvider } from "next-themes"; 5 | import { type ThemeProviderProps } from "next-themes"; 6 | 7 | export function ThemeProvider({ children, ...props }: ThemeProviderProps) { 8 | const [mounted, setMounted] = React.useState(false); 9 | 10 | React.useEffect(() => { 11 | setMounted(true); 12 | }, []); 13 | 14 | return ( 15 | 21 | {mounted ? ( 22 | children 23 | ) : ( 24 |
{children}
25 | )} 26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /website/src/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import { cn } from "@/lib/utils"; 5 | 6 | export interface InputProps 7 | extends React.InputHTMLAttributes {} 8 | 9 | const Input = React.forwardRef( 10 | ({ className, type, ...props }, ref) => { 11 | return ( 12 | 21 | ); 22 | } 23 | ); 24 | Input.displayName = "Input"; 25 | 26 | export { Input }; 27 | -------------------------------------------------------------------------------- /website/src/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import * as LabelPrimitive from "@radix-ui/react-label"; 5 | import { cva, type VariantProps } from "class-variance-authority"; 6 | import { cn } from "@/lib/utils"; 7 | 8 | const labelVariants = cva( 9 | "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" 10 | ); 11 | 12 | const Label = React.forwardRef< 13 | React.ComponentRef, 14 | React.ComponentPropsWithoutRef & 15 | VariantProps 16 | >(({ className, ...props }, ref) => ( 17 | 22 | )); 23 | Label.displayName = LabelPrimitive.Root.displayName; 24 | 25 | export { Label }; 26 | -------------------------------------------------------------------------------- /website/src/components/ui/loading-spinner.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import { cn } from "@/lib/utils"; 5 | 6 | export function LoadingSpinner({ className }: { className?: string }) { 7 | return ( 8 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /website/src/components/ui/select.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import React from "react"; 4 | import { cn } from "@/lib/utils"; 5 | 6 | export interface SelectProps 7 | extends React.SelectHTMLAttributes {} 8 | 9 | const Select = React.forwardRef( 10 | ({ className, ...props }, ref) => { 11 | return ( 12 |