You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Giphy Client App built with some of the interesting iOS tech such as **TCA (The Composable Architecture by Point-Free)**, **Swinject**, Beautiful UI built with **SwiftUI**, **Clean Architecture with Generic Protocol Approach**, **SPM Modularization** and **XcodeGen!**
9
+
A GIF app built with exciting iOS technologies, including **TCA (The Composable Architecture by Point-Free)**, **Swinject**, and a beautiful UI crafted with **SwiftUI**. It follows **Clean Architecture with a Generic Protocol Approach**, incorporates **SPM Modularization**, and leverages **XcodeGen**for project structure management!
19
10
20
11
**Module**
21
12
22
-
***`Giffy`**: the main app with presentation layer
23
-
***`Common`**: domain and data layer
24
-
***`CommonUI`**: common utils and assets
25
-
***`Core`**: generic protocol for _DataSource_ and _Interactor_
13
+
***`Giffy`**: The main app containing the presentation layer
14
+
***`Common`**: Handles the domain and data layers
15
+
***`CommonUI`**: Includes common utilities and assets
16
+
***`Core`**: Defines generic protocols for _DataSource_ and _Interactor_
26
17
27
18
## Table of Contents
28
19
@@ -37,7 +28,7 @@ Giphy Client App built with some of the interesting iOS tech such as **TCA (The
37
28
## <aname="features"></a> 🦾 Features
38
29
39
30
- Sharing, Copy-Pasting, and AirDropping GIFs and Stickers
40
-
- Search GIFs from various sources (Giphy and Tenor
31
+
- Search GIFs from various sources (Giphy and Tenor)
41
32
- Save Favorite GIFs
42
33
- Widget, Live Activty, and Dynamic Island
43
34
- Animations!
@@ -140,9 +131,11 @@ public struct FavoriteReducer: Reducer {
140
131
```
141
132
142
133
**Composing** the Reducer
134
+
143
135
```swift
144
136
structMainTabView: View {
145
137
let store: StoreOf<MainTabReducer>
138
+
@StateObjectvar tabState =MainTabStateHolder()
146
139
147
140
var body: some View {
148
141
WithViewStore(store, observe: \.selectedTab) { viewStore in
0 commit comments