Skip to content

Conversation

@JakeLin
Copy link
Collaborator

@JakeLin JakeLin commented Nov 22, 2020

Summary

Use SwiftUI to replace the existing UIKit implementation for the veiw layer.

Details

Description

  1. Add a feature toggle to turn SwiftUI on or off: InternalToggle.isSwiftUIEnabled and let the internal users configure it on the Internal app.
  2. Add Kingfisher/SwiftUI to support async image loading.
  3. Start the SwiftUI implementation in SceneDelegate when the Toggle InternalToggle.isSwiftUIEnabled is on.
  4. Implement SwiftUIMomentsListView for the Moments List Screen including the user profile and moment.
  5. Use SwiftUIMomentsListItemView to conditionally return either SwiftUIUserProfileListItemView or SwiftUIMomentListItemView
  6. Implement SwiftUIUserProfileListItemView for showing the user profile
  7. Implement SwiftUIMomentListItemView for showing the moment
  8. Implement LikeToggleStyle for a neumorphic design toggle for Like.
  9. Implement BlurView using UIKit's UIVisualEffectView
  10. Use MomentsListObservableObject to bridge RxSwift and Combine

Screengrabs (if applicable)

Moments

Quality Analysis

  • Unit tests that cover all added and changed code
  • Tested on Simulator
  • Tested on iPhone
  • Tested on iPad (if applicable) - N/A

Testing steps:

  1. Install the Internal app from Firebase Distribution app and open it.
  2. Shake the phone and activate the Internal menu.
  3. Turn on the Future Toggle SwiftUI Enable
  4. Kill the app (you can tap on Crash App to kill it 💥)
  5. Re-open the app, should see the SwiftUI
  6. You should be able to scroll up and down in the moments list screen
  7. You should be able to drag the user profile(Jake Lin with background image and avatar)
  8. You should be able to tap on and off the like button, the liked user list should change according to your operations.

Checklist

  • Has feature toggling been considered?
  • Has tested both dark mode and light mode if there is any UI change?
  • Has tested Dynamic Type if there is any UI change?
  • Has tested language support for multiple locales if there is any UI change?
  • Have new test cases been unit tested?
  • Have run bundle exec fastlane prepare_pr?
  • Need to labelled the PR? (If applicable: e.g. added new dependencies etc.)

@JakeLin JakeLin requested a review from momentsdev November 22, 2020 09:28
@JakeLin JakeLin added the enhancement New feature or request label Jan 20, 2021
@JakeLin JakeLin self-assigned this Jan 20, 2021
@JakeLin JakeLin force-pushed the feature/swift-ui branch 3 times, most recently from 17c8712 to b6029c4 Compare February 5, 2021 07:00
@JakeLin JakeLin force-pushed the feature/swift-ui branch 2 times, most recently from 37f3a8b to 2707387 Compare February 13, 2021 12:19
@JakeLin JakeLin force-pushed the feature/swift-ui branch from 2707387 to 70b40cb Compare May 23, 2021 06:41
Copy link
Collaborator

@momentsdev momentsdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see a few comments

@JakeLin JakeLin requested a review from momentsdev March 16, 2022 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants