💥 a modern xkcd iOS client

Overview

XKCDY / app

This is the source code of the XKCDY app.

I built this app primarily as a way to learn Swift and SwiftUI. Because I was learning as I built this, there's probably a few weird architecture / design decisions. PRs are welcome. 😃

Packages & Technologies

Comments
  • Add Shuffle Button to Comics Grid

    Add Shuffle Button to Comics Grid

    Feature Description

    Adds an option to view a random comic directly from the comics grid.

    Changelist

    • Third button added to floating buttons row (see attached screenshots)
      • On iOS, button is centered horizontally in row
      • On iPadOS, button is grouped with other floating buttons
    • Button press opens comic pager already shuffled
    • Floating buttons preview updated with test response

    Testing Steps

    • Open XKCDY to the comics grid, confirming shuffle button is visible matching the above specs.
    • If not already available, add 2 or more comics to the Favorites tab.
    • Press the shuffle button in the All tab, confirming that a random comic is displayed.
    • Press the shuffle button in the Favorites tab, confirming that only a random favorite comic is displayed.

    E2E Criteria

    • Settings and search buttons work as intended when pressed
    • All three buttons work and display as intended in both portrait and landscape mode
    • Pressing on a comic from the comics grid works as intended, before and after shuffling from the grid
    • All actions from the comic overlay work as intended for the target comic
    • Returning to the comics grid from a random comic behaves the same as from a non-random comic

    Issues Noticed During Testing

    • Rapidly switching between the All and Favorites tab can crash the application. Reproducible in stable version without the above changes.

    Screenshots

    Shuffle Button - iPhone 8 Plus

    Shuffle Button - iPad Pro (12 9-inch) (4th generation)

    opened by scottblechman 7
  • Comics not marked as read

    Comics not marked as read

    To reproduce:

    1. Open the app on iPhone SE 2020.
    2. Tap on a comic to view it.
    3. Tap again on the comic to display back button (top left), title & number, alt text at the bottom.
    4. Tap on back button.
    5. The overview list of comments is shown. The background colour for the comic number just viewed stays as black (not changing to grey).
    6. Change to unread view. The comic just viewed is still shown in the unread section. The only comic treated as read is the first new comic after installing the app.
    bug 
    opened by LegoChicken 5
  • [RESOLVED] Pull down in the list crashes the app

    [RESOLVED] Pull down in the list crashes the app

    Hello!

    The list it up to date and there are no new comic. When I use the "pull down to refresh" thing, the app crashes.

    App version: 1.0.3 iOS version: 13.7

    Thanks a lot for the app!

    bug 
    opened by SiegfriedEhret 4
  • [RESOLVED] App crashes when hitting “Favorites” and no favorites defined

    [RESOLVED] App crashes when hitting “Favorites” and no favorites defined

    If no favorites has been defined, the app instantly crashes whenever you hit "Favorites". If I define a favorite, it works fine. Removing the favorite again, it crashes.

    Happens on latest iOS 14 beta.

    bug 
    opened by joachimtingvold 3
  • Icon not changing after Pro upgrade

    Icon not changing after Pro upgrade

    I just upgraded to Pro and I tried changing the icon, but it’s not changing. I tried completely quitting the app and starting again, but it’s still the default icon on the home screen.

    opened by jsnelson 3
  • iOS 14 bugs

    iOS 14 bugs

    iPhone 11, iOS 14 public beta 6, the moment I launch the app, I can feel my phone warm up.

    Not sure if this is related to iOS 14, but I'd be happy to run a TestFlight version of this app (would that be feasible?).

    Love the app! Thanks for making it!

    bug ios-beta 
    opened by nschmeller 2
  • Bump addressable from 2.7.0 to 2.8.0

    Bump addressable from 2.7.0 to 2.8.0

    Bumps addressable from 2.7.0 to 2.8.0.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions
    Commits
    • 6469a23 Updating gemspec again
    • 2433638 Merge branch 'main' of github.com:sporkmonger/addressable into main
    • e9c76b8 Merge pull request #378 from ashmaroli/flat-map
    • 56c5cf7 Update the gemspec
    • c1fed1c Require a non-vulnerable rake
    • 0d8a312 Adding note about ReDoS vulnerability
    • 89c7613 Merge branch 'template-regexp' into main
    • cf8884f Note about alias fix
    • bb03f71 Merge pull request #371 from charleystran/add_missing_encode_component_doc_entry
    • 6d1d809 Adding note about :compacted normalization
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Opening a new comic notification should show that comic instead of all comics

    Opening a new comic notification should show that comic instead of all comics

    If you swipe on a notification for a new comic, the app is opened, and refreshed (showing the new comic in the top left corner). However, you still need to select the comic manually. When swiping from the notification, the app should show the specific comic related to the notification.

    Happens on iOS 14 latest beta.

    enhancement 
    opened by joachimtingvold 1
  • Refactor for performance and fix UI glitches

    Refactor for performance and fix UI glitches

    • MVP of collection view
    • Don't need frozen observer
    • Cleanup
    • Fix memory leak, add image prefetching
    • Cleanup
    • Fix badge and animation
    • Transitions fully working 😌
    opened by codetheweb 0
  • Bump jmespath from 1.4.0 to 1.6.1

    Bump jmespath from 1.4.0 to 1.6.1

    Bumps jmespath from 1.4.0 to 1.6.1.

    Release notes

    Sourced from jmespath's releases.

    Release v1.6.1 - 2022-03-07

    • Issue - Use JSON.parse instead of JSON.load.

    Release v1.6.0 - 2022-02-14

    • Feature - Add support for string comparissons.

    Release v1.5.0 - 2022-01-10

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Changelog

    Sourced from jmespath's changelog.

    1.6.1 (2022-03-07)

    • Issue - Use JSON.parse instead of JSON.load.

    1.6.0 (2022-02-14)

    • Feature - Add support for string comparisons.

    1.5.0 (2022-01-10)

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.2.12)
Owner
Source code for the XKCDY iOS app
null
Xkcd iPhone app

This is the repo behind http://bit.ly/xkcdapp, an iOS xkcd reader. The code started as a learning project back on iOS 2.0 and has been through a lot s

Paul Rehkugler 41 Sep 20, 2022
Swift iPhone and iPad Client for Polls API, using Hyperdrive API client

Polls Client This is a Swift iPhone and iPad client for the Polls API - a simple application allowing users to view polls and vote in them. Polls is a

Apiary 34 Jul 15, 2022
Presentation for Podlodka iOS Crew #9 - Modern iOS Coding

Struct oriented programming vs Protocol oriented programming How do we use protocols How to do it without protocols How to transform any protocol to a

Evgenii Sukhanov 6 Dec 27, 2022
A demo app to showcase testable, modern iOS development with SwiftUI and Combine on MVVM-C architecture.

Coinz_App_iOS A demo app to showcase testable, modern iOS development with SwiftUI and Combine on MVVM-C architecture. Tech Stack: Swift, SwiftUI, Com

Burhan Aras 0 Dec 26, 2021
FSNotes is modern notes manager for macOS and iOS.

FSNotes FSNotes is modern notes manager for macOS and iOS. macOS app Key features Markdown-first. Also supports any plaintext and RTF files. Fast and

null 5.3k Dec 29, 2022
Demo implementing Modern MVVM with Combine and SwiftUI

ModernMVVM-Combine-SwiftUI Demo implementing Modern MVVM with Combine and SwiftUI Includes the following: Publishers feedback with needed extensions V

Ahmed M. Hassan 4 Dec 20, 2022
A modern front end for rpcs3, built in SwiftUI for macOS 12+

rpcs3-SwiftUI-macOS This is a SwiftUI wrapper for RPCS3 focused on bringing native SwiftUI support to the app for improved accessibility and performan

Team Puzel 2 May 4, 2022
Tutorial GraphQL + Node Express + MySQL, and sample for Android / iOS client

GraphQL-tutorial Tutorial for GraphQL + Node Express + MySQL, and sample for Android / iOS client Blog NeoRoman's GraphQL-tutorial (Korean) Materials

Henry Kim 4 Oct 20, 2022
Native Jellyfin Client for iOS and tvOS

Swiftfin Swiftfin is a modern client for the Jellyfin media server. Redesigned in Swift to maximize direct play with the power of VLC and look native

Jellyfin 1.1k Jan 6, 2023
Basic Unsplash client for iOS made with SwiftUI (beta).

PapersSwiftUI Basic Unsplash client for iOS made with SwiftUI (beta). Note SwiftUI is still in beta and I'm also still learning how it works. To-Do: P

Don 19 Dec 17, 2022
Client library for making in-app purchases on iOS and macOS Automattic apps

MobilePayKit Client library for making in-app purchases on iOS and macOS Automattic apps Introduction MobilePayKit is a client library for making in-a

Automattic 8 Oct 20, 2022
The alternative last.fm client for iOS made with SwiftUI

first.fm - The alternative last.fm client for iOS (it's actually not available on the App Store... yet) Features Your profile (top artists, tracks and

Stanislas 22 Aug 22, 2022
Tanukis-Stash - Open source e621 client for iOS built with SwiftUI

The Tanuki's Stash The worlds first e621 client for iOS, iPadOS, and macOS built

Jay 3 Jul 29, 2022
Mastodon and Twitter client for iOS, iPadOS & macOS

Note: Mamoot! is under heavy development and is obviously far from complete at this moment. We're currently looking for more people to work with us, s

null 13 Nov 22, 2022
iOS Trakt Client - Keep track of your favorite TV shows and movies on your iPhone. (Under development)

CouchTracker Keep track of your favorite movies and tv shows on your iPhone Setup for development You will need Xcode 11.2.1 Swift 5.1.2 Run the follo

Pietro Caselani 42 Apr 19, 2022
An unofficial iOS client for Konachan.net

An unofficial iOS client for Konachan.net

Alex Ling 29 Dec 23, 2022
An alternative Tumblr client for iOS

BlogQuest An alternative Tumblr client for iOS. First prize winner, 2014 Tumblr Hack Day. Kinda like Facebook Paper but for Tumblr. We meant to finish

Bryan Irace 14 Feb 10, 2022
A Simplenote client for iOS.

Simplenote for iOS A Simplenote client for iOS. Learn more about Simplenote at Simplenote.com. Build Instructions Download Xcode At the moment Simplen

Automattic 1.9k Jan 6, 2023
iOS client for Giphy written in Swift with ReactiveCocoa

Giraffe iOS client for Giphy written in Swift with ReactiveCocoa Requirements iOS 10.0 Beta Xcode 8 Beta 2 Swift 2.3 Carthage Why S

Yevhen Dubinin 43 Feb 10, 2022