├── .browserslistrc ├── .dockerignore ├── .editorconfig ├── .github ├── CODEOWNERS ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── build_release.yml │ ├── ci.yml │ ├── docker.yml │ ├── e2e.yml │ ├── release.yml │ └── semantic_pull_request.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .release-it.json ├── .vscode ├── extensions.json └── settings.json ├── CONTRIBUTING.md ├── Dockerfile ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── android ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── capacitor.build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── getcapacitor │ │ │ └── myapp │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── app │ │ │ │ └── vger │ │ │ │ └── voyager │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-land-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-land-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-land-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-hdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-ldpi │ │ │ └── splash.png │ │ │ ├── drawable-port-mdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xxhdpi │ │ │ └── splash.png │ │ │ ├── drawable-port-xxxhdpi │ │ │ └── splash.png │ │ │ ├── drawable │ │ │ ├── ic_launcher_monochrome.xml │ │ │ └── splash.png │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── galactic.xml │ │ │ ├── holidays.xml │ │ │ ├── ic_launcher.xml │ │ │ ├── original.xml │ │ │ ├── planetary.xml │ │ │ ├── pride.xml │ │ │ ├── psych.xml │ │ │ └── space.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── galactic.webp │ │ │ ├── galactic_background.webp │ │ │ ├── galactic_foreground.webp │ │ │ ├── galactic_round.webp │ │ │ ├── holidays.webp │ │ │ ├── holidays_background.webp │ │ │ ├── holidays_foreground.webp │ │ │ ├── holidays_round.webp │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_background.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ ├── ic_launcher_round.webp │ │ │ ├── original.webp │ │ │ ├── original_background.webp │ │ │ ├── original_foreground.webp │ │ │ ├── original_round.webp │ │ │ ├── planetary.webp │ │ │ ├── planetary_background.webp │ │ │ ├── planetary_foreground.webp │ │ │ ├── planetary_round.webp │ │ │ ├── pride.webp │ │ │ ├── pride_background.webp │ │ │ ├── pride_foreground.webp │ │ │ ├── pride_round.webp │ │ │ ├── psych.webp │ │ │ ├── psych_background.webp │ │ │ ├── psych_foreground.webp │ │ │ ├── psych_round.webp │ │ │ ├── space.webp │ │ │ ├── space_background.webp │ │ │ ├── space_foreground.webp │ │ │ └── space_round.webp │ │ │ ├── mipmap-mdpi │ │ │ ├── galactic.webp │ │ │ ├── galactic_background.webp │ │ │ ├── galactic_foreground.webp │ │ │ ├── galactic_round.webp │ │ │ ├── holidays.webp │ │ │ ├── holidays_background.webp │ │ │ ├── holidays_foreground.webp │ │ │ ├── holidays_round.webp │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_background.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ ├── ic_launcher_round.webp │ │ │ ├── original.webp │ │ │ ├── original_background.webp │ │ │ ├── original_foreground.webp │ │ │ ├── original_round.webp │ │ │ ├── planetary.webp │ │ │ ├── planetary_background.webp │ │ │ ├── planetary_foreground.webp │ │ │ ├── planetary_round.webp │ │ │ ├── pride.webp │ │ │ ├── pride_background.webp │ │ │ ├── pride_foreground.webp │ │ │ ├── pride_round.webp │ │ │ ├── psych.webp │ │ │ ├── psych_background.webp │ │ │ ├── psych_foreground.webp │ │ │ ├── psych_round.webp │ │ │ ├── space.webp │ │ │ ├── space_background.webp │ │ │ ├── space_foreground.webp │ │ │ └── space_round.webp │ │ │ ├── mipmap-xhdpi │ │ │ ├── galactic.webp │ │ │ ├── galactic_background.webp │ │ │ ├── galactic_foreground.webp │ │ │ ├── galactic_round.webp │ │ │ ├── holidays.webp │ │ │ ├── holidays_background.webp │ │ │ ├── holidays_foreground.webp │ │ │ ├── holidays_round.webp │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_background.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ ├── ic_launcher_round.webp │ │ │ ├── original.webp │ │ │ ├── original_background.webp │ │ │ ├── original_foreground.webp │ │ │ ├── original_round.webp │ │ │ ├── planetary.webp │ │ │ ├── planetary_background.webp │ │ │ ├── planetary_foreground.webp │ │ │ ├── planetary_round.webp │ │ │ ├── pride.webp │ │ │ ├── pride_background.webp │ │ │ ├── pride_foreground.webp │ │ │ ├── pride_round.webp │ │ │ ├── psych.webp │ │ │ ├── psych_background.webp │ │ │ ├── psych_foreground.webp │ │ │ ├── psych_round.webp │ │ │ ├── space.webp │ │ │ ├── space_background.webp │ │ │ ├── space_foreground.webp │ │ │ └── space_round.webp │ │ │ ├── mipmap-xxhdpi │ │ │ ├── galactic.webp │ │ │ ├── galactic_background.webp │ │ │ ├── galactic_foreground.webp │ │ │ ├── galactic_round.webp │ │ │ ├── holidays.webp │ │ │ ├── holidays_background.webp │ │ │ ├── holidays_foreground.webp │ │ │ ├── holidays_round.webp │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_background.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ ├── ic_launcher_round.webp │ │ │ ├── original.webp │ │ │ ├── original_background.webp │ │ │ ├── original_foreground.webp │ │ │ ├── original_round.webp │ │ │ ├── planetary.webp │ │ │ ├── planetary_background.webp │ │ │ ├── planetary_foreground.webp │ │ │ ├── planetary_round.webp │ │ │ ├── pride.webp │ │ │ ├── pride_background.webp │ │ │ ├── pride_foreground.webp │ │ │ ├── pride_round.webp │ │ │ ├── psych.webp │ │ │ ├── psych_background.webp │ │ │ ├── psych_foreground.webp │ │ │ ├── psych_round.webp │ │ │ ├── space.webp │ │ │ ├── space_background.webp │ │ │ ├── space_foreground.webp │ │ │ └── space_round.webp │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── galactic.webp │ │ │ ├── galactic_background.webp │ │ │ ├── galactic_foreground.webp │ │ │ ├── galactic_round.webp │ │ │ ├── holidays.webp │ │ │ ├── holidays_background.webp │ │ │ ├── holidays_foreground.webp │ │ │ ├── holidays_round.webp │ │ │ ├── ic_launcher.webp │ │ │ ├── ic_launcher_background.webp │ │ │ ├── ic_launcher_foreground.webp │ │ │ ├── ic_launcher_round.webp │ │ │ ├── original.webp │ │ │ ├── original_background.webp │ │ │ ├── original_foreground.webp │ │ │ ├── original_round.webp │ │ │ ├── planetary.webp │ │ │ ├── planetary_background.webp │ │ │ ├── planetary_foreground.webp │ │ │ ├── planetary_round.webp │ │ │ ├── pride.webp │ │ │ ├── pride_background.webp │ │ │ ├── pride_foreground.webp │ │ │ ├── pride_round.webp │ │ │ ├── psych.webp │ │ │ ├── psych_background.webp │ │ │ ├── psych_foreground.webp │ │ │ ├── psych_round.webp │ │ │ ├── space.webp │ │ │ ├── space_background.webp │ │ │ ├── space_foreground.webp │ │ │ └── space_round.webp │ │ │ ├── values │ │ │ ├── ic_launcher_background.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── file_paths.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── getcapacitor │ │ └── myapp │ │ └── ExampleUnitTest.java ├── build.gradle ├── capacitor.settings.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── variables.gradle ├── capacitor.config.ts ├── compilerOptions.js ├── e2e ├── ci │ ├── docker-compose.yml │ ├── lemmy.hjson │ └── nginx.conf ├── community-feed.spec.ts └── testdata │ └── posts.ts ├── eslint.config.js ├── fastlane ├── Appfile ├── Fastfile ├── Matchfile └── metadata │ └── android │ └── en-US │ ├── changelogs │ └── default.txt │ ├── full_description.txt │ ├── images │ ├── icon.png │ ├── phoneScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── sevenInchScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ └── tenInchScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png │ ├── short_description.txt │ └── title.txt ├── index.html ├── ionic.config.json ├── ios ├── .gitignore └── App │ ├── App.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── swiftpm │ │ │ └── Package.resolved │ └── xcshareddata │ │ └── xcschemes │ │ ├── App.xcscheme │ │ └── VoyagerWatch Watch App.xcscheme │ ├── App.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ ├── App │ ├── App.entitlements │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── Alt Icons │ │ │ ├── Contents.json │ │ │ ├── galactic_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ └── galactic.png │ │ │ ├── holidays_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── holidays.png │ │ │ │ ├── holidaysDark.png │ │ │ │ └── holidaysTinted.png │ │ │ ├── original_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ └── original.png │ │ │ ├── planetary_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── planetary.png │ │ │ │ ├── planetaryDark.png │ │ │ │ └── planetaryTinted.png │ │ │ ├── pride_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── pride.png │ │ │ │ ├── prideDark.png │ │ │ │ └── prideTinted.png │ │ │ ├── psych_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── psych.png │ │ │ │ ├── psychadelicTinted.png │ │ │ │ └── psychedelicDark.png │ │ │ └── space_v2.appiconset │ │ │ │ ├── Contents.json │ │ │ │ └── space.png │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon-1024@4x.png │ │ │ ├── Contents.json │ │ │ ├── dark.png │ │ │ └── tinted.png │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ └── Info.plist │ ├── CapApp-SPM │ ├── .gitignore │ ├── Package.swift │ ├── README.md │ └── Sources │ │ └── CapApp-SPM │ │ └── CapApp-SPM.swift │ ├── VoyagerActionExtension │ ├── Action.js │ ├── ActionRequestHandler.swift │ ├── Assets.xcassets │ │ ├── ActionIcon.appiconset │ │ │ ├── Contents.json │ │ │ └── actionicon.png │ │ └── Contents.json │ └── Info.plist │ └── VoyagerWatch Watch App │ ├── APIManager.swift │ ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── AppIcon-1024@4x.png │ │ └── Contents.json │ └── Contents.json │ ├── FeedView.swift │ ├── FeedViewModel.swift │ ├── HomeView.swift │ ├── PostUIView.swift │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ ├── VoyagerWatchApp.swift │ ├── WatchSessionManager.swift │ └── models │ ├── GetPostsResponse.swift │ ├── Post.swift │ ├── PostView.swift │ └── SavePost.swift ├── manifest.json ├── nginx.conf.template ├── package.json ├── patches ├── @capacitor__android.patch ├── @capacitor__haptics.patch └── @capacitor__keyboard.patch ├── playwright.config.ts ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── alternateIcons │ ├── galactic.png │ ├── holidays.png │ ├── original.png │ ├── planetary.png │ ├── pride.png │ ├── psych.png │ └── space.png ├── badges │ ├── fdroid.png │ ├── ios.svg │ ├── play.svg │ └── pwa.svg ├── favicons │ ├── 192.png │ └── 512.png ├── logo-1024.png ├── logo-maskable-minified.svg ├── logo-maskable.svg ├── logo-minified.svg ├── logo.png ├── logo.svg ├── promo.webp ├── screenshots │ └── android │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ └── 5.png ├── splash.html └── splash │ ├── apple-splash-1125-2436.png │ ├── apple-splash-1136-640.png │ ├── apple-splash-1170-2532.png │ ├── apple-splash-1179-2556.png │ ├── apple-splash-1242-2208.png │ ├── apple-splash-1242-2688.png │ ├── apple-splash-1284-2778.png │ ├── apple-splash-1290-2796.png │ ├── apple-splash-1334-750.png │ ├── apple-splash-1536-2048.png │ ├── apple-splash-1620-2160.png │ ├── apple-splash-1668-2224.png │ ├── apple-splash-1668-2388.png │ ├── apple-splash-1792-828.png │ ├── apple-splash-2048-1536.png │ ├── apple-splash-2048-2732.png │ ├── apple-splash-2160-1620.png │ ├── apple-splash-2208-1242.png │ ├── apple-splash-2224-1668.png │ ├── apple-splash-2388-1668.png │ ├── apple-splash-2436-1125.png │ ├── apple-splash-2532-1170.png │ ├── apple-splash-2556-1179.png │ ├── apple-splash-2688-1242.png │ ├── apple-splash-2732-2048.png │ ├── apple-splash-2778-1284.png │ ├── apple-splash-2796-1290.png │ ├── apple-splash-640-1136.png │ ├── apple-splash-750-1334.png │ ├── apple-splash-828-1792.png │ ├── apple-splash-dark-1125-2436.png │ ├── apple-splash-dark-1136-640.png │ ├── apple-splash-dark-1170-2532.png │ ├── apple-splash-dark-1179-2556.png │ ├── apple-splash-dark-1242-2208.png │ ├── apple-splash-dark-1242-2688.png │ ├── apple-splash-dark-1284-2778.png │ ├── apple-splash-dark-1290-2796.png │ ├── apple-splash-dark-1334-750.png │ ├── apple-splash-dark-1536-2048.png │ ├── apple-splash-dark-1620-2160.png │ ├── apple-splash-dark-1668-2224.png │ ├── apple-splash-dark-1668-2388.png │ ├── apple-splash-dark-1792-828.png │ ├── apple-splash-dark-2048-1536.png │ ├── apple-splash-dark-2048-2732.png │ ├── apple-splash-dark-2160-1620.png │ ├── apple-splash-dark-2208-1242.png │ ├── apple-splash-dark-2224-1668.png │ ├── apple-splash-dark-2388-1668.png │ ├── apple-splash-dark-2436-1125.png │ ├── apple-splash-dark-2532-1170.png │ ├── apple-splash-dark-2556-1179.png │ ├── apple-splash-dark-2688-1242.png │ ├── apple-splash-dark-2732-2048.png │ ├── apple-splash-dark-2778-1284.png │ ├── apple-splash-dark-2796-1290.png │ ├── apple-splash-dark-640-1136.png │ ├── apple-splash-dark-750-1334.png │ └── apple-splash-dark-828-1792.png ├── resources ├── icon-foreground.png ├── icon-only.png └── splash.png ├── scripts ├── disable_in_app_purchases.sh ├── docker_generate_config.sh ├── prebuild.sh ├── prerelease.sh └── release.sh ├── src ├── core │ ├── App.tsx │ ├── AppCrash.module.css │ ├── AppCrash.tsx │ ├── Auth.tsx │ ├── GlobalStyles.module.css │ ├── GlobalStyles.tsx │ ├── TabContext.tsx │ ├── globalCssOverrides.css │ ├── listeners │ │ ├── AndroidBackButton.tsx │ │ ├── AppUrlListener.tsx │ │ ├── DatabaseErrorListener.ts │ │ ├── HapticsListener.tsx │ │ ├── androidSafeArea.ts │ │ ├── db.ts │ │ ├── index.tsx │ │ ├── ionActivatable.ts │ │ ├── network │ │ │ ├── listener.ts │ │ │ ├── networkSlice.ts │ │ │ └── useShouldAutoplay.ts │ │ └── statusTap.ts │ ├── syntaxHighlights.css │ └── theme │ │ ├── AppThemes.ts │ │ ├── darkModifierVariables.css │ │ ├── darkVariables.css │ │ ├── lightVariables.css │ │ └── variables.css ├── features │ ├── auth │ │ ├── Account.tsx │ │ ├── AccountSwitcher.tsx │ │ ├── SharedDialogContext.module.css │ │ ├── SharedDialogContext.tsx │ │ ├── authSelectors.ts │ │ ├── authSlice.ts │ │ ├── login │ │ │ ├── LearnMore.module.css │ │ │ ├── LearnMore.tsx │ │ │ ├── LoginModal.module.css │ │ │ ├── LoginModal.tsx │ │ │ ├── LoginNav.tsx │ │ │ ├── data │ │ │ │ ├── README.md │ │ │ │ └── servers.ts │ │ │ ├── join │ │ │ │ ├── Captcha.module.css │ │ │ │ ├── Captcha.tsx │ │ │ │ ├── Join.tsx │ │ │ │ ├── Joined.tsx │ │ │ │ ├── Legal.tsx │ │ │ │ ├── Question.tsx │ │ │ │ └── joinSlice.ts │ │ │ ├── lemmyLogo.svg │ │ │ ├── login │ │ │ │ ├── Login.tsx │ │ │ │ ├── LoginAvatarImg.module.css │ │ │ │ ├── LoginAvatarImg.tsx │ │ │ │ ├── PickLoginServer.module.css │ │ │ │ ├── PickLoginServer.tsx │ │ │ │ └── Totp.tsx │ │ │ ├── pickJoinServer │ │ │ │ ├── Filters.module.css │ │ │ │ ├── Filters.tsx │ │ │ │ ├── PickJoinServer.module.css │ │ │ │ ├── PickJoinServer.tsx │ │ │ │ ├── pickJoinServerSlice.ts │ │ │ │ └── useStartJoinFlow.tsx │ │ │ └── welcome │ │ │ │ ├── AndroidClose.module.css │ │ │ │ ├── AndroidClose.tsx │ │ │ │ ├── Buttons.module.css │ │ │ │ ├── Buttons.tsx │ │ │ │ ├── Welcome.module.css │ │ │ │ ├── Welcome.tsx │ │ │ │ └── assets │ │ │ │ └── base.svg │ │ └── siteSlice.ts │ ├── comment │ │ ├── Comment.module.css │ │ ├── Comment.tsx │ │ ├── CommentContent.tsx │ │ ├── CommentEllipsis.module.css │ │ ├── CommentEllipsis.tsx │ │ ├── CommentHeader.module.css │ │ ├── CommentHeader.tsx │ │ ├── CommentLinks.module.css │ │ ├── CommentLinks.tsx │ │ ├── CommentMarkdown.tsx │ │ ├── CommentSort.tsx │ │ ├── ModActions.tsx │ │ ├── commentSlice.ts │ │ ├── elements │ │ │ ├── CommentContainer.module.css │ │ │ ├── CommentContainer.tsx │ │ │ ├── PositionedContainer.module.css │ │ │ └── PositionedContainer.tsx │ │ ├── inFeed │ │ │ └── FeedComment.tsx │ │ ├── inTree │ │ │ ├── CommentExpander.module.css │ │ │ ├── CommentExpander.tsx │ │ │ ├── CommentHr.module.css │ │ │ ├── CommentHr.tsx │ │ │ ├── CommentTree.tsx │ │ │ ├── Comments.module.css │ │ │ ├── Comments.tsx │ │ │ ├── CommentsContext.ts │ │ │ ├── ContinueThread.module.css │ │ │ ├── ContinueThread.tsx │ │ │ ├── FullyCollapsibleComment.tsx │ │ │ ├── JumpFab.tsx │ │ │ ├── LoadParentComments.module.css │ │ │ ├── LoadParentComments.tsx │ │ │ └── useCollapseRootComment.ts │ │ └── useCommentActions.ts │ ├── community │ │ ├── CommunitySummary.module.css │ │ ├── CommunitySummary.tsx │ │ ├── MoreActions.tsx │ │ ├── ToggleIcon.module.css │ │ ├── ToggleIcon.tsx │ │ ├── communitySlice.ts │ │ ├── list │ │ │ ├── AlphabetJump.module.css │ │ │ ├── AlphabetJump.tsx │ │ │ ├── CommunitiesList.tsx │ │ │ ├── CommunitiesListRedirectBootstrapper.tsx │ │ │ ├── EmptyCommunities.module.css │ │ │ ├── EmptyCommunities.tsx │ │ │ ├── GuestCommunitiesList.tsx │ │ │ ├── InitialPageRedirectBootstrapper.module.css │ │ │ ├── InitialPageRedirectBootstrapper.tsx │ │ │ ├── InstanceMoreActions.tsx │ │ │ ├── Item.tsx │ │ │ ├── LoggedInCommunitiesList.tsx │ │ │ ├── ResolvedCommunitiesList.module.css │ │ │ ├── ResolvedCommunitiesList.tsx │ │ │ ├── deepLinkReadySlice.tsx │ │ │ ├── items │ │ │ │ ├── CommunityListItem.module.css │ │ │ │ ├── CommunityListItem.tsx │ │ │ │ └── SpecialItem.tsx │ │ │ └── useShowModeratorFeed.ts │ │ ├── mod │ │ │ └── ModActions.tsx │ │ ├── search │ │ │ └── CommunitySearchResults.tsx │ │ ├── titleSearch │ │ │ ├── TitleSearch.module.css │ │ │ ├── TitleSearch.tsx │ │ │ ├── TitleSearchProvider.tsx │ │ │ ├── TitleSearchResults.module.css │ │ │ └── TitleSearchResults.tsx │ │ ├── useCommunityActions.tsx │ │ ├── useFetchCommunity.ts │ │ └── useGetRandomCommunity.ts │ ├── feed │ │ ├── CommunityFeed.tsx │ │ ├── ConversationsMoreActions.tsx │ │ ├── Feed.tsx │ │ ├── FeedContext.tsx │ │ ├── InboxFeed.tsx │ │ ├── ListingType.tsx │ │ ├── PageTypeContext.tsx │ │ ├── PostCommentFeed.module.css │ │ ├── PostCommentFeed.tsx │ │ ├── PostSort.tsx │ │ ├── SpecialFeedMoreActions.tsx │ │ ├── empty │ │ │ └── home │ │ │ │ ├── BulkSubscriber.tsx │ │ │ │ ├── EmptyHomeFeed.tsx │ │ │ │ ├── Pack.module.css │ │ │ │ ├── Pack.tsx │ │ │ │ ├── StarterPacksModal.tsx │ │ │ │ └── starterPackData.ts │ │ ├── endItems │ │ │ ├── EndPost.module.css │ │ │ ├── EndPost.tsx │ │ │ ├── FeedLoadMoreFailed.tsx │ │ │ ├── FetchMore.module.css │ │ │ └── FetchMore.tsx │ │ ├── helpers.ts │ │ ├── postFabs │ │ │ ├── HidePostsFab.tsx │ │ │ └── PostFabs.tsx │ │ ├── sort │ │ │ ├── feedSortSlice.tsx │ │ │ └── useFeedSort.tsx │ │ ├── useCommonPostFeedParams.ts │ │ ├── useFeedUpdate.ts │ │ ├── useHidePosts.tsx │ │ ├── useRangeChange.ts │ │ └── useResetHiddenPosts.ts │ ├── icons │ │ ├── index.ts │ │ └── svg │ │ │ ├── airplay.svg │ │ │ ├── bold.svg │ │ │ ├── calendarNineMonths.svg │ │ │ ├── calendarSingleDay.svg │ │ │ ├── calendarSixMonths.svg │ │ │ ├── calendarThreeMonths.svg │ │ │ ├── calendarWeek.svg │ │ │ ├── calendarYear.svg │ │ │ ├── clockBadgeOne.svg │ │ │ ├── clockBadgeSix.svg │ │ │ ├── clockBadgeTwelve.svg │ │ │ ├── faceid.svg │ │ │ ├── gesture.svg │ │ │ ├── italic.svg │ │ │ ├── listOrdered.svg │ │ │ ├── listUnordered.svg │ │ │ ├── pip.svg │ │ │ ├── quote.svg │ │ │ ├── strikethrough.svg │ │ │ ├── subscript.svg │ │ │ ├── superscript.svg │ │ │ └── trashEllipse.svg │ ├── inbox │ │ ├── BoxesRedirectBootstrapper.tsx │ │ ├── InboxItem.module.css │ │ ├── InboxItem.tsx │ │ ├── InboxItemMoreActions.module.css │ │ ├── InboxItemMoreActions.tsx │ │ ├── PrivateMessageMoreActions.module.css │ │ ├── PrivateMessageMoreActions.tsx │ │ ├── SendMessageBox.module.css │ │ ├── SendMessageBox.tsx │ │ ├── VoteArrow.module.css │ │ ├── VoteArrow.tsx │ │ ├── inboxSlice.ts │ │ └── messages │ │ │ ├── ConversationItem.module.css │ │ │ ├── ConversationItem.tsx │ │ │ ├── Message.module.css │ │ │ ├── Message.tsx │ │ │ └── Time.tsx │ ├── instances │ │ └── instancesSlice.tsx │ ├── labels │ │ ├── Ago.test.ts │ │ ├── Ago.tsx │ │ ├── Edited.module.css │ │ ├── Edited.tsx │ │ ├── Handle.module.css │ │ ├── Handle.tsx │ │ ├── Nsfw.module.css │ │ ├── Nsfw.tsx │ │ ├── Save.module.css │ │ ├── Save.tsx │ │ ├── VoteStat.tsx │ │ ├── formatDistanceShort.ts │ │ ├── img │ │ │ ├── ItemIcon.module.css │ │ │ └── ItemIcon.tsx │ │ ├── links │ │ │ ├── AgeBadge.tsx │ │ │ ├── AppBadge.module.css │ │ │ ├── CommunityLink.module.css │ │ │ ├── CommunityLink.tsx │ │ │ ├── PersonLink.module.css │ │ │ ├── PersonLink.tsx │ │ │ └── shared.module.css │ │ └── vote │ │ │ ├── HideVoteMode.tsx │ │ │ ├── SeparateVoteMode.tsx │ │ │ ├── TotalVoteMode.tsx │ │ │ ├── Vote.tsx │ │ │ ├── shared.module.css │ │ │ └── shared.ts │ ├── media │ │ ├── CachedImg.tsx │ │ ├── Media.tsx │ │ ├── MediaPlaceholder.module.css │ │ ├── MediaPlaceholder.tsx │ │ ├── external │ │ │ └── redgifs │ │ │ │ ├── LargeFeedRedgifMedia.module.css │ │ │ │ ├── LargeFeedRedgifMedia.tsx │ │ │ │ ├── helpers.ts │ │ │ │ └── redgifsSlice.ts │ │ ├── gallery │ │ │ ├── GalleryGif.tsx │ │ │ ├── GalleryImg.tsx │ │ │ ├── GalleryMedia.tsx │ │ │ ├── GalleryProvider.tsx │ │ │ └── actions │ │ │ │ ├── AltText.module.css │ │ │ │ ├── AltText.tsx │ │ │ │ ├── GalleryActions.tsx │ │ │ │ ├── GalleryPostActions.module.css │ │ │ │ ├── GalleryPostActions.tsx │ │ │ │ ├── ImageMoreActions.module.css │ │ │ │ ├── ImageMoreActions.tsx │ │ │ │ ├── VideoActions.module.css │ │ │ │ ├── VideoActions.tsx │ │ │ │ ├── VideoActionsProgress.module.css │ │ │ │ ├── VideoActionsProgress.tsx │ │ │ │ ├── shared.module.css │ │ │ │ ├── shared.tsx │ │ │ │ └── vote │ │ │ │ ├── HideVoteMode.tsx │ │ │ │ ├── SeparateVoteMode.tsx │ │ │ │ ├── TotalVoteMode.tsx │ │ │ │ └── Vote.tsx │ │ ├── imageSlice.ts │ │ ├── useImageData.ts │ │ ├── useMediaLoadObserver.ts │ │ └── video │ │ │ ├── OutPortalEventDispatcher.module.css │ │ │ ├── OutPortalEventDispatcher.tsx │ │ │ ├── Player.module.css │ │ │ ├── Player.tsx │ │ │ ├── PortaledPlayer.tsx │ │ │ ├── Video.tsx │ │ │ ├── VideoPortalProvider.module.css │ │ │ └── VideoPortalProvider.tsx │ ├── migrate │ │ ├── MigrateList.tsx │ │ ├── MigrateSubsList.tsx │ │ └── migrationSlice.ts │ ├── moderation │ │ ├── BackgroundReportSync.tsx │ │ ├── ModeratableItem.tsx │ │ ├── ModqueueItemActions.tsx │ │ ├── ban │ │ │ ├── BanUser.module.css │ │ │ ├── BanUser.tsx │ │ │ ├── BanUserModal.module.css │ │ │ └── BanUserModal.tsx │ │ ├── banner │ │ │ ├── ModeratableItemBanner.module.css │ │ │ ├── ModeratableItemBanner.tsx │ │ │ ├── RemovedBanner.tsx │ │ │ └── ReportBanner.tsx │ │ ├── logs │ │ │ ├── ModRolePersonLink.module.css │ │ │ ├── ModRolePersonLink.tsx │ │ │ ├── ModlogItem.module.css │ │ │ ├── ModlogItem.tsx │ │ │ ├── ModlogItemMoreActions.module.css │ │ │ ├── ModlogItemMoreActions.tsx │ │ │ ├── helpers.ts │ │ │ └── types │ │ │ │ ├── addCommunity.ts │ │ │ │ ├── addInstance.ts │ │ │ │ ├── banFromCommunity.ts │ │ │ │ ├── banFromInstance.ts │ │ │ │ ├── featurePost.ts │ │ │ │ ├── hideCommunity.ts │ │ │ │ ├── lockPost.ts │ │ │ │ ├── purgeComment.ts │ │ │ │ ├── purgeCommunity.ts │ │ │ │ ├── purgePerson.ts │ │ │ │ ├── purgePost.ts │ │ │ │ ├── removeComment.ts │ │ │ │ ├── removeCommunity.ts │ │ │ │ ├── removePost.ts │ │ │ │ ├── shared.ts │ │ │ │ └── transferCommunity.ts │ │ ├── modSlice.tsx │ │ ├── useCanModerate.tsx │ │ ├── useCommentModActions.tsx │ │ ├── useIsAdmin.tsx │ │ ├── useModZoneActions.tsx │ │ └── usePostModActions.tsx │ ├── post │ │ ├── actions │ │ │ ├── ActionButton.module.css │ │ │ ├── ActionButton.tsx │ │ │ ├── ActionsContainer.module.css │ │ │ ├── ActionsContainer.tsx │ │ │ ├── PostActions.module.css │ │ │ ├── PostActions.tsx │ │ │ └── ShareButton.tsx │ │ ├── appearance │ │ │ ├── PostAppearanceProvider.tsx │ │ │ └── appearanceSlice.ts │ │ ├── crosspost │ │ │ ├── CompactCrosspost.module.css │ │ │ ├── CompactCrosspost.tsx │ │ │ ├── Crosspost.tsx │ │ │ ├── CrosspostContainer.tsx │ │ │ ├── CrosspostContents.module.css │ │ │ ├── CrosspostContents.tsx │ │ │ ├── create │ │ │ │ ├── CreateCrosspostDialog.module.css │ │ │ │ └── CreateCrosspostDialog.tsx │ │ │ └── useCopyPostImageDataIfNeeded.ts │ │ ├── detail │ │ │ ├── AnnouncementIcon.module.css │ │ │ ├── AnnouncementIcon.tsx │ │ │ ├── HappyStat.tsx │ │ │ ├── Locked.module.css │ │ │ ├── Locked.tsx │ │ │ ├── PostDetail.tsx │ │ │ ├── PostHeader.module.css │ │ │ ├── PostHeader.tsx │ │ │ ├── Stat.module.css │ │ │ ├── Stat.tsx │ │ │ ├── Stats.module.css │ │ │ ├── Stats.tsx │ │ │ ├── TimeStat.module.css │ │ │ ├── TimeStat.tsx │ │ │ ├── ViewAllComments.module.css │ │ │ └── ViewAllComments.tsx │ │ ├── inFeed │ │ │ ├── Post.module.css │ │ │ ├── Post.tsx │ │ │ ├── PreviewStats.module.css │ │ │ ├── PreviewStats.tsx │ │ │ ├── compact │ │ │ │ ├── CompactFeedPostMedia.tsx │ │ │ │ ├── CompactPost.module.css │ │ │ │ ├── CompactPost.tsx │ │ │ │ ├── Thumbnail.module.css │ │ │ │ ├── Thumbnail.tsx │ │ │ │ └── self.svg │ │ │ ├── large │ │ │ │ ├── LargePost.module.css │ │ │ │ ├── LargePost.tsx │ │ │ │ ├── LargePostContents.module.css │ │ │ │ ├── LargePostContents.tsx │ │ │ │ └── media │ │ │ │ │ ├── BlurOverlay.module.css │ │ │ │ │ ├── BlurOverlay.tsx │ │ │ │ │ ├── BlurOverlayMessage.module.css │ │ │ │ │ ├── BlurOverlayMessage.tsx │ │ │ │ │ ├── LargeFeedMedia.module.css │ │ │ │ │ ├── LargeFeedMedia.tsx │ │ │ │ │ ├── LargeFeedPostMedia.module.css │ │ │ │ │ └── LargeFeedPostMedia.tsx │ │ │ └── usePostSrc.ts │ │ ├── link │ │ │ ├── CommentLink.tsx │ │ │ ├── Link.module.css │ │ │ ├── Link.tsx │ │ │ ├── LinkPreview.module.css │ │ │ ├── LinkPreview.tsx │ │ │ ├── PostLink.tsx │ │ │ └── thumbnail │ │ │ │ ├── sites │ │ │ │ └── youtube.ts │ │ │ │ ├── thumbnailSlice.tsx │ │ │ │ └── thumbnailinator.ts │ │ ├── new │ │ │ ├── NewPostText.tsx │ │ │ ├── PhotoPreview.module.css │ │ │ ├── PhotoPreview.tsx │ │ │ ├── PostEditor.tsx │ │ │ ├── PostEditorModal.tsx │ │ │ ├── PostEditorRoot.module.css │ │ │ └── PostEditorRoot.tsx │ │ ├── postSlice.ts │ │ ├── shared │ │ │ ├── MoreActions.tsx │ │ │ ├── MoreModAction.tsx │ │ │ ├── SaveButton.module.css │ │ │ ├── SaveButton.tsx │ │ │ ├── VoteButton.module.css │ │ │ ├── VoteButton.tsx │ │ │ ├── useCrosspostUrl.tsx │ │ │ └── usePostActions.tsx │ │ └── useIsPostUrlMedia.ts │ ├── pwa │ │ ├── BeforeInstallPromptProvider.tsx │ │ └── useShouldInstall.ts │ ├── report │ │ └── Report.tsx │ ├── resolve │ │ └── resolveSlice.tsx │ ├── search │ │ ├── AutoResolvePostComment.module.css │ │ ├── AutoResolvePostComment.tsx │ │ ├── EmptySearch.tsx │ │ ├── SearchOptions.tsx │ │ ├── SpecialSearchMenu.tsx │ │ ├── TrendingCommunities.module.css │ │ └── TrendingCommunities.tsx │ ├── settings │ │ ├── appIcon │ │ │ ├── AppIcon.module.css │ │ │ ├── AppIcon.tsx │ │ │ └── appIconSlice.tsx │ │ ├── appearance │ │ │ ├── AppearanceSettings.tsx │ │ │ ├── CompactSettings.tsx │ │ │ ├── LargeSettings.tsx │ │ │ ├── TextSize.module.css │ │ │ ├── TextSize.tsx │ │ │ ├── ThemesButton.tsx │ │ │ ├── layout │ │ │ │ ├── Layout.tsx │ │ │ │ └── TwoColumn.tsx │ │ │ ├── other │ │ │ │ ├── DisplayVotes.tsx │ │ │ │ ├── Other.tsx │ │ │ │ └── ShowUserInstance.tsx │ │ │ ├── posts │ │ │ │ ├── AlwaysShowAuthor.tsx │ │ │ │ ├── BlurNsfw.tsx │ │ │ │ ├── CommunityAtTop.tsx │ │ │ │ ├── EmbedCrossposts.tsx │ │ │ │ ├── EmbedExternalMedia.tsx │ │ │ │ ├── PostSize.tsx │ │ │ │ ├── Posts.tsx │ │ │ │ ├── RememberType.tsx │ │ │ │ ├── ShowCommunityIcons.tsx │ │ │ │ └── SubscribedIcon.tsx │ │ │ └── themes │ │ │ │ ├── Theme.tsx │ │ │ │ ├── appTheme │ │ │ │ ├── AppTheme.module.css │ │ │ │ ├── AppTheme.tsx │ │ │ │ ├── AppThemePreview.module.css │ │ │ │ └── AppThemePreview.tsx │ │ │ │ ├── commentsTheme │ │ │ │ ├── Color.module.css │ │ │ │ ├── Color.tsx │ │ │ │ ├── CommentsTheme.module.css │ │ │ │ ├── CommentsTheme.tsx │ │ │ │ └── values.ts │ │ │ │ ├── dark │ │ │ │ ├── Dark.tsx │ │ │ │ └── PureBlack.tsx │ │ │ │ ├── system │ │ │ │ ├── DarkMode.tsx │ │ │ │ ├── DeviceMode.tsx │ │ │ │ ├── QuickSwitchDarkMode.tsx │ │ │ │ ├── SelectDeviceMode.tsx │ │ │ │ ├── System.tsx │ │ │ │ └── UserDarkMode.tsx │ │ │ │ └── votesTheme │ │ │ │ ├── VotesTheme.module.css │ │ │ │ └── VotesTheme.tsx │ │ ├── biometric │ │ │ ├── BiometricIcon.tsx │ │ │ ├── BiometricSettings.tsx │ │ │ ├── BiometricTitle.tsx │ │ │ ├── biometricSlice.ts │ │ │ └── settings │ │ │ │ ├── BiometricEnabled.tsx │ │ │ │ └── BiometricTimeout.tsx │ │ ├── blocks │ │ │ ├── BlockedCommunities.tsx │ │ │ ├── BlockedInstances.tsx │ │ │ ├── BlockedUsers.tsx │ │ │ ├── FilterNsfw.tsx │ │ │ ├── FilteredKeywords.tsx │ │ │ └── FilteredWebsites.tsx │ │ ├── general │ │ │ ├── GeneralSettings.tsx │ │ │ ├── comments │ │ │ │ ├── CollapsedByDefault.tsx │ │ │ │ ├── Comments.tsx │ │ │ │ ├── DefaultSort.tsx │ │ │ │ ├── HighlightNewAccount.tsx │ │ │ │ ├── JumpButtonPosition.tsx │ │ │ │ ├── RememberCommunityCommentSort.tsx │ │ │ │ ├── ShowCollapsed.tsx │ │ │ │ ├── ShowCommentImages.tsx │ │ │ │ ├── ShowJumpButton.tsx │ │ │ │ ├── TapToCollapse.tsx │ │ │ │ └── TouchFriendlyLinks.tsx │ │ │ ├── hiding │ │ │ │ ├── DisableMarkingRead.tsx │ │ │ │ ├── HidingSettings.tsx │ │ │ │ ├── MarkReadOnScroll.tsx │ │ │ │ ├── NeverShowReadPosts.tsx │ │ │ │ ├── ShowHiddenInCommunities.tsx │ │ │ │ ├── ShowHideReadButton.tsx │ │ │ │ └── autoHide │ │ │ │ │ ├── AutoHideRead.tsx │ │ │ │ │ └── DisableInCommunities.tsx │ │ │ ├── media │ │ │ │ ├── HideAltText.tsx │ │ │ │ ├── Media.tsx │ │ │ │ └── ShowControlsOnOpen.tsx │ │ │ ├── other │ │ │ │ ├── ClearCache.tsx │ │ │ │ ├── DefaultFeed.tsx │ │ │ │ ├── Haptics.tsx │ │ │ │ ├── LinkHandler.tsx │ │ │ │ ├── NoSubscribedInFeed.tsx │ │ │ │ ├── OpenNativeApps.tsx │ │ │ │ ├── Other.tsx │ │ │ │ ├── ProfileTabLabel.tsx │ │ │ │ ├── Share.tsx │ │ │ │ ├── Thumbnailinator.tsx │ │ │ │ └── backup │ │ │ │ │ ├── BackupSettings.tsx │ │ │ │ │ └── helpers.ts │ │ │ ├── posts │ │ │ │ ├── AutoplayMedia.tsx │ │ │ │ ├── DefaultSort.tsx │ │ │ │ ├── InfiniteScrolling.tsx │ │ │ │ ├── Posts.tsx │ │ │ │ ├── RememberCommunityPostSort.tsx │ │ │ │ └── UpvoteOnSave.tsx │ │ │ └── safari │ │ │ │ ├── AlwaysUseReaderMode.tsx │ │ │ │ └── Safari.tsx │ │ ├── gestures │ │ │ ├── SwipeSettings.tsx │ │ │ ├── gestureSlice.tsx │ │ │ ├── swipeLong.svg │ │ │ └── swipeShort.svg │ │ ├── root │ │ │ ├── DatabaseErrorItem.tsx │ │ │ └── DatabaseErrorModal.tsx │ │ ├── settingsSlice.tsx │ │ ├── shared │ │ │ ├── SettingSelector.module.css │ │ │ ├── SettingSelector.tsx │ │ │ ├── formatting.module.css │ │ │ └── formatting.tsx │ │ ├── syncStorage.ts │ │ └── tags │ │ │ ├── Browse.tsx │ │ │ ├── Enabled.tsx │ │ │ ├── HideInstance.tsx │ │ │ ├── Reset.tsx │ │ │ ├── StoreSource.tsx │ │ │ ├── TagsSettings.tsx │ │ │ ├── TrackVotes.tsx │ │ │ ├── browse │ │ │ ├── BrowseTag.module.css │ │ │ ├── BrowseTag.tsx │ │ │ └── BrowseTags.tsx │ │ │ └── tag.svg │ ├── share │ │ ├── asImage │ │ │ ├── AddRemoveButtons.module.css │ │ │ ├── AddRemoveButtons.tsx │ │ │ ├── ShareAsImage.module.css │ │ │ ├── ShareAsImage.tsx │ │ │ ├── ShareAsImageModal.module.css │ │ │ ├── ShareAsImageModal.tsx │ │ │ ├── Watermark.module.css │ │ │ ├── Watermark.tsx │ │ │ └── includeStyleProperties.ts │ │ ├── goVoyager.ts │ │ ├── share.ts │ │ ├── useSharePostComment.ts │ │ └── useShareUserCommunity.ts │ ├── shared │ │ ├── AppContent.tsx │ │ ├── AppHeader.tsx │ │ ├── AppTitle.tsx │ │ ├── CenteredSpinner.module.css │ │ ├── CenteredSpinner.tsx │ │ ├── DocumentTitle.tsx │ │ ├── DynamicDismissableModal.tsx │ │ ├── FakeIcon.module.css │ │ ├── FakeIcon.tsx │ │ ├── HeaderEllipsisIcon.tsx │ │ ├── InAppExternalLink.tsx │ │ ├── IonModalAutosizedForOnScreenKeyboard.module.css │ │ ├── IonModalAutosizedForOnScreenKeyboard.tsx │ │ ├── ListEditor.module.css │ │ ├── ListEditor.tsx │ │ ├── MultilineTitle.module.css │ │ ├── MultilineTitle.tsx │ │ ├── SelectTextModal.module.css │ │ ├── SelectTextModal.tsx │ │ ├── TextareaAutosizedForOnScreenKeyboard.tsx │ │ ├── Url.tsx │ │ ├── bounce.module.css │ │ ├── markdown │ │ │ ├── InlineMarkdown.tsx │ │ │ ├── LinkInterceptor.module.css │ │ │ ├── LinkInterceptor.tsx │ │ │ ├── Markdown.module.css │ │ │ ├── Markdown.test.tsx │ │ │ ├── Markdown.tsx │ │ │ ├── MarkdownImg.module.css │ │ │ ├── MarkdownImg.tsx │ │ │ ├── components │ │ │ │ ├── Table.module.css │ │ │ │ ├── Table.tsx │ │ │ │ └── spoiler │ │ │ │ │ ├── Details.module.css │ │ │ │ │ ├── Details.tsx │ │ │ │ │ ├── Summary.tsx │ │ │ │ │ ├── inlinifySpoiler.ts │ │ │ │ │ └── spoilerSlice.ts │ │ │ ├── customRemarkGfm.tsx │ │ │ └── editing │ │ │ │ ├── Editor.module.css │ │ │ │ ├── Editor.tsx │ │ │ │ ├── MarkdownToolbar.module.css │ │ │ │ ├── MarkdownToolbar.tsx │ │ │ │ ├── PreviewModal.tsx │ │ │ │ ├── modal │ │ │ │ ├── GenericMarkdownEditorModal.tsx │ │ │ │ └── contents │ │ │ │ │ ├── CommentEditPage.tsx │ │ │ │ │ ├── CommentEditorContent.tsx │ │ │ │ │ ├── CommentReplyPage.tsx │ │ │ │ │ ├── ItemReplyingTo.module.css │ │ │ │ │ ├── ItemReplyingTo.tsx │ │ │ │ │ ├── PrivateMessagePage.tsx │ │ │ │ │ └── TemporarySelectedAccountContext.tsx │ │ │ │ ├── modes │ │ │ │ ├── DefaultMode.module.css │ │ │ │ ├── DefaultMode.tsx │ │ │ │ ├── autocomplete │ │ │ │ │ ├── CommunityAutocompleteMode.tsx │ │ │ │ │ ├── GenericAutocompleteMode.module.css │ │ │ │ │ ├── GenericAutocompleteMode.tsx │ │ │ │ │ └── UsernameAutocompleteMode.tsx │ │ │ │ └── textFaces.txt │ │ │ │ ├── uploadImageSlice.tsx │ │ │ │ ├── useEditorHelpers.tsx │ │ │ │ └── useUploadImage.tsx │ │ ├── selectorModals │ │ │ ├── CommunitySelectorModal.tsx │ │ │ ├── GenericSelectorModal.module.css │ │ │ ├── GenericSelectorModal.tsx │ │ │ └── InstanceSelectorModal.tsx │ │ ├── shared.module.css │ │ ├── sliding │ │ │ ├── ActionContents.module.css │ │ │ ├── ActionContents.tsx │ │ │ ├── BaseSliding.module.css │ │ │ ├── BaseSliding.tsx │ │ │ ├── SlidingInbox.tsx │ │ │ ├── SlidingItem.module.css │ │ │ ├── SlidingItem.tsx │ │ │ ├── SlidingNestedCommentVote.tsx │ │ │ ├── SlidingPostVote.tsx │ │ │ └── internal │ │ │ │ ├── GenericBaseSliding.tsx │ │ │ │ ├── impl │ │ │ │ ├── DMActionsImpl.tsx │ │ │ │ └── VotableActionsImpl.tsx │ │ │ │ └── shared.ts │ │ ├── toast │ │ │ ├── Toast.module.css │ │ │ └── Toast.tsx │ │ ├── useLemmyUrlHandler.ts │ │ ├── useLinkLongPress.tsx │ │ └── useNativeBrowser.ts │ ├── sidebar │ │ ├── Sidebar.tsx │ │ └── internal │ │ │ ├── CommunitySidebar.tsx │ │ │ ├── GenericSidebar.module.css │ │ │ ├── GenericSidebar.tsx │ │ │ ├── InstanceSidebar.tsx │ │ │ ├── SidebarCounts.tsx │ │ │ └── SidebarOwners.tsx │ ├── tags │ │ ├── SourceUrlButton.tsx │ │ ├── UserScore.module.css │ │ ├── UserScore.tsx │ │ ├── UserTag.module.css │ │ ├── UserTag.tsx │ │ ├── UserTagModal.module.css │ │ ├── UserTagModal.tsx │ │ ├── userTagSlice.tsx │ │ └── voteColor.ts │ ├── tips │ │ ├── ExternalSponsorOptions.tsx │ │ ├── Tip.module.css │ │ ├── TipDialog.module.css │ │ ├── TipDialog.tsx │ │ ├── external │ │ │ ├── ExternalTip.tsx │ │ │ └── ExternalTips.tsx │ │ ├── inAppPurchase │ │ │ ├── InAppProducts.tsx │ │ │ ├── Tip.tsx │ │ │ └── useInAppPurchase.ts │ │ ├── inAppPurchase__stub │ │ │ └── InAppProducts.tsx │ │ └── useOnExternalPaymentLinkClickHandler.ts │ └── user │ │ ├── AsyncProfile.tsx │ │ ├── LoggedOut.module.css │ │ ├── LoggedOut.tsx │ │ ├── PostContext.module.css │ │ ├── PostContext.tsx │ │ ├── Profile.tsx │ │ ├── ProfilePageActions.tsx │ │ ├── Scores.module.css │ │ ├── Scores.tsx │ │ ├── UserPageActions.tsx │ │ ├── incognito.svg │ │ ├── usePresentUserActions.ts │ │ └── userSlice.tsx ├── helpers │ ├── AppPage.tsx │ ├── AppVList.tsx │ ├── BooleanWatcher.ts │ ├── FloatingDialog.module.css │ ├── FloatingDialog.tsx │ ├── appLinkBuilder.ts │ ├── array.ts │ ├── blob.ts │ ├── color.ts │ ├── css.ts │ ├── date.test.ts │ ├── date.ts │ ├── device.ts │ ├── dom.ts │ ├── gif.ts │ ├── imageCompress.ts │ ├── ionic.ts │ ├── jwt.ts │ ├── lemmy.test.ts │ ├── lemmy.ts │ ├── lemmyCompat.ts │ ├── lemmyErrors.ts │ ├── longPress.ts │ ├── markdown.test.ts │ ├── markdown.ts │ ├── number.test.ts │ ├── number.ts │ ├── object.test.ts │ ├── object.ts │ ├── promise.ts │ ├── regex.ts │ ├── routes.ts │ ├── safari.ts │ ├── scrollUpIfNeeded.ts │ ├── serviceWorker.ts │ ├── toast.ts │ ├── toastMessages.ts │ ├── typescript.d.ts │ ├── url.test.ts │ ├── url.ts │ ├── useAppNavigation.ts │ ├── useAppToast.module.css │ ├── useAppToast.tsx │ ├── useClient.ts │ ├── useGetAppScrollable.ts │ ├── useHapticFeedback.ts │ ├── useIonNavBackButtonListener.ts │ ├── useIonViewIsVisible.tsx │ ├── useKeyboardOpen.ts │ ├── useOptimizedIonRouter.tsx │ ├── usePreservePositionFromBottomInScrollView.ts │ ├── useStateRef.ts │ ├── useSupported.ts │ ├── useSystemDarkMode.ts │ ├── useTextRecovery.ts │ ├── virtua.tsx │ ├── vote.ts │ └── voyager.ts ├── index.tsx ├── react.d.ts ├── routes │ ├── Outlet.module.css │ ├── Outlet.tsx │ ├── OutletProvider.tsx │ ├── TabBar.module.css │ ├── TabBar.tsx │ ├── TabbedRoutes.tsx │ ├── common │ │ ├── ActorRedirect.tsx │ │ ├── Route.tsx │ │ └── Router.tsx │ ├── pages │ │ ├── inbox │ │ │ ├── BoxesPage.tsx │ │ │ ├── ComposeButton.tsx │ │ │ ├── ConversationPage.module.css │ │ │ ├── ConversationPage.tsx │ │ │ ├── InboxAuthRequired.tsx │ │ │ ├── InboxPage.tsx │ │ │ ├── MarkAllAsReadButton.tsx │ │ │ ├── MentionsPage.tsx │ │ │ ├── MessagesPage.tsx │ │ │ └── RepliesPage.tsx │ │ ├── posts │ │ │ ├── CommunitiesPage.tsx │ │ │ └── PostPage.tsx │ │ ├── profile │ │ │ ├── BaseProfileFeedItemsPage.tsx │ │ │ ├── ProfileFeedCommentsPage.tsx │ │ │ ├── ProfileFeedHiddenPostsPage.tsx │ │ │ ├── ProfileFeedPostsPage.tsx │ │ │ ├── ProfileFeedSavedPage.tsx │ │ │ ├── ProfileFeedVotedPage.tsx │ │ │ ├── ProfilePage.tsx │ │ │ └── UserPage.tsx │ │ ├── search │ │ │ ├── CommunitiesResultsPage.tsx │ │ │ ├── RandomCommunityPage.tsx │ │ │ ├── SearchPage.module.css │ │ │ ├── SearchPage.tsx │ │ │ └── results │ │ │ │ ├── SearchCommunitiesPage.tsx │ │ │ │ └── SearchFeedResultsPage.tsx │ │ ├── settings │ │ │ ├── AppIconPage.tsx │ │ │ ├── AppearancePage.tsx │ │ │ ├── AppearanceThemePage.tsx │ │ │ ├── BiometricPage.tsx │ │ │ ├── BlocksSettingsPage.tsx │ │ │ ├── BrowseTagsPage.tsx │ │ │ ├── DeviceModeSettingsPage.tsx │ │ │ ├── GeneralPage.tsx │ │ │ ├── GesturesPage.tsx │ │ │ ├── HidingSettingsPage.tsx │ │ │ ├── InstallAppPage.module.css │ │ │ ├── InstallAppPage.tsx │ │ │ ├── RedditDataMigratePage.tsx │ │ │ ├── RedditMigrateSubsListPage.tsx │ │ │ ├── SettingsPage.module.css │ │ │ ├── SettingsPage.tsx │ │ │ ├── TagsSettingsPage.tsx │ │ │ ├── UpdateAppPage.module.css │ │ │ ├── UpdateAppPage.tsx │ │ │ ├── about │ │ │ │ ├── AboutPage.tsx │ │ │ │ ├── AboutThanksPage.tsx │ │ │ │ ├── AppDetails.module.css │ │ │ │ ├── AppDetails.tsx │ │ │ │ ├── AppVersionInfo.tsx │ │ │ │ └── compliments.txt │ │ │ └── update │ │ │ │ └── UpdateContext.tsx │ │ └── shared │ │ │ ├── CommentsPage.tsx │ │ │ ├── CommunityCommentsPage.tsx │ │ │ ├── CommunityPage.module.css │ │ │ ├── CommunityPage.tsx │ │ │ ├── CommunitySidebarPage.tsx │ │ │ ├── FeedContent.tsx │ │ │ ├── InstanceSidebarPage.tsx │ │ │ ├── ModlogPage.tsx │ │ │ ├── ModqueuePage.tsx │ │ │ └── SpecialFeedPage.tsx │ ├── tabs │ │ ├── anyPane.tsx │ │ ├── anyPaneGeneral.tsx │ │ ├── anyPaneInbox.tsx │ │ ├── buttons │ │ │ ├── InboxTabButton.tsx │ │ │ ├── PostsTabButton.tsx │ │ │ ├── ProfileTabButton.module.css │ │ │ ├── ProfileTabButton.tsx │ │ │ ├── SearchTabButton.tsx │ │ │ ├── SettingsTabButton.tsx │ │ │ ├── shared.module.css │ │ │ └── shared.tsx │ │ ├── general.tsx │ │ ├── inbox.tsx │ │ ├── posts.tsx │ │ ├── profile.tsx │ │ ├── search.tsx │ │ └── settings.tsx │ └── twoColumn │ │ ├── AppBackButton.tsx │ │ ├── SecondColumnContent.tsx │ │ ├── TwoColumnEmpty.module.css │ │ ├── TwoColumnEmpty.tsx │ │ ├── useActivatedClass.ts │ │ ├── useIsDeviceTwoColumnCapable.ts │ │ ├── useIsLandscape.ts │ │ ├── useIsLinkSelected.ts │ │ ├── useIsPageHidden.tsx │ │ ├── useIsSecondColumn.ts │ │ ├── useIsTwoColumnLayout.ts │ │ ├── useIsViewportTwoColumnCapable.ts │ │ └── useOpenInSecondColumnIfNeededProps.tsx ├── services │ ├── app.ts │ ├── db.ts │ ├── lemmy.ts │ ├── lemmyverse.ts │ ├── nativeFetch.ts │ └── redgifs.ts ├── setupTests.ts ├── store.tsx └── vite-env.d.ts ├── trapeze.yaml ├── tsconfig.json └── vite.config.ts /.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 versions 2 | not dead 3 | iOS >= 15 -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .git/ 3 | .github/ 4 | .gitignore 5 | .prettierignore 6 | .vscode/ 7 | 8 | *.tsbuildinfo 9 | 10 | node_modules 11 | *.md 12 | dist 13 | 14 | android/ 15 | ios/ 16 | fastlane/ 17 | e2e/ 18 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{js,ts,jsx,tsx,yaml,json}] 4 | indent_style = space 5 | indent_size = 2 6 | trim_trailing_whitespace = true 7 | insert_final_newline = true 8 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | ** @aeharding 2 | /e2e/ @aashu16 @aeharding -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: aeharding 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | public-hoist-pattern[]=workbox-window 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | pnpm-lock.yaml 3 | ios/ 4 | android/ 5 | vite.config.ts.timestamp-* -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": false, 4 | "trailingComma": "all" 5 | } 6 | -------------------------------------------------------------------------------- /.release-it.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/release-it@17/schema/release-it.json", 3 | "git": { 4 | "commitMessage": "chore: bump version to ${version}", 5 | "tag": false, 6 | "getLatestTagFromAllRefs": true 7 | }, 8 | "npm": { 9 | "publish": false 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ionic.ionic", 4 | "esbenp.prettier-vscode", 5 | "github.vscode-github-actions", 6 | "clinyong.vscode-css-modules" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "prettier.enable": true, 4 | "editor.defaultFormatter": "esbenp.prettier-vscode", 5 | "typescript.tsdk": "node_modules/typescript/lib", 6 | "editor.codeActionsOnSave": { 7 | "source.fixAll.eslint": "explicit" 8 | }, 9 | "eslint.codeActionsOnSave.rules": ["perfectionist/*"], 10 | "css.lint.validProperties": ["composes"], 11 | "css.lint.vendorPrefix": "ignore" 12 | } 13 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | 5 | # https://github.com/fastlane/fastlane/issues/29183#issuecomment-2567093826 6 | gem "abbrev" 7 | gem "mutex_m" 8 | gem "ostruct" -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build/* 2 | !/build/.npmkeep 3 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-land-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable-port-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/drawable/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/galactic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/holidays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/original.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/planetary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/pride.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/psych.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/space.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/galactic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/galactic.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/galactic_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/galactic_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/galactic_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/galactic_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/galactic_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/galactic_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/holidays.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/holidays.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/holidays_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/holidays_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/holidays_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/holidays_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/holidays_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/holidays_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/original.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/original.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/original_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/original_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/original_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/original_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/original_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/original_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/planetary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/planetary.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/planetary_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/planetary_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/planetary_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/planetary_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/planetary_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/planetary_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/pride.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/pride.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/pride_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/pride_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/pride_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/pride_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/pride_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/pride_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/psych.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/psych.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/psych_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/psych_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/psych_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/psych_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/psych_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/psych_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/space.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/space_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/space_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/space_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/space_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/space_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-hdpi/space_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/galactic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/galactic.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/galactic_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/galactic_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/galactic_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/galactic_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/galactic_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/galactic_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/holidays.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/holidays.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/holidays_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/holidays_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/holidays_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/holidays_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/holidays_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/holidays_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/original.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/original.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/original_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/original_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/original_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/original_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/original_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/original_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/planetary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/planetary.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/planetary_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/planetary_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/planetary_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/planetary_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/planetary_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/planetary_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/pride.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/pride.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/pride_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/pride_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/pride_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/pride_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/pride_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/pride_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/psych.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/psych.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/psych_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/psych_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/psych_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/psych_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/psych_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/psych_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/space.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/space_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/space_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/space_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/space_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/space_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-mdpi/space_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/galactic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/galactic.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/galactic_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/galactic_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/galactic_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/galactic_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/galactic_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/galactic_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/holidays.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/holidays.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/holidays_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/holidays_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/holidays_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/holidays_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/holidays_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/holidays_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/original.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/original.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/original_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/original_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/original_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/original_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/original_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/original_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/planetary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/planetary.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/planetary_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/planetary_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/planetary_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/planetary_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/planetary_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/planetary_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/pride.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/pride.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/pride_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/pride_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/pride_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/pride_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/pride_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/pride_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/psych.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/psych.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/psych_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/psych_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/psych_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/psych_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/psych_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/psych_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/space.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/space_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/space_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/space_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/space_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/space_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xhdpi/space_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/galactic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/galactic.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/galactic_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/galactic_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/galactic_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/galactic_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/galactic_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/galactic_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/holidays.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/holidays.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/holidays_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/holidays_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/holidays_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/holidays_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/holidays_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/holidays_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/original.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/original.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/original_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/original_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/original_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/original_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/original_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/original_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/planetary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/planetary.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/planetary_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/planetary_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/planetary_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/planetary_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/planetary_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/planetary_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/pride.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/pride.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/pride_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/pride_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/pride_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/pride_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/pride_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/pride_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/psych.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/psych.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/psych_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/psych_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/psych_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/psych_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/psych_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/psych_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/space.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/space_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/space_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/space_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/space_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/space_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxhdpi/space_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/galactic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/galactic.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/galactic_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/galactic_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/galactic_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/galactic_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/galactic_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/galactic_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/holidays.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/holidays.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/holidays_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/holidays_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/holidays_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/holidays_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/holidays_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/holidays_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/original.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/original.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/original_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/original_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/original_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/original_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/original_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/original_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/planetary.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/planetary.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/planetary_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/planetary_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/planetary_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/planetary_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/planetary_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/planetary_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/pride.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/pride.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/pride_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/pride_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/pride_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/pride_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/pride_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/pride_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/psych.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/psych.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/psych_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/psych_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/psych_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/psych_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/psych_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/psych_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/space.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/space.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/space_background.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/space_background.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/space_foreground.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/space_foreground.webp -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/space_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/app/src/main/res/mipmap-xxxhdpi/space_round.webp -------------------------------------------------------------------------------- /android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Voyager 4 | Voyager 5 | app.vger.voyager 6 | app.vger.voyager 7 | Lemmy link 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.getcapacitor.myapp; 2 | 3 | import static org.junit.Assert.*; 4 | 5 | import org.junit.Test; 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 | 14 | @Test 15 | public void addition_isCorrect() throws Exception { 16 | assertEquals(4, 2 + 2); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Nov 03 15:54:48 CST 2024 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 6 | networkTimeout=10000 7 | validateDistributionUrl=true 8 | zipStoreBase=GRADLE_USER_HOME 9 | zipStorePath=wrapper/dists 10 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | include ':capacitor-cordova-android-plugins' 3 | project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') 4 | 5 | apply from: 'capacitor.settings.gradle' -------------------------------------------------------------------------------- /android/variables.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | minSdkVersion = 23 3 | compileSdkVersion = 35 4 | targetSdkVersion = 35 5 | androidxActivityVersion = '1.9.2' 6 | androidxAppCompatVersion = '1.7.0' 7 | androidxCoordinatorLayoutVersion = '1.2.0' 8 | androidxCoreVersion = '1.15.0' 9 | androidxFragmentVersion = '1.8.4' 10 | coreSplashScreenVersion = '1.0.1' 11 | androidxWebkitVersion = '1.12.1' 12 | junitVersion = '4.13.2' 13 | androidxJunitVersion = '1.2.1' 14 | androidxEspressoCoreVersion = '3.6.1' 15 | cordovaAndroidVersion = '10.1.1' 16 | } -------------------------------------------------------------------------------- /compilerOptions.js: -------------------------------------------------------------------------------- 1 | export default { 2 | environment: { 3 | enableTreatRefLikeIdentifiersAsRefs: true, 4 | }, 5 | // eslint-disable-next-line no-undef 6 | reportableLevels: !process.env.RCALL 7 | ? undefined 8 | : // https://github.com/facebook/react/blob/5c56b87/compiler/packages/babel-plugin-react-compiler/src/CompilerError.ts#L11-L39 9 | new Set([ 10 | "InvalidJS", 11 | "InvalidReact", 12 | "InvalidConfig", 13 | "CannotPreserveMemoization", 14 | "Todo", 15 | "Invariant", 16 | ]), 17 | }; 18 | -------------------------------------------------------------------------------- /e2e/ci/lemmy.hjson: -------------------------------------------------------------------------------- 1 | { 2 | setup: { 3 | admin_username: "voyager" 4 | admin_password: "voyagerapp" 5 | site_name: "voyager" 6 | } 7 | 8 | database: { 9 | host: postgres 10 | } 11 | 12 | hostname: "localhost" 13 | bind: "0.0.0.0" 14 | port: 8536 15 | 16 | pictrs: { 17 | url: "http://pictrs:8080/" 18 | image_mode: None 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier(["app.vger.voyager", "app.vger.voyager.watchkitapp", "app.vger.voyager.VoyagerActionExtension"]) # The bundle identifier of your app 2 | apple_id("alex@harding.dev") # Your Apple email address 3 | 4 | itc_team_id("126507712") # App Store Connect Team ID 5 | team_id("SYTN44U2UN") # Developer Portal Team ID 6 | 7 | # For more information about the Appfile, see: 8 | # https://docs.fastlane.tools/advanced/#appfile 9 | -------------------------------------------------------------------------------- /fastlane/Matchfile: -------------------------------------------------------------------------------- 1 | git_url("https://github.com/aeharding/voyager-match") 2 | 3 | storage_mode("git") 4 | 5 | type("appstore") # The default type, can be: appstore, adhoc, enterprise or development 6 | 7 | # app_identifier(["tools.fastlane.app", "tools.fastlane.app2"]) 8 | # username("user@fastlane.tools") # Your Apple Developer Portal username 9 | 10 | # For all available options run `fastlane match --help` 11 | # Remove the # in the beginning of the line to enable the other options 12 | 13 | # The docs are available on https://docs.fastlane.tools/actions/match 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/default.txt: -------------------------------------------------------------------------------- 1 | Full release change log: https://github.com/aeharding/voyager/releases/latest -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/sevenInchScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/tenInchScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/tenInchScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/tenInchScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/tenInchScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/fastlane/metadata/android/en-US/images/tenInchScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Join the discussion -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Voyager for Lemmy -------------------------------------------------------------------------------- /ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Voyager", 3 | "integrations": { 4 | "capacitor": {} 5 | }, 6 | "type": "react-vite" 7 | } 8 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | App/build 2 | App/Pods 3 | App/output 4 | App/App/public 5 | DerivedData 6 | xcuserdata 7 | 8 | # Cordova plugins for Capacitor 9 | capacitor-cordova-ios-plugins 10 | 11 | # Generated Config files 12 | App/App/capacitor.config.json 13 | App/App/config.xml 14 | -------------------------------------------------------------------------------- /ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/App/App.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/App/App/App.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.associated-domains 6 | 7 | applinks:go.getvoyager.app 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/galactic_v2.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "galactic.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/galactic_v2.appiconset/galactic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/galactic_v2.appiconset/galactic.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidays.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidaysDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidaysDark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidaysTinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/holidays_v2.appiconset/holidaysTinted.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/original_v2.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "original.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/original_v2.appiconset/original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/original_v2.appiconset/original.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetary.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetaryDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetaryDark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetaryTinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/planetary_v2.appiconset/planetaryTinted.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/pride.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/pride.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/prideDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/prideDark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/prideTinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/pride_v2.appiconset/prideTinted.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psych.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psych.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psychadelicTinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psychadelicTinted.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psychedelicDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/psych_v2.appiconset/psychedelicDark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/space_v2.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "space.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Alt Icons/space_v2.appiconset/space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/Alt Icons/space_v2.appiconset/space.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-1024@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-1024@4x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/AppIcon.appiconset/dark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/tinted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/App/Assets.xcassets/AppIcon.appiconset/tinted.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/App/CapApp-SPM/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | /*.xcodeproj 5 | xcuserdata/ 6 | DerivedData/ 7 | .swiftpm/config/registries.json 8 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata 9 | .netrc 10 | -------------------------------------------------------------------------------- /ios/App/CapApp-SPM/README.md: -------------------------------------------------------------------------------- 1 | # CapApp-SPM 2 | 3 | > [!WARNING] 4 | > SPM Support is currently experimental. 5 | 6 | This SPM is used to host SPM dependancies for you Capacitor project 7 | 8 | Do not modifiy the contents of it or there may be unintended concquences. 9 | -------------------------------------------------------------------------------- /ios/App/CapApp-SPM/Sources/CapApp-SPM/CapApp-SPM.swift: -------------------------------------------------------------------------------- 1 | public let isCapacitorApp = true 2 | -------------------------------------------------------------------------------- /ios/App/VoyagerActionExtension/Action.js: -------------------------------------------------------------------------------- 1 | // 2 | // Action.js 3 | // VoyagerActionExtension 4 | // 5 | // Created by Alexander Harding on 3/11/24. 6 | // 7 | 8 | var Action = function() {}; 9 | 10 | Action.prototype = { 11 | run: function(arguments) { 12 | arguments.completionFunction({ "url" : document.URL }) 13 | }, 14 | finalize: function(arguments) { 15 | var openingUrl = arguments["deeplink"] 16 | if (openingUrl) { 17 | document.location.href = openingUrl 18 | } 19 | } 20 | }; 21 | 22 | var ExtensionPreprocessingJS = new Action 23 | -------------------------------------------------------------------------------- /ios/App/VoyagerActionExtension/Assets.xcassets/ActionIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "actionicon.png", 5 | "idiom" : "universal", 6 | "platform" : "ios", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ios/App/VoyagerActionExtension/Assets.xcassets/ActionIcon.appiconset/actionicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/VoyagerActionExtension/Assets.xcassets/ActionIcon.appiconset/actionicon.png -------------------------------------------------------------------------------- /ios/App/VoyagerActionExtension/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "platform" : "universal", 6 | "reference" : "systemBlueColor" 7 | }, 8 | "idiom" : "universal" 9 | } 10 | ], 11 | "info" : { 12 | "author" : "xcode", 13 | "version" : 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/Assets.xcassets/AppIcon.appiconset/AppIcon-1024@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/ios/App/VoyagerWatch Watch App/Assets.xcassets/AppIcon.appiconset/AppIcon-1024@4x.png -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "AppIcon-1024@4x.png", 5 | "idiom" : "universal", 6 | "platform" : "watchos", 7 | "size" : "1024x1024" 8 | } 9 | ], 10 | "info" : { 11 | "author" : "xcode", 12 | "version" : 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/VoyagerWatchApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VoyagerWatchApp.swift 3 | // VoyagerWatch Watch App 4 | // 5 | // Created by Alexander Harding on 8/3/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct VoyagerWatch_Watch_AppApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | NavigationView { 15 | HomeView() 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/models/GetPostsResponse.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GetPostsResponse.swift 3 | // watchapp Watch App 4 | // 5 | // Created by Alexander Harding on 8/2/23. 6 | // 7 | 8 | import Foundation 9 | 10 | struct GetPostsResponse: Codable { 11 | let posts: [PostView] 12 | } 13 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/models/Post.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Post.swift 3 | // watchapp Watch App 4 | // 5 | // Created by Alexander Harding on 8/2/23. 6 | // 7 | 8 | import Foundation 9 | 10 | struct Post: Codable, Identifiable { 11 | let id: Int 12 | let name: String 13 | let url: String? 14 | let body: String? 15 | let thumbnailUrl: String? 16 | } 17 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/models/PostView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PostView.swift 3 | // watchapp Watch App 4 | // 5 | // Created by Alexander Harding on 8/2/23. 6 | // 7 | 8 | import Foundation 9 | 10 | struct PostView: Codable, Identifiable { 11 | var id: Int { 12 | post.id 13 | } 14 | 15 | let post: Post 16 | let saved: Bool 17 | } 18 | -------------------------------------------------------------------------------- /ios/App/VoyagerWatch Watch App/models/SavePost.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SavePost.swift 3 | // watchapp Watch App 4 | // 5 | // Created by Alexander Harding on 8/2/23. 6 | // 7 | 8 | import Foundation 9 | 10 | struct SavePost: Codable { 11 | let post_id: Int 12 | let save: Bool 13 | let auth: String 14 | } 15 | -------------------------------------------------------------------------------- /nginx.conf.template: -------------------------------------------------------------------------------- 1 | server { 2 | listen ${NGINX_PORT}; 3 | 4 | gzip on; 5 | gzip_types text/css application/javascript application/json image/svg+xml; 6 | gzip_comp_level 9; 7 | 8 | root /var/www/; 9 | 10 | location / { 11 | try_files $uri /index.html; 12 | add_header Cache-Control no-cache; 13 | } 14 | 15 | location /assets/ { 16 | add_header Cache-Control max-age=31536000; 17 | } 18 | 19 | location /_config { 20 | alias /var/www/config.json; 21 | add_header Cache-Control no-cache; 22 | } 23 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /public/alternateIcons/galactic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/galactic.png -------------------------------------------------------------------------------- /public/alternateIcons/holidays.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/holidays.png -------------------------------------------------------------------------------- /public/alternateIcons/original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/original.png -------------------------------------------------------------------------------- /public/alternateIcons/planetary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/planetary.png -------------------------------------------------------------------------------- /public/alternateIcons/pride.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/pride.png -------------------------------------------------------------------------------- /public/alternateIcons/psych.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/psych.png -------------------------------------------------------------------------------- /public/alternateIcons/space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/alternateIcons/space.png -------------------------------------------------------------------------------- /public/badges/fdroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/badges/fdroid.png -------------------------------------------------------------------------------- /public/favicons/192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/favicons/192.png -------------------------------------------------------------------------------- /public/favicons/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/favicons/512.png -------------------------------------------------------------------------------- /public/logo-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/logo-1024.png -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/logo.png -------------------------------------------------------------------------------- /public/promo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/promo.webp -------------------------------------------------------------------------------- /public/screenshots/android/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/screenshots/android/1.png -------------------------------------------------------------------------------- /public/screenshots/android/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/screenshots/android/2.png -------------------------------------------------------------------------------- /public/screenshots/android/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/screenshots/android/3.png -------------------------------------------------------------------------------- /public/screenshots/android/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/screenshots/android/4.png -------------------------------------------------------------------------------- /public/screenshots/android/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/screenshots/android/5.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1125-2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1125-2436.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1136-640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1136-640.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1170-2532.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1170-2532.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1179-2556.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1179-2556.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1242-2208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1242-2208.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1242-2688.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1242-2688.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1284-2778.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1284-2778.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1290-2796.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1290-2796.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1334-750.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1334-750.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1536-2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1536-2048.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1620-2160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1620-2160.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1668-2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1668-2224.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1668-2388.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1668-2388.png -------------------------------------------------------------------------------- /public/splash/apple-splash-1792-828.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-1792-828.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2048-1536.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2048-1536.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2048-2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2048-2732.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2160-1620.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2160-1620.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2208-1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2208-1242.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2224-1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2224-1668.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2388-1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2388-1668.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2436-1125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2436-1125.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2532-1170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2532-1170.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2556-1179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2556-1179.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2688-1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2688-1242.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2732-2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2732-2048.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2778-1284.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2778-1284.png -------------------------------------------------------------------------------- /public/splash/apple-splash-2796-1290.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-2796-1290.png -------------------------------------------------------------------------------- /public/splash/apple-splash-640-1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-640-1136.png -------------------------------------------------------------------------------- /public/splash/apple-splash-750-1334.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-750-1334.png -------------------------------------------------------------------------------- /public/splash/apple-splash-828-1792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-828-1792.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1125-2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1125-2436.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1136-640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1136-640.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1170-2532.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1170-2532.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1179-2556.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1179-2556.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1242-2208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1242-2208.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1242-2688.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1242-2688.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1284-2778.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1284-2778.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1290-2796.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1290-2796.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1334-750.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1334-750.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1536-2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1536-2048.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1620-2160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1620-2160.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1668-2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1668-2224.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1668-2388.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1668-2388.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-1792-828.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-1792-828.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2048-1536.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2048-1536.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2048-2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2048-2732.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2160-1620.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2160-1620.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2208-1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2208-1242.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2224-1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2224-1668.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2388-1668.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2388-1668.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2436-1125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2436-1125.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2532-1170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2532-1170.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2556-1179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2556-1179.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2688-1242.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2688-1242.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2732-2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2732-2048.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2778-1284.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2778-1284.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-2796-1290.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-2796-1290.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-640-1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-640-1136.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-750-1334.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-750-1334.png -------------------------------------------------------------------------------- /public/splash/apple-splash-dark-828-1792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/public/splash/apple-splash-dark-828-1792.png -------------------------------------------------------------------------------- /resources/icon-foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/resources/icon-foreground.png -------------------------------------------------------------------------------- /resources/icon-only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/resources/icon-only.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aeharding/voyager/13881a40e5da81b6529083f1bfce99114e65e0f2/resources/splash.png -------------------------------------------------------------------------------- /scripts/disable_in_app_purchases.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Check the folder doesn't exist before performing actions 4 | if [ -d "src/features/tips/inAppPurchase__stub" ]; then 5 | pnpm uninstall capacitor-tips 6 | 7 | # Removes the proprietary google play app purchase libs 8 | npx cap update 9 | 10 | # Remove and rename files 11 | rm -rf src/features/tips/inAppPurchase 12 | mv src/features/tips/inAppPurchase__stub src/features/tips/inAppPurchase 13 | else 14 | echo "In-app purchases already disabled and references removed. Skipping uninstallation and file operations." 15 | fi 16 | -------------------------------------------------------------------------------- /scripts/prebuild.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | SETUP_SCRIPT="./scripts/disable_in_app_purchases.sh" 4 | 5 | # Check if the environment variable BUILD_FOSS_ONLY is set 6 | if [ ! -z "$BUILD_FOSS_ONLY" ]; then 7 | # Run the setup script 8 | sh "$SETUP_SCRIPT" 9 | 10 | echo "In-app purchases disabled." 11 | else 12 | echo "BUILD_FOSS_ONLY not set. In-app purchases not disabled." 13 | fi 14 | -------------------------------------------------------------------------------- /scripts/release.sh: -------------------------------------------------------------------------------- 1 | read -p "Would you like to cut a release? [Y/n] " -n 1 -r 2 | echo 3 | if [[ $REPLY =~ ^[Yy]$ ]] 4 | then 5 | gh workflow run release.yml 6 | fi 7 | -------------------------------------------------------------------------------- /src/core/AppCrash.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | gap: 16px; 6 | text-align: center; 7 | padding: 8px; 8 | 9 | position: absolute; 10 | inset: 0; 11 | 12 | overflow: auto; 13 | 14 | padding-top: max(env(safe-area-inset-top), 8px); 15 | padding-right: max(env(safe-area-inset-right), 8px); 16 | padding-bottom: max(env(safe-area-inset-bottom), 8px); 17 | padding-left: max(env(safe-area-inset-left), 8px); 18 | 19 | color: var(--ion-text-color); 20 | } 21 | -------------------------------------------------------------------------------- /src/core/GlobalStyles.module.css: -------------------------------------------------------------------------------- 1 | .fixedDeviceFont { 2 | --ion-dynamic-font: initial; 3 | } 4 | -------------------------------------------------------------------------------- /src/core/listeners/network/listener.ts: -------------------------------------------------------------------------------- 1 | import { Network } from "@capacitor/network"; 2 | 3 | import { isNative } from "#/helpers/device"; 4 | import store from "#/store"; 5 | 6 | import { getConnectionType, updateConnectionType } from "./networkSlice"; 7 | 8 | (async () => { 9 | if (!isNative()) return; 10 | 11 | await store.dispatch(getConnectionType()); 12 | 13 | Network.addListener("networkStatusChange", ({ connectionType }) => { 14 | store.dispatch(updateConnectionType(connectionType)); 15 | }); 16 | })(); 17 | -------------------------------------------------------------------------------- /src/core/theme/lightVariables.css: -------------------------------------------------------------------------------- 1 | html:not(.ion-palette-dark) { 2 | &:root { 3 | --ion-color-primary: var(--app-primary); 4 | --ion-color-primary-fixed: #3880ff; /* always blue always blue! */ 5 | 6 | ion-item { 7 | /* default ionic light mode opacity is too harsh */ 8 | --background-activated-opacity: 0.06; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/features/auth/SharedDialogContext.module.css: -------------------------------------------------------------------------------- 1 | .autoHeight { 2 | --height: auto; 3 | } 4 | -------------------------------------------------------------------------------- /src/features/auth/login/LearnMore.module.css: -------------------------------------------------------------------------------- 1 | .content { 2 | line-height: 1.4; 3 | } 4 | 5 | .list { 6 | li:not(:last-of-type) { 7 | margin-bottom: 1rem; 8 | } 9 | } 10 | 11 | .compare { 12 | display: flex; 13 | text-align: center; 14 | align-items: center; 15 | justify-content: space-around; 16 | 17 | line-height: 1.5; 18 | 19 | margin: 1rem 0; 20 | 21 | > div { 22 | display: flex; 23 | flex-direction: column; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/features/auth/login/LoginModal.module.css: -------------------------------------------------------------------------------- 1 | .modal { 2 | --max-width: 500px; 3 | 4 | @media (min-width: 600px) { 5 | --max-height: 750px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/features/auth/login/login/LoginAvatarImg.module.css: -------------------------------------------------------------------------------- 1 | .img { 2 | object-fit: contain; 3 | } 4 | 5 | .loading { 6 | background-color: rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.07); 7 | } 8 | -------------------------------------------------------------------------------- /src/features/auth/login/login/PickLoginServer.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | height: 100%; 3 | 4 | display: flex; 5 | flex-direction: column; 6 | } 7 | 8 | .list { 9 | flex: 1; 10 | 11 | --ion-item-background: none; 12 | } 13 | -------------------------------------------------------------------------------- /src/features/auth/login/pickJoinServer/Filters.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | 4 | overflow: auto; 5 | 6 | padding-left: 8px; 7 | padding-right: 8px; 8 | 9 | > * { 10 | flex-shrink: 0; 11 | } 12 | 13 | &::-webkit-scrollbar { 14 | display: none; 15 | } 16 | } 17 | 18 | .selectedChip { 19 | --background: var(--ion-color-primary); 20 | --color: var(--ion-color-primary-contrast); 21 | } 22 | -------------------------------------------------------------------------------- /src/features/auth/login/welcome/AndroidClose.module.css: -------------------------------------------------------------------------------- 1 | .androidIonButtons { 2 | :global(.ios) & { 3 | display: none; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/features/comment/Comment.module.css: -------------------------------------------------------------------------------- 1 | .commentItem { 2 | scroll-margin-bottom: 35vh; 3 | 4 | --padding-start: 0; 5 | --inner-padding-end: 0; 6 | --border-style: none; 7 | --min-height: 0; 8 | } 9 | 10 | .content { 11 | padding-top: 0.35em; 12 | 13 | display: flex; 14 | flex-direction: column; 15 | gap: 1em; 16 | 17 | @media (hover: none) { 18 | padding-top: 0.45em; 19 | } 20 | 21 | line-height: 1.25; 22 | } 23 | -------------------------------------------------------------------------------- /src/features/comment/CommentEllipsis.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | font-size: 1.2em; 3 | } 4 | -------------------------------------------------------------------------------- /src/features/comment/CommentLinks.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 12px; 5 | } 6 | -------------------------------------------------------------------------------- /src/features/comment/elements/PositionedContainer.module.css: -------------------------------------------------------------------------------- 1 | .positionedContainer { 2 | composes: maxWidth from "#/features/shared/shared.module.css"; 3 | 4 | position: relative; 5 | 6 | padding: 8px 12px; 7 | 8 | @media (hover: none) { 9 | padding-top: 0.65em; 10 | padding-bottom: 0.65em; 11 | } 12 | 13 | padding-left: calc(12px + max(0px, calc(calc(var(--sv-depth) - 1) * 10px))); 14 | } 15 | -------------------------------------------------------------------------------- /src/features/comment/elements/PositionedContainer.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { sv } from "#/helpers/css"; 4 | 5 | import styles from "./PositionedContainer.module.css"; 6 | 7 | interface PositionedContainerProps extends React.PropsWithChildren { 8 | depth: number; 9 | } 10 | 11 | export function PositionedContainer({ 12 | depth, 13 | ...props 14 | }: PositionedContainerProps) { 15 | return ( 16 |
21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/features/comment/inTree/CommentExpander.module.css: -------------------------------------------------------------------------------- 1 | .moreRepliesBlock { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | width: 100%; 6 | 7 | color: var(--ion-color-primary); 8 | 9 | opacity: 1; 10 | } 11 | 12 | .hidden { 13 | opacity: 0; 14 | } 15 | 16 | .chevronIcon { 17 | font-size: 1rem; 18 | } 19 | 20 | .spinner { 21 | width: 1.25rem; 22 | opacity: 0.6; 23 | 24 | position: absolute; 25 | top: 50%; 26 | left: 50%; 27 | transform: translate(-50%, -50%); 28 | } 29 | -------------------------------------------------------------------------------- /src/features/comment/inTree/CommentHr.module.css: -------------------------------------------------------------------------------- 1 | .hrContainer { 2 | composes: maxWidth from "#/features/shared/shared.module.css"; 3 | 4 | position: absolute; 5 | left: 50%; 6 | transform: translateX(-50%); 7 | z-index: 100; 8 | 9 | padding-left: calc(0.5rem + calc(calc(var(--sv-depth) - 1) * 10px)); 10 | } 11 | 12 | .hr { 13 | flex: 1; 14 | height: 1px; 15 | background-color: var( 16 | --ion-item-border-color, 17 | var(--ion-border-color, var(--ion-background-color-step-250, #c8c7cc)) 18 | ); 19 | width: 100%; 20 | margin: 0; 21 | } 22 | -------------------------------------------------------------------------------- /src/features/comment/inTree/CommentHr.tsx: -------------------------------------------------------------------------------- 1 | import { sv } from "#/helpers/css"; 2 | 3 | import styles from "./CommentHr.module.css"; 4 | 5 | interface CommentHrProps { 6 | depth: number; 7 | } 8 | 9 | export default function CommentHr({ depth }: CommentHrProps) { 10 | return ( 11 |
12 |
13 |
14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/features/comment/inTree/Comments.module.css: -------------------------------------------------------------------------------- 1 | .scrollViewContainer { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .center { 7 | position: relative; 8 | padding: 4rem 0 4rem; 9 | left: 50%; 10 | transform: translateX(-50%); 11 | } 12 | 13 | .spinner { 14 | composes: center; 15 | 16 | opacity: 0.7; 17 | } 18 | 19 | .empty { 20 | composes: center; 21 | 22 | display: flex; 23 | flex-direction: column; 24 | gap: 0.5rem; 25 | text-align: center; 26 | 27 | aside { 28 | color: var(--ion-color-medium); 29 | font-size: 0.8em; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/features/comment/inTree/CommentsContext.ts: -------------------------------------------------------------------------------- 1 | import { noop } from "es-toolkit"; 2 | import { CommentView } from "lemmy-js-client"; 3 | import { createContext } from "react"; 4 | 5 | interface ICommentsContext { 6 | refresh: () => void; 7 | prependComments: (comments: CommentView[]) => void; 8 | appendComments: (comments: CommentView[]) => void; 9 | getComments: () => CommentView[] | void; 10 | } 11 | 12 | export const CommentsContext = createContext({ 13 | refresh: noop, 14 | appendComments: noop, 15 | prependComments: noop, 16 | getComments: noop, 17 | }); 18 | -------------------------------------------------------------------------------- /src/features/comment/inTree/ContinueThread.module.css: -------------------------------------------------------------------------------- 1 | .moreRepliesBlock { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | width: 100%; 6 | 7 | color: var(--ion-color-primary); 8 | } 9 | 10 | .chevronIcon { 11 | font-size: 1rem; 12 | } 13 | -------------------------------------------------------------------------------- /src/features/comment/inTree/FullyCollapsibleComment.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from "react"; 2 | import AnimateHeight from "react-animate-height"; 3 | 4 | import Comment from "../Comment"; 5 | 6 | interface CollapsibleCommentProps extends ComponentProps { 7 | fullyCollapsed?: boolean; 8 | } 9 | 10 | export default function FullyCollapsibleComment({ 11 | fullyCollapsed, 12 | ...rest 13 | }: CollapsibleCommentProps) { 14 | return ( 15 | 16 | 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /src/features/comment/inTree/LoadParentComments.module.css: -------------------------------------------------------------------------------- 1 | .moreRepliesBlock { 2 | display: flex; 3 | align-items: center; 4 | gap: 8px; 5 | width: 100%; 6 | 7 | color: var(--ion-color-primary); 8 | } 9 | 10 | .chevronIcon { 11 | font-size: 1rem; 12 | } 13 | -------------------------------------------------------------------------------- /src/features/community/ToggleIcon.module.css: -------------------------------------------------------------------------------- 1 | .base { 2 | font-size: 24px; 3 | } 4 | 5 | .selected { 6 | color: var(--ion-color-primary); 7 | } 8 | 9 | .unselected { 10 | opacity: 0.08; 11 | } 12 | -------------------------------------------------------------------------------- /src/features/community/list/EmptyCommunities.module.css: -------------------------------------------------------------------------------- 1 | .inlineChip { 2 | margin: -8px 0; 3 | padding: 3px 8px; 4 | min-height: 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/features/community/list/InitialPageRedirectBootstrapper.module.css: -------------------------------------------------------------------------------- 1 | .loadingOverlay { 2 | background: var(--ion-background-color); 3 | position: fixed; 4 | inset: 0; 5 | z-index: 1000; 6 | } 7 | -------------------------------------------------------------------------------- /src/features/community/list/items/CommunityListItem.module.css: -------------------------------------------------------------------------------- 1 | .toggleIcon { 2 | @media (max-width: 725px) { 3 | margin-right: 8px; 4 | } 5 | 6 | /* Hide alphabet jump query DO NOT MODIFY unless also changing everywhere else */ 7 | @media (max-height: 600px) and (orientation: landscape) { 8 | margin-right: 0; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/features/community/list/useShowModeratorFeed.ts: -------------------------------------------------------------------------------- 1 | import { useAppSelector } from "#/store"; 2 | 3 | export default function useShowModeratorFeed() { 4 | const moderates = useAppSelector( 5 | (state) => state.site.response?.my_user?.moderates, 6 | ); 7 | 8 | return !!moderates?.length; 9 | } 10 | -------------------------------------------------------------------------------- /src/features/feed/PostCommentFeed.module.css: -------------------------------------------------------------------------------- 1 | .thickBottomBorder { 2 | border-bottom: 8px solid var(--thick-separator-color); 3 | } 4 | -------------------------------------------------------------------------------- /src/features/feed/empty/home/Pack.module.css: -------------------------------------------------------------------------------- 1 | .disabled { 2 | pointer-events: none; 3 | } 4 | -------------------------------------------------------------------------------- /src/features/feed/endItems/EndPost.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 1rem; 5 | padding: 3rem 3rem 4rem; 6 | font-size: 0.875em; 7 | align-items: center; 8 | justify-content: center; 9 | color: var(--ion-color-medium); 10 | } 11 | -------------------------------------------------------------------------------- /src/features/feed/endItems/FeedLoadMoreFailed.tsx: -------------------------------------------------------------------------------- 1 | import endPostStyles from "./EndPost.module.css"; 2 | 3 | interface FeedLoadMoreFailedProps { 4 | fetchMore: () => void; 5 | loading: boolean; 6 | pluralType?: string; 7 | } 8 | 9 | export default function FeedLoadMoreFailed({ 10 | fetchMore, 11 | loading, 12 | pluralType = "posts", 13 | }: FeedLoadMoreFailedProps) { 14 | return ( 15 |
fetchMore()} className={endPostStyles.container}> 16 | Failed to load more {pluralType}. {loading ? "Loading..." : "Try again?"} 17 |
18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /src/features/feed/endItems/FetchMore.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | height: 100px; 5 | font-size: 0.875em; 6 | align-items: center; 7 | justify-content: center; 8 | color: var(--ion-color-medium); 9 | } 10 | -------------------------------------------------------------------------------- /src/features/feed/postFabs/PostFabs.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from "react"; 2 | 3 | import { useAppSelector } from "#/store"; 4 | 5 | import HidePostsFab from "./HidePostsFab"; 6 | 7 | export default function PostFabs(props: ComponentProps) { 8 | const showHideReadButton = useAppSelector( 9 | (state) => state.settings.general.posts.showHideReadButton, 10 | ); 11 | 12 | return <>{showHideReadButton && }; 13 | } 14 | -------------------------------------------------------------------------------- /src/features/feed/useCommonPostFeedParams.ts: -------------------------------------------------------------------------------- 1 | import { GetPosts } from "lemmy-js-client"; 2 | 3 | import { handleSelector } from "#/features/auth/authSelectors"; 4 | import { useAppSelector } from "#/store"; 5 | 6 | export default function useCommonPostFeedParams(): 7 | | Pick 8 | | undefined { 9 | const handle = useAppSelector(handleSelector); 10 | 11 | if (handle === "lemmynsfw.com") return { show_nsfw: true }; 12 | } 13 | -------------------------------------------------------------------------------- /src/features/feed/useFeedUpdate.ts: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | 3 | export default function useFeedUpdate() { 4 | const [fetchFnLastUpdated, setFetchFnLastUpdated] = useState(0); 5 | 6 | function notifyFeedUpdated() { 7 | setFetchFnLastUpdated(Date.now()); 8 | } 9 | 10 | return { 11 | notifyFeedUpdated, 12 | fetchFnLastUpdated, 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /src/features/icons/svg/airplay.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/bold.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/calendarSingleDay.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/features/icons/svg/faceid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/listUnordered.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/pip.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/strikethrough.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/subscript.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/icons/svg/superscript.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/features/inbox/BoxesRedirectBootstrapper.tsx: -------------------------------------------------------------------------------- 1 | import { loggedInSelector } from "#/features/auth/authSelectors"; 2 | import InitialPageRedirectBootstrapper from "#/features/community/list/InitialPageRedirectBootstrapper"; 3 | import { useAppSelector } from "#/store"; 4 | 5 | export default function BoxesRedirectBootstrapper() { 6 | const loggedIn = useAppSelector(loggedInSelector); 7 | 8 | if (!loggedIn) return; 9 | 10 | return ; 11 | } 12 | -------------------------------------------------------------------------------- /src/features/inbox/InboxItemMoreActions.module.css: -------------------------------------------------------------------------------- 1 | .button { 2 | composes: plainButton from "#/features/shared/shared.module.css"; 3 | 4 | && { 5 | font-size: 1.12em; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/features/inbox/PrivateMessageMoreActions.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | font-size: 1.2em; 3 | } 4 | -------------------------------------------------------------------------------- /src/features/inbox/VoteArrow.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | font-size: 1.4em; 3 | 4 | width: 100%; 5 | height: 1rem; 6 | 7 | position: relative; 8 | } 9 | 10 | .voteIcon { 11 | position: absolute; 12 | left: 50%; 13 | top: 50%; 14 | transform: translate(-50%, -50%); 15 | } 16 | -------------------------------------------------------------------------------- /src/features/inbox/messages/Time.tsx: -------------------------------------------------------------------------------- 1 | import { differenceInDays, differenceInHours, format } from "date-fns"; 2 | 3 | interface TimeProps { 4 | date: string; 5 | } 6 | 7 | export default function Time({ date: dateStr }: TimeProps) { 8 | const date = new Date(dateStr); 9 | 10 | if (differenceInDays(new Date(), date) > 6) { 11 | return <>{format(date, "PP")}; 12 | } 13 | 14 | if (differenceInHours(new Date(), date) > 24) { 15 | return <>{format(date, "iiii")}; 16 | } 17 | 18 | return <>{format(date, "p")}; 19 | } 20 | -------------------------------------------------------------------------------- /src/features/labels/Edited.module.css: -------------------------------------------------------------------------------- 1 | .edited { 2 | display: flex; 3 | align-items: center; 4 | gap: inherit; 5 | 6 | margin: -3px; 7 | padding: 3px; 8 | } 9 | -------------------------------------------------------------------------------- /src/features/labels/Handle.module.css: -------------------------------------------------------------------------------- 1 | .aside { 2 | display: inline; 3 | opacity: 0.7; 4 | } 5 | -------------------------------------------------------------------------------- /src/features/labels/Nsfw.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | font-size: 0.8rem; 3 | vertical-align: middle; 4 | padding: 2px 4px; 5 | border-radius: 8px; 6 | margin-left: 4px; 7 | background: #ff0000; 8 | background: color(display-p3 1 0 0); 9 | color: white; 10 | } 11 | -------------------------------------------------------------------------------- /src/features/labels/Save.module.css: -------------------------------------------------------------------------------- 1 | .marker { 2 | position: absolute; 3 | right: 0; 4 | bottom: 1px; /* Match bottom edge of sliding options, which is slightly inset */ 5 | 6 | --size: 18px; 7 | 8 | width: 0; 9 | height: 0; 10 | border-left: var(--size) solid transparent; 11 | border-right: 0 solid transparent; 12 | 13 | border-bottom: var(--size) solid var(--ion-color-success); 14 | } 15 | -------------------------------------------------------------------------------- /src/features/labels/Save.tsx: -------------------------------------------------------------------------------- 1 | import { useAppSelector } from "#/store"; 2 | 3 | import styles from "./Save.module.css"; 4 | 5 | interface SaveProps { 6 | type: "comment" | "post"; 7 | id: number; 8 | } 9 | 10 | export default function Save({ type, id }: SaveProps) { 11 | const saved = useAppSelector((state) => 12 | type === "comment" 13 | ? state.comment.commentSavedById[id] 14 | : state.post.postSavedById[id], 15 | ); 16 | 17 | if (!saved) return null; 18 | 19 | return
; 20 | } 21 | -------------------------------------------------------------------------------- /src/features/labels/img/ItemIcon.module.css: -------------------------------------------------------------------------------- 1 | .subImgIcon { 2 | border-radius: 50%; 3 | object-fit: cover; 4 | } 5 | -------------------------------------------------------------------------------- /src/features/labels/links/AppBadge.module.css: -------------------------------------------------------------------------------- 1 | .newAccountBadge { 2 | color: #d9a900; 3 | 4 | :global(.ion-palette-dark) & { 5 | color: gold; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/features/labels/links/CommunityLink.module.css: -------------------------------------------------------------------------------- 1 | .itemIcon { 2 | margin-right: 0.4rem; 3 | vertical-align: middle; 4 | } 5 | 6 | .subscribedIcon { 7 | color: var(--ion-color-primary); 8 | vertical-align: middle; 9 | 10 | margin-bottom: 1px; 11 | margin-left: 2px; 12 | 13 | opacity: 0.4; 14 | 15 | :global(.ion-palette-dark) & { 16 | opacity: 0.5; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/features/labels/links/PersonLink.module.css: -------------------------------------------------------------------------------- 1 | .prefix { 2 | font-weight: normal; 3 | } 4 | 5 | .shrinkable { 6 | min-width: 0; 7 | overflow: hidden; 8 | text-overflow: ellipsis; 9 | } 10 | -------------------------------------------------------------------------------- /src/features/labels/links/shared.module.css: -------------------------------------------------------------------------------- 1 | .linkContainer { 2 | position: relative; 3 | display: inline; 4 | 5 | font-weight: 500; 6 | white-space: nowrap; 7 | 8 | overflow: hidden; 9 | text-overflow: ellipsis; 10 | } 11 | 12 | .link { 13 | text-decoration: none; 14 | color: inherit; 15 | } 16 | 17 | .hide { 18 | position: relative; 19 | 20 | &:after { 21 | content: ""; 22 | position: absolute; 23 | inset: 0; 24 | background: var(--ion-background-color-step-150, #ccc); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/features/labels/vote/shared.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | /* Vote icons are tall and narrow, but svg container is square. 3 | * This creates visually inconsistent padding. 4 | * So fudge it so it looks better next to more square icons 5 | */ 6 | margin: 0 -2px; 7 | } 8 | -------------------------------------------------------------------------------- /src/features/media/external/redgifs/LargeFeedRedgifMedia.module.css: -------------------------------------------------------------------------------- 1 | .enableWarningContainer { 2 | display: flex; 3 | flex-direction: column; 4 | padding: 16px; 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /src/features/media/external/redgifs/helpers.ts: -------------------------------------------------------------------------------- 1 | import { canBypassCors } from "#/helpers/device"; 2 | 3 | export const redgifUrlRegex = 4 | /^https?:\/\/(?:www\.|v3\.)?redgifs.com\/watch\/([a-z0-9]+)/; 5 | 6 | export function platformSupportsRedgif() { 7 | return canBypassCors(); 8 | } 9 | 10 | export function isRedgif(url: string): boolean { 11 | if (!platformSupportsRedgif()) return false; 12 | 13 | return redgifUrlRegex.test(url); 14 | } 15 | -------------------------------------------------------------------------------- /src/features/media/gallery/actions/GalleryPostActions.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-around; 5 | font-size: 1.5em; 6 | 7 | max-width: 600px; 8 | width: 100%; 9 | 10 | a { 11 | text-decoration: none; 12 | color: inherit; 13 | } 14 | } 15 | 16 | .section { 17 | display: flex; 18 | align-items: center; 19 | gap: 0.5rem; 20 | } 21 | 22 | .amount { 23 | font-size: 1rem; 24 | } 25 | -------------------------------------------------------------------------------- /src/features/media/gallery/actions/ImageMoreActions.module.css: -------------------------------------------------------------------------------- 1 | .topContainer { 2 | position: absolute; 3 | top: 0; 4 | right: 0; 5 | left: 0; 6 | height: 60px; 7 | padding: 0 1rem; 8 | margin-top: var(--ion-safe-area-top, env(safe-area-inset-top, 0)); 9 | 10 | display: flex; 11 | align-items: center; 12 | 13 | color: white; 14 | 15 | font-size: 1.5em; 16 | } 17 | -------------------------------------------------------------------------------- /src/features/media/gallery/actions/vote/HideVoteMode.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from "react"; 2 | 3 | import { VoteButton } from "#/features/post/shared/VoteButton"; 4 | 5 | import Vote from "./Vote"; 6 | 7 | import styles from "../GalleryPostActions.module.css"; 8 | 9 | export default function HideVoteMode({ post }: ComponentProps) { 10 | return ( 11 |
12 | 13 | 14 |
15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /src/features/media/useImageData.ts: -------------------------------------------------------------------------------- 1 | import { useAppSelector } from "#/store"; 2 | 3 | import { IMAGE_FAILED, ImageMetadata } from "./imageSlice"; 4 | 5 | export default function useImageData(src: string | undefined) { 6 | return useAppSelector((state) => 7 | src ? state.image.loadedBySrc[src] : undefined, 8 | ); 9 | } 10 | 11 | export function isLoadedImageData( 12 | imageData: ImageMetadata | typeof IMAGE_FAILED | undefined, 13 | ) { 14 | return typeof imageData === "object" && imageData.aspectRatio > 0; 15 | } 16 | -------------------------------------------------------------------------------- /src/features/media/video/OutPortalEventDispatcher.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | flex: 1; 3 | display: flex; 4 | width: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /src/features/media/video/VideoPortalProvider.module.css: -------------------------------------------------------------------------------- 1 | .portalNodeStyles { 2 | flex: 1; 3 | display: flex; 4 | width: 100%; 5 | } 6 | -------------------------------------------------------------------------------- /src/features/moderation/ban/BanUser.module.css: -------------------------------------------------------------------------------- 1 | .daysValues { 2 | display: flex; 3 | align-items: center; 4 | gap: 16px; 5 | } 6 | 7 | .banTextContainer { 8 | font-size: 0.925em; 9 | margin: 0 32px 32px; 10 | } 11 | -------------------------------------------------------------------------------- /src/features/moderation/ban/BanUserModal.module.css: -------------------------------------------------------------------------------- 1 | .modPrimaryColor { 2 | --ion-color-primary: var(--ion-color-success); 3 | } 4 | -------------------------------------------------------------------------------- /src/features/moderation/banner/ModeratableItemBanner.module.css: -------------------------------------------------------------------------------- 1 | .sharedBanner { 2 | composes: maxWidth from "#/features/shared/shared.module.css"; 3 | 4 | display: flex; 5 | align-items: center; 6 | justify-content: center; 7 | gap: 6px; 8 | 9 | font-size: 0.875rem; 10 | 11 | padding: 6px 0; 12 | border-radius: 6px; 13 | 14 | text-align: center; 15 | } 16 | -------------------------------------------------------------------------------- /src/features/moderation/logs/ModRolePersonLink.module.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | font-size: 1.2em; 3 | vertical-align: middle; 4 | transform: translateY(-1px); 5 | } 6 | -------------------------------------------------------------------------------- /src/features/moderation/logs/ModlogItemMoreActions.module.css: -------------------------------------------------------------------------------- 1 | .button { 2 | composes: plainButton from "#/features/shared/shared.module.css"; 3 | 4 | && { 5 | margin: -6px 0; /* prevent size from breaking line height */ 6 | } 7 | } 8 | 9 | .ellipsisIcon { 10 | font-size: 1.2rem; 11 | } 12 | -------------------------------------------------------------------------------- /src/features/moderation/logs/types/purgeComment.ts: -------------------------------------------------------------------------------- 1 | import { trashBin } from "ionicons/icons"; 2 | import { AdminPurgeCommentView } from "lemmy-js-client"; 3 | 4 | import { LogEntryData } from "../ModlogItem"; 5 | import { buildBaseData, getAdminRole } from "./shared"; 6 | 7 | export default function purgeComment( 8 | item: AdminPurgeCommentView, 9 | ): LogEntryData { 10 | return { 11 | icon: trashBin, 12 | title: "Purged Comment", 13 | by: item.admin, 14 | role: getAdminRole(item.admin), 15 | ...buildBaseData(item.admin_purge_comment), 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /src/features/moderation/logs/types/purgeCommunity.ts: -------------------------------------------------------------------------------- 1 | import { trashBin } from "ionicons/icons"; 2 | import { AdminPurgeCommunityView } from "lemmy-js-client"; 3 | 4 | import { LogEntryData } from "../ModlogItem"; 5 | import { buildBaseData, getAdminRole } from "./shared"; 6 | 7 | export default function purgeCommunity( 8 | item: AdminPurgeCommunityView, 9 | ): LogEntryData { 10 | return { 11 | icon: trashBin, 12 | title: "Purged Community", 13 | by: item.admin, 14 | role: getAdminRole(item.admin), 15 | ...buildBaseData(item.admin_purge_community), 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /src/features/moderation/logs/types/purgePerson.ts: -------------------------------------------------------------------------------- 1 | import { trashBin } from "ionicons/icons"; 2 | import { AdminPurgePersonView } from "lemmy-js-client"; 3 | 4 | import { LogEntryData } from "../ModlogItem"; 5 | import { buildBaseData, getAdminRole } from "./shared"; 6 | 7 | export default function purgePerson(item: AdminPurgePersonView): LogEntryData { 8 | return { 9 | icon: trashBin, 10 | title: "Purged User", 11 | by: item.admin, 12 | role: getAdminRole(item.admin), 13 | ...buildBaseData(item.admin_purge_person), 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /src/features/moderation/logs/types/purgePost.ts: -------------------------------------------------------------------------------- 1 | import { trashBin } from "ionicons/icons"; 2 | import { AdminPurgePostView } from "lemmy-js-client"; 3 | 4 | import { LogEntryData } from "../ModlogItem"; 5 | import { buildBaseData, getAdminRole } from "./shared"; 6 | 7 | export default function purgePost(item: AdminPurgePostView): LogEntryData { 8 | return { 9 | icon: trashBin, 10 | title: "Purged Post", 11 | by: item.admin, 12 | role: getAdminRole(item.admin), 13 | ...buildBaseData(item.admin_purge_post), 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /src/features/moderation/useIsAdmin.tsx: -------------------------------------------------------------------------------- 1 | import { Person } from "lemmy-js-client"; 2 | 3 | import { isAdminSelector } from "#/features/auth/siteSlice"; 4 | import { useAppSelector } from "#/store"; 5 | 6 | export default function useIsAdmin(person?: Person) { 7 | return useAppSelector( 8 | !person 9 | ? isAdminSelector 10 | : (state) => 11 | state.site.response?.admins?.some( 12 | (admin) => admin.person.id === person.id, 13 | ), 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/features/post/actions/ActionButton.module.css: -------------------------------------------------------------------------------- 1 | .button { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | 6 | background: inherit; 7 | font-size: inherit; 8 | color: inherit; 9 | 10 | padding: 0.35rem; 11 | 12 | border-radius: 8px; 13 | } 14 | -------------------------------------------------------------------------------- /src/features/post/actions/ActionButton.tsx: -------------------------------------------------------------------------------- 1 | import { ButtonHTMLAttributes } from "react"; 2 | 3 | import { cx } from "#/helpers/css"; 4 | 5 | import styles from "./ActionButton.module.css"; 6 | 7 | export function ActionButton(props: ButtonHTMLAttributes) { 8 | return