├── iosApp
├── .java-version
├── iosApp
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── iOSApp.swift
│ ├── Views
│ │ ├── ContentView.swift
│ │ ├── GridViewAnime.swift
│ │ └── LocalGridView.swift
│ ├── Info.plist
│ └── Components
│ │ └── AnimeGridItem.swift
├── Pods
│ ├── Target Support Files
│ │ ├── shared
│ │ │ ├── shared-copy-dsyms-output-files.xcfilelist
│ │ │ ├── shared-copy-dsyms-input-files.xcfilelist
│ │ │ ├── shared.debug.xcconfig
│ │ │ └── shared.release.xcconfig
│ │ ├── mokoMvvmFlowSwiftUI
│ │ │ ├── mokoMvvmFlowSwiftUI-xcframeworks-output-files.xcfilelist
│ │ │ ├── mokoMvvmFlowSwiftUI-xcframeworks-input-files.xcfilelist
│ │ │ ├── mokoMvvmFlowSwiftUI.debug.xcconfig
│ │ │ └── mokoMvvmFlowSwiftUI.release.xcconfig
│ │ ├── SDWebImage
│ │ │ ├── SDWebImage.modulemap
│ │ │ ├── SDWebImage-dummy.m
│ │ │ ├── SDWebImage-prefix.pch
│ │ │ ├── SDWebImage.debug.xcconfig
│ │ │ ├── SDWebImage.release.xcconfig
│ │ │ ├── SDWebImage-Info.plist
│ │ │ └── SDWebImage-umbrella.h
│ │ ├── Pods-iosApp
│ │ │ ├── Pods-iosApp.modulemap
│ │ │ ├── Pods-iosApp-dummy.m
│ │ │ ├── Pods-iosApp-frameworks-Debug-output-files.xcfilelist
│ │ │ ├── Pods-iosApp-frameworks-Release-output-files.xcfilelist
│ │ │ ├── Pods-iosApp-umbrella.h
│ │ │ ├── Pods-iosApp-frameworks-Debug-input-files.xcfilelist
│ │ │ ├── Pods-iosApp-frameworks-Release-input-files.xcfilelist
│ │ │ ├── Pods-iosApp-Info.plist
│ │ │ ├── Pods-iosApp.debug.xcconfig
│ │ │ ├── Pods-iosApp.release.xcconfig
│ │ │ └── Pods-iosApp-acknowledgements.markdown
│ │ └── SDWebImageSwiftUI
│ │ │ ├── SDWebImageSwiftUI.modulemap
│ │ │ ├── SDWebImageSwiftUI-dummy.m
│ │ │ ├── SDWebImageSwiftUI-prefix.pch
│ │ │ ├── SDWebImageSwiftUI-umbrella.h
│ │ │ ├── SDWebImageSwiftUI-Info.plist
│ │ │ ├── SDWebImageSwiftUI.debug.xcconfig
│ │ │ └── SDWebImageSwiftUI.release.xcconfig
│ ├── mokoMvvmFlowSwiftUI
│ │ └── mokoMvvmFlowSwiftUI.xcframework
│ │ │ ├── ios-arm64
│ │ │ └── mokoMvvmFlowSwiftUI.framework
│ │ │ │ ├── Modules
│ │ │ │ ├── module.modulemap
│ │ │ │ └── mokoMvvmFlowSwiftUI.swiftmodule
│ │ │ │ │ ├── arm64.swiftdoc
│ │ │ │ │ └── arm64-apple-ios.swiftdoc
│ │ │ │ ├── Info.plist
│ │ │ │ ├── mokoMvvmFlowSwiftUI
│ │ │ │ └── Headers
│ │ │ │ └── mokoMvvmFlowSwiftUI.h
│ │ │ ├── ios-arm64_x86_64-simulator
│ │ │ └── mokoMvvmFlowSwiftUI.framework
│ │ │ │ ├── Modules
│ │ │ │ ├── module.modulemap
│ │ │ │ └── mokoMvvmFlowSwiftUI.swiftmodule
│ │ │ │ │ ├── arm64.swiftdoc
│ │ │ │ │ ├── x86_64.swiftdoc
│ │ │ │ │ ├── arm64-apple-ios-simulator.swiftdoc
│ │ │ │ │ └── x86_64-apple-ios-simulator.swiftdoc
│ │ │ │ ├── Info.plist
│ │ │ │ ├── mokoMvvmFlowSwiftUI
│ │ │ │ └── Headers
│ │ │ │ └── mokoMvvmFlowSwiftUI.h
│ │ │ ├── macos-x86_64
│ │ │ └── mokoMvvmFlowSwiftUI.framework
│ │ │ │ ├── Modules
│ │ │ │ ├── module.modulemap
│ │ │ │ └── mokoMvvmFlowSwiftUI.swiftmodule
│ │ │ │ │ ├── x86_64.swiftdoc
│ │ │ │ │ └── x86_64-apple-macos.swiftdoc
│ │ │ │ ├── Versions
│ │ │ │ ├── A
│ │ │ │ │ ├── Modules
│ │ │ │ │ │ ├── module.modulemap
│ │ │ │ │ │ └── mokoMvvmFlowSwiftUI.swiftmodule
│ │ │ │ │ │ │ ├── x86_64.swiftdoc
│ │ │ │ │ │ │ └── x86_64-apple-macos.swiftdoc
│ │ │ │ │ ├── mokoMvvmFlowSwiftUI
│ │ │ │ │ └── Resources
│ │ │ │ │ │ └── Info.plist
│ │ │ │ └── Current
│ │ │ │ │ ├── Modules
│ │ │ │ │ ├── module.modulemap
│ │ │ │ │ └── mokoMvvmFlowSwiftUI.swiftmodule
│ │ │ │ │ │ ├── x86_64.swiftdoc
│ │ │ │ │ │ └── x86_64-apple-macos.swiftdoc
│ │ │ │ │ ├── mokoMvvmFlowSwiftUI
│ │ │ │ │ └── Resources
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── mokoMvvmFlowSwiftUI
│ │ │ │ └── Resources
│ │ │ │ └── Info.plist
│ │ │ └── Info.plist
│ ├── SDWebImage
│ │ ├── SDWebImage
│ │ │ ├── Private
│ │ │ │ ├── SDInternalMacros.m
│ │ │ │ ├── SDDeviceHelper.h
│ │ │ │ ├── UIColor+SDHexString.h
│ │ │ │ ├── SDAssociatedObject.h
│ │ │ │ ├── SDWeakProxy.h
│ │ │ │ ├── SDImageCachesManagerOperation.h
│ │ │ │ ├── SDWebImageTransitionInternal.h
│ │ │ │ ├── NSBezierPath+SDRoundedCorners.h
│ │ │ │ ├── SDAsyncBlockOperation.h
│ │ │ │ ├── SDDeviceHelper.m
│ │ │ │ ├── SDAssociatedObject.m
│ │ │ │ ├── SDImageAssetManager.h
│ │ │ │ ├── SDFileAttributeHelper.h
│ │ │ │ ├── UIColor+SDHexString.m
│ │ │ │ ├── SDDisplayLink.h
│ │ │ │ ├── SDImageFramePool.h
│ │ │ │ ├── SDWeakProxy.m
│ │ │ │ ├── NSBezierPath+SDRoundedCorners.m
│ │ │ │ ├── SDImageIOAnimatedCoderInternal.h
│ │ │ │ ├── SDImageCachesManagerOperation.m
│ │ │ │ └── SDAsyncBlockOperation.m
│ │ │ └── Core
│ │ │ │ ├── SDWebImageOperation.m
│ │ │ │ ├── SDWebImageCompat.m
│ │ │ │ ├── UIImage+GIF.m
│ │ │ │ ├── SDImageAPNGCoder.h
│ │ │ │ ├── SDWebImageError.m
│ │ │ │ ├── SDWebImageOperation.h
│ │ │ │ ├── UIImage+ExtendedCacheData.m
│ │ │ │ ├── UIImage+GIF.h
│ │ │ │ ├── SDImageFrame.m
│ │ │ │ ├── SDImageAWebPCoder.h
│ │ │ │ ├── SDWebImageCacheKeyFilter.m
│ │ │ │ ├── SDImageGIFCoder.h
│ │ │ │ ├── SDWebImageCacheKeyFilter.h
│ │ │ │ ├── SDWebImageCacheSerializer.m
│ │ │ │ ├── SDImageHEICCoder.h
│ │ │ │ ├── SDImageLoadersManager.h
│ │ │ │ ├── SDImageIOCoder.h
│ │ │ │ ├── UIImage+ExtendedCacheData.h
│ │ │ │ ├── UIImage+MemoryCacheCost.h
│ │ │ │ ├── UIImage+ForceDecode.m
│ │ │ │ ├── SDImageGIFCoder.m
│ │ │ │ ├── SDImageAPNGCoder.m
│ │ │ │ ├── SDWebImageCacheSerializer.h
│ │ │ │ ├── UIImage+MemoryCacheCost.m
│ │ │ │ ├── SDImageGraphics.h
│ │ │ │ ├── SDImageCoder.m
│ │ │ │ ├── SDImageFrame.h
│ │ │ │ ├── UIView+WebCacheState.m
│ │ │ │ ├── SDWebImageOptionsProcessor.m
│ │ │ │ ├── UIView+WebCacheOperation.h
│ │ │ │ ├── SDAnimatedImageRep.h
│ │ │ │ ├── SDWebImageDownloaderDecryptor.m
│ │ │ │ ├── UIImage+ForceDecode.h
│ │ │ │ ├── UIView+WebCacheState.h
│ │ │ │ ├── SDWebImageDownloaderConfig.m
│ │ │ │ ├── SDWebImageDownloaderDecryptor.h
│ │ │ │ ├── SDImageCodersManager.h
│ │ │ │ ├── NSData+ImageContentType.h
│ │ │ │ ├── SDWebImageDownloaderRequestModifier.m
│ │ │ │ ├── SDImageIOAnimatedCoder.h
│ │ │ │ ├── SDWebImageError.h
│ │ │ │ └── UIImage+MultiFormat.m
│ │ └── LICENSE
│ ├── SDWebImageSwiftUI
│ │ ├── SDWebImageSwiftUI
│ │ │ ├── Module
│ │ │ │ └── SDWebImageSwiftUI.h
│ │ │ └── Classes
│ │ │ │ ├── Backports
│ │ │ │ ├── OnChange.swift
│ │ │ │ └── Backport.swift
│ │ │ │ ├── SDWebImageSwiftUI.swift
│ │ │ │ └── Image.swift
│ │ └── LICENSE
│ ├── Local Podspecs
│ │ ├── mokoMvvmFlowSwiftUI.podspec.json
│ │ └── shared.podspec.json
│ └── Manifest.lock
├── Podfile
├── iosApp.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Podfile.lock
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── androidApp
├── src
│ └── main
│ │ ├── res
│ │ ├── values
│ │ │ └── styles.xml
│ │ └── xml
│ │ │ └── data_extraction_rules.xml
│ │ ├── java
│ │ └── com
│ │ │ └── debanshu
│ │ │ └── animax
│ │ │ └── android
│ │ │ ├── model
│ │ │ └── BottomNavItem.kt
│ │ │ ├── AnimaxApplication.kt
│ │ │ ├── utils
│ │ │ └── constants.kt
│ │ │ └── MyApplicationTheme.kt
│ │ └── AndroidManifest.xml
└── build.gradle.kts
├── .gitignore
├── shared
├── src
│ ├── commonMain
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── debanshu
│ │ │ │ └── animax
│ │ │ │ ├── data
│ │ │ │ ├── DatabaseDriverFactory.kt
│ │ │ │ ├── usecase
│ │ │ │ │ ├── BaseUseCase.kt
│ │ │ │ │ ├── DeleteLocalAnimeByIdUsecase.kt
│ │ │ │ │ ├── GetTopAnimeUseCase.kt
│ │ │ │ │ ├── GetLocalAnimeUseCase.kt
│ │ │ │ │ └── AddLocalAnimeUseCase.kt
│ │ │ │ ├── model
│ │ │ │ │ ├── Prop.kt
│ │ │ │ │ ├── Images.kt
│ │ │ │ │ ├── Title.kt
│ │ │ │ │ ├── From.kt
│ │ │ │ │ ├── To.kt
│ │ │ │ │ ├── Items.kt
│ │ │ │ │ ├── Link.kt
│ │ │ │ │ ├── Genre.kt
│ │ │ │ │ ├── TopAnimeResponse.kt
│ │ │ │ │ ├── Studio.kt
│ │ │ │ │ ├── Theme.kt
│ │ │ │ │ ├── Producer.kt
│ │ │ │ │ ├── Demographic.kt
│ │ │ │ │ ├── Licensor.kt
│ │ │ │ │ ├── Pagination.kt
│ │ │ │ │ ├── Broadcast.kt
│ │ │ │ │ ├── Aired.kt
│ │ │ │ │ ├── Links.kt
│ │ │ │ │ ├── Jpg.kt
│ │ │ │ │ ├── Webp.kt
│ │ │ │ │ ├── Trailer.kt
│ │ │ │ │ ├── Meta.kt
│ │ │ │ │ └── ImagesX.kt
│ │ │ │ ├── repository
│ │ │ │ │ ├── RemoteDataRepository.kt
│ │ │ │ │ └── LocalDataRepository.kt
│ │ │ │ ├── NetworkClient.kt
│ │ │ │ └── domain
│ │ │ │ │ ├── LocalAnimeEntity.kt
│ │ │ │ │ └── DateTimeUtil.kt
│ │ │ │ ├── di
│ │ │ │ ├── platformModules.kt
│ │ │ │ └── sharedModules.kt
│ │ │ │ └── utils
│ │ │ │ └── Dispatcher.kt
│ │ └── sqldelight
│ │ │ └── com.debanshu.animax
│ │ │ └── Anime.sq
│ ├── iosMain
│ │ └── kotlin
│ │ │ └── com
│ │ │ └── debanshu
│ │ │ └── animax
│ │ │ ├── utils
│ │ │ ├── Dispatcher.kt
│ │ │ └── KoinHelper.kt
│ │ │ ├── data
│ │ │ ├── DatabaseDriverFactory.kt
│ │ │ └── DarwinNetworkClient.kt
│ │ │ └── di
│ │ │ └── platformModules.kt
│ └── androidMain
│ │ └── kotlin
│ │ └── com
│ │ └── debanshu
│ │ └── animax
│ │ ├── utils
│ │ └── Dispatcher.kt
│ │ ├── data
│ │ ├── DatabaseDriverFactory.kt
│ │ └── OkhttpNetworkClient.kt
│ │ └── di
│ │ └── platformModules.kt
└── shared.podspec
├── gradle.properties
└── settings.gradle.kts
/iosApp/.java-version:
--------------------------------------------------------------------------------
1 | 17.0
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/iosApp/iosApp/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/shared/shared-copy-dsyms-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${DWARF_DSYM_FOLDER_PATH}/MultiPlatformLibrary.framework.dSYM
--------------------------------------------------------------------------------
/androidApp/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | .idea
4 | .DS_Store
5 | build
6 | captures
7 | .externalNativeBuild
8 | .cxx
9 | local.properties
10 | xcuserdata
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/shared/shared-copy-dsyms-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/../../shared/build/cocoapods/framework/MultiPlatformLibrary.framework.dSYM
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI-xcframeworks-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.framework
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_iosApp {
2 | umbrella header "Pods-iosApp-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_iosApp : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_iosApp
5 | @end
6 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImageSwiftUI {
2 | umbrella header "SDWebImageSwiftUI-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImageSwiftUI : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImageSwiftUI
5 | @end
6 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/DatabaseDriverFactory.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import app.cash.sqldelight.db.SqlDriver
4 |
5 | expect class DatabaseDriverFactory {
6 | fun createDriver():SqlDriver
7 | }
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI-xcframeworks-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI-xcframeworks.sh
2 | ${PODS_ROOT}/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/di/platformModules.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.di
2 |
3 | import org.koin.core.module.Module
4 |
5 | internal expect fun getViewModelByPlatform(): Module
6 |
7 | internal expect fun getDataDriverFactory():Module
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module mokoMvvmFlowSwiftUI {
2 | umbrella header "mokoMvvmFlowSwiftUI.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/usecase/BaseUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.usecase
2 |
3 | abstract class BaseUseCase {
4 | @Throws(Exception::class)
5 | abstract suspend fun execute(request: REQUEST):RESPONSE
6 | }
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Info.plist
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module mokoMvvmFlowSwiftUI {
2 | umbrella header "mokoMvvmFlowSwiftUI.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module mokoMvvmFlowSwiftUI {
2 | header "mokoMvvmFlowSwiftUI-Swift.h"
3 |
4 | export *
5 | module mokoMvvmFlowSwiftUI { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sun Oct 01 13:21:52 IST 2023
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/iosApp/iosApp/iOSApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import MultiPlatformLibrary
3 |
4 | @main
5 | struct iOSApp: App {
6 | init(){
7 | KoinHelperKt.doInitKoin()
8 | }
9 | var body: some Scene {
10 | WindowGroup {
11 | ContentView()
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/utils/Dispatcher.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.utils
2 |
3 | import kotlinx.coroutines.CoroutineDispatcher
4 |
5 | internal interface Dispatcher {
6 | val io:CoroutineDispatcher
7 | }
8 |
9 | internal expect fun provideDispatcher():Dispatcher
--------------------------------------------------------------------------------
/androidApp/src/main/java/com/debanshu/animax/android/model/BottomNavItem.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.android.model
2 | import androidx.compose.ui.graphics.vector.ImageVector
3 |
4 | data class BottomNavItem(
5 | val label: String,
6 | val icon: ImageVector,
7 | val route: String,
8 | )
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module mokoMvvmFlowSwiftUI {
2 | header "mokoMvvmFlowSwiftUI-Swift.h"
3 |
4 | export *
5 | module mokoMvvmFlowSwiftUI { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module mokoMvvmFlowSwiftUI {
2 | header "mokoMvvmFlowSwiftUI-Swift.h"
3 |
4 | export *
5 | module mokoMvvmFlowSwiftUI { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/Podfile:
--------------------------------------------------------------------------------
1 | target 'iosApp' do
2 | use_frameworks!
3 | platform :ios, '17.0'
4 | pod 'shared', :path => '../shared'
5 | pod 'SDWebImageSwiftUI'
6 | pod 'mokoMvvmFlowSwiftUI', :podspec => 'https://raw.githubusercontent.com/icerockdev/moko-mvvm/release/0.16.1/mokoMvvmFlowSwiftUI.podspec'
7 | end
8 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Info.plist
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | #Gradle
2 | org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M"
3 |
4 | #Kotlin
5 | kotlin.code.style=official
6 |
7 | #Android
8 | android.useAndroidX=true
9 | android.nonTransitiveRClass=true
10 |
11 | #MPP
12 | kotlin.mpp.enableCInteropCommonization=true
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/mokoMvvmFlowSwiftUI:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/iosApp.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/iosApp/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/mokoMvvmFlowSwiftUI:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Prop.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Prop(
9 | @SerialName("from")
10 | val from: From = From(),
11 | @SerialName("to")
12 | val to: To = To()
13 | )
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64-apple-ios.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64-apple-ios.swiftdoc
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | google()
4 | gradlePluginPortal()
5 | mavenCentral()
6 | }
7 | }
8 |
9 | dependencyResolutionManagement {
10 | repositories {
11 | google()
12 | mavenCentral()
13 | }
14 | }
15 |
16 | rootProject.name = "Animax"
17 | include(":androidApp")
18 | include(":shared")
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Images.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Images(
9 | @SerialName("jpg")
10 | val jpg: Jpg = Jpg(),
11 | @SerialName("webp")
12 | val webp: Webp = Webp()
13 | )
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImageSwiftUI.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MultiPlatformLibrary.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mokoMvvmFlowSwiftUI.framework
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImageSwiftUI.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MultiPlatformLibrary.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mokoMvvmFlowSwiftUI.framework
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/debanshu/animax/utils/Dispatcher.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.utils
2 |
3 | import kotlinx.coroutines.CoroutineDispatcher
4 | import kotlinx.coroutines.Dispatchers
5 |
6 | internal class IosDispatcher:Dispatcher {
7 | override val io: CoroutineDispatcher
8 | get() = Dispatchers.Default
9 | }
10 |
11 | internal actual fun provideDispatcher():Dispatcher = IosDispatcher()
--------------------------------------------------------------------------------
/shared/src/androidMain/kotlin/com/debanshu/animax/utils/Dispatcher.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.utils
2 |
3 | import kotlinx.coroutines.CoroutineDispatcher
4 | import kotlinx.coroutines.Dispatchers
5 |
6 | internal class AndroidDispatcher:Dispatcher {
7 | override val io: CoroutineDispatcher
8 | get() = Dispatchers.IO
9 | }
10 |
11 | internal actual fun provideDispatcher():Dispatcher = AndroidDispatcher()
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Title.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Title(
9 | @SerialName("title")
10 | val title: String = "", // Bleach: Sennen Kessen-hen
11 | @SerialName("type")
12 | val type: String = "" // Default
13 | )
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-macos.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Debanshu777/Animax/HEAD/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Modules/mokoMvvmFlowSwiftUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/debanshu/animax/data/DatabaseDriverFactory.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import app.cash.sqldelight.db.SqlDriver
4 | import app.cash.sqldelight.driver.native.NativeSqliteDriver
5 | import com.debanshu.animax.AppDatabase
6 |
7 | actual class DatabaseDriverFactory {
8 | actual fun createDriver(): SqlDriver {
9 | return NativeSqliteDriver(AppDatabase.Schema,"anime.db")
10 | }
11 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/From.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class From(
9 | @SerialName("day")
10 | val day: Int = 0, // 11
11 | @SerialName("month")
12 | val month: Int = 0, // 10
13 | @SerialName("year")
14 | val year: Int = 0 // 2022
15 | )
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_iosAppVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_iosAppVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/To.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class To(
9 | @SerialName("day")
10 | val day: Int? = null, // 27
11 | @SerialName("month")
12 | val month: Int? = null, // 12
13 | @SerialName("year")
14 | val year: Int? = null // 2022
15 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Items.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Items(
9 | @SerialName("count")
10 | val count: Int = 0, // 25
11 | @SerialName("per_page")
12 | val perPage: Int = 0, // 25
13 | @SerialName("total")
14 | val total: Int = 0 // 22052
15 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDInternalMacros.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDInternalMacros.h"
10 |
11 | void sd_executeCleanupBlock (__strong sd_cleanupBlock_t *block) {
12 | (*block)();
13 | }
14 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
3 | ${BUILT_PRODUCTS_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.framework
4 | ${PODS_ROOT}/../../shared/build/cocoapods/framework/MultiPlatformLibrary.framework
5 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-iosApp/Pods-iosApp-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework
3 | ${BUILT_PRODUCTS_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.framework
4 | ${PODS_ROOT}/../../shared/build/cocoapods/framework/MultiPlatformLibrary.framework
5 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.framework/mokoMvvmFlowSwiftUI
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/debanshu/animax/data/DarwinNetworkClient.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import io.ktor.client.HttpClient
4 | import io.ktor.client.HttpClientConfig
5 | import io.ktor.client.engine.darwin.Darwin
6 |
7 | actual fun httpClient(config: HttpClientConfig<*>.() -> Unit)= HttpClient(Darwin) {
8 | config(this)
9 | engine {
10 | configureRequest {
11 | setAllowsCellularAccess(true)
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/debanshu/animax/di/platformModules.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.di
2 |
3 | import com.debanshu.animax.data.AppViewModel
4 | import com.debanshu.animax.data.DatabaseDriverFactory
5 | import org.koin.dsl.module
6 | actual fun getViewModelByPlatform() = module {
7 | single {
8 | AppViewModel(get(),get(),get(),get())
9 | }
10 | }
11 |
12 | actual fun getDataDriverFactory() = module {
13 | single { DatabaseDriverFactory() }
14 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageOperation.h"
10 |
11 | /// NSOperation conform to `SDWebImageOperation`.
12 | @implementation NSOperation (SDWebImageOperation)
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "SDWebImageSwiftUI.h"
14 |
15 | FOUNDATION_EXPORT double SDWebImageSwiftUIVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char SDWebImageSwiftUIVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/shared/src/androidMain/kotlin/com/debanshu/animax/data/DatabaseDriverFactory.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import android.content.Context
4 | import app.cash.sqldelight.db.SqlDriver
5 | import app.cash.sqldelight.driver.android.AndroidSqliteDriver
6 | import com.debanshu.animax.AppDatabase
7 |
8 | actual class DatabaseDriverFactory(private val context:Context) {
9 | actual fun createDriver(): SqlDriver {
10 | return AndroidSqliteDriver(AppDatabase.Schema,context,"anime.db")
11 | }
12 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Link.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Link(
9 | @SerialName("active")
10 | val active: Boolean = false, // false
11 | @SerialName("label")
12 | val label: String = "", // pagination.previous
13 | @SerialName("url")
14 | val url: String? = null // http://api.jikan.moe/v4/top/anime?=1
15 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /// Device information helper methods
13 | @interface SDDeviceHelper : NSObject
14 |
15 | + (NSUInteger)totalMemory;
16 | + (NSUInteger)freeMemory;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/shared/src/androidMain/kotlin/com/debanshu/animax/di/platformModules.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.di
2 |
3 | import com.debanshu.animax.data.AppViewModel
4 | import com.debanshu.animax.data.DatabaseDriverFactory
5 | import org.koin.androidx.viewmodel.dsl.viewModel
6 | import org.koin.dsl.module
7 |
8 | actual fun getViewModelByPlatform() = module {
9 | viewModel {
10 | AppViewModel(get(),get(),get(),get())
11 | }
12 | }
13 |
14 | actual fun getDataDriverFactory() = module {
15 | single { DatabaseDriverFactory(get()) }
16 | }
17 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/repository/RemoteDataRepository.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.repository
2 |
3 | import com.debanshu.animax.data.model.TopAnimeResponse
4 | import com.debanshu.animax.data.networkClient
5 | import io.ktor.client.call.body
6 | import io.ktor.client.request.get
7 | import io.ktor.client.request.url
8 |
9 | internal class RemoteDataRepository {
10 | suspend fun getTopAnimeList(): TopAnimeResponse = networkClient.get {
11 | url("https://api.jikan.moe/v4/top/anime")
12 | }.body()
13 | }
--------------------------------------------------------------------------------
/shared/src/androidMain/kotlin/com/debanshu/animax/data/OkhttpNetworkClient.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import io.ktor.client.HttpClientConfig
4 | import io.ktor.client.HttpClient
5 | import io.ktor.client.engine.okhttp.OkHttp
6 | import java.util.concurrent.TimeUnit
7 |
8 | actual fun httpClient(config: HttpClientConfig<*>.() -> Unit)= HttpClient(OkHttp){
9 | config(this)
10 | engine {
11 | config {
12 | retryOnConnectionFailure(true)
13 | connectTimeout(0,TimeUnit.SECONDS)
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Genre.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Genre(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 1
11 | @SerialName("name")
12 | val name: String = "", // Action
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/genre/1/Action
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/TopAnimeResponse.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class TopAnimeResponse(
9 | @SerialName("data")
10 | val `data`: List = listOf(),
11 | @SerialName("links")
12 | val links: Links = Links(),
13 | @SerialName("meta")
14 | val meta: Meta = Meta(),
15 | @SerialName("pagination")
16 | val pagination: Pagination = Pagination()
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Studio.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Studio(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 1
11 | @SerialName("name")
12 | val name: String = "", // Pierrot
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/producer/1/Pierrot
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Theme.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Theme(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 38
11 | @SerialName("name")
12 | val name: String = "", // Military
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/genre/38/Military
17 | )
--------------------------------------------------------------------------------
/shared/src/iosMain/kotlin/com/debanshu/animax/utils/KoinHelper.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.utils
2 |
3 | import com.debanshu.animax.data.AppViewModel
4 | import com.debanshu.animax.di.getSharedModules
5 | import org.koin.core.component.KoinComponent
6 | import org.koin.core.context.startKoin
7 | import org.koin.core.component.get
8 | import org.koin.dsl.module
9 |
10 | fun initKoin() {
11 | startKoin {
12 | modules(getSharedModules())
13 | }
14 | }
15 |
16 | class KoinHelper: KoinComponent {
17 | fun getAppViewModel() = get()
18 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Producer.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Producer(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 16
11 | @SerialName("name")
12 | val name: String = "", // TV Tokyo
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/producer/16/TV_Tokyo
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Demographic.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Demographic(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 27
11 | @SerialName("name")
12 | val name: String = "", // Shounen
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/genre/27/Shounen
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Licensor.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Licensor(
9 | @SerialName("mal_id")
10 | val malId: Int = 0, // 119
11 | @SerialName("name")
12 | val name: String = "", // VIZ Media
13 | @SerialName("type")
14 | val type: String = "", // anime
15 | @SerialName("url")
16 | val url: String = "" // https://myanimelist.net/anime/producer/119/VIZ_Media
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Pagination.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Pagination(
9 | @SerialName("current_page")
10 | val currentPage: Int = 0, // 1
11 | @SerialName("has_next_page")
12 | val hasNextPage: Boolean = false, // true
13 | @SerialName("items")
14 | val items: Items = Items(),
15 | @SerialName("last_visible_page")
16 | val lastVisiblePage: Int = 0 // 883
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Broadcast.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Broadcast(
9 | @SerialName("day")
10 | val day: String? = null, // Tuesdays
11 | @SerialName("string")
12 | val string: String? = null, // Tuesdays at 00:00 (JST)
13 | @SerialName("time")
14 | val time: String? = null, // 00:00
15 | @SerialName("timezone")
16 | val timezone: String? = null // Asia/Tokyo
17 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Aired.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Aired(
9 | @SerialName("from")
10 | val from: String = "", // 2022-10-11T00:00:00+00:00
11 | @SerialName("prop")
12 | val prop: Prop = Prop(),
13 | @SerialName("string")
14 | val string: String = "", // Oct 11, 2022 to Dec 27, 2022
15 | @SerialName("to")
16 | val to: String? = null // 2022-12-27T00:00:00+00:00
17 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageCompat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if !__has_feature(objc_arc)
12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
13 | #endif
14 |
15 | #if !OS_OBJECT_USE_OBJC
16 | #error SDWebImage need ARC for dispatch object
17 | #endif
18 |
--------------------------------------------------------------------------------
/androidApp/src/main/java/com/debanshu/animax/android/AnimaxApplication.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.android
2 |
3 | import android.app.Application
4 | import android.content.Context
5 | import com.debanshu.animax.di.getSharedModules
6 | import org.koin.android.ext.koin.androidContext
7 | import org.koin.core.context.startKoin
8 | import org.koin.dsl.module
9 |
10 | class AnimaxApplication:Application() {
11 | override fun onCreate() {
12 | super.onCreate()
13 | startKoin {
14 | androidContext(this@AnimaxApplication)
15 | modules(getSharedModules())
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) DreamPiggy
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | //! Project version number for SDWebImageSwiftUI.
12 | FOUNDATION_EXPORT double SDWebImageSwiftUIVersionNumber;
13 |
14 | //! Project version string for SDWebImageSwiftUI.
15 | FOUNDATION_EXPORT const unsigned char SDWebImageSwiftUIVersionString[];
16 |
--------------------------------------------------------------------------------
/shared/src/commonMain/sqldelight/com.debanshu.animax/Anime.sq:
--------------------------------------------------------------------------------
1 | CREATE TABLE animeEntity (
2 | id INTEGER NOT NULL PRIMARY KEY,
3 | name TEXT NOT NULL,
4 | imageUrl TEXT NOT NULL,
5 | created Integer NOT NULL
6 | );
7 |
8 | getAllAnime:
9 | SELECT * FROM animeEntity;
10 |
11 | getAnimeById:
12 | SELECT * FROM animeEntity WHERE id = ?;
13 |
14 | insertAnime:
15 | INSERT OR REPLACE
16 | INTO animeEntity(
17 | id,
18 | name,
19 | imageUrl,
20 | created
21 | ) VALUES (?,?,?,?);
22 |
23 | deleteAnimeById:
24 | DELETE FROM animeEntity WHERE id = ?;
25 |
26 | removeAllAnime:
27 | DELETE FROM animeEntity;
28 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Links.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Links(
9 | @SerialName("first")
10 | val first: String = "", // http://api.jikan.moe/v4/top/anime?=1
11 | @SerialName("last")
12 | val last: String = "", // http://api.jikan.moe/v4/top/anime?=883
13 | @SerialName("next")
14 | val next: String = "", // http://api.jikan.moe/v4/top/anime?=2
15 | @SerialName("prev")
16 | val prev: String? = null // null
17 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | @interface UIColor (SDHexString)
12 |
13 | /**
14 | Convenience way to get hex string from color. The output should always be 32-bit RGBA hex string like `#00000000`.
15 | */
16 | @property (nonatomic, copy, readonly, nonnull) NSString *sd_hexString;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Jpg.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Jpg(
9 | @SerialName("image_url")
10 | val imageUrl: String = "", // https://cdn.myanimelist.net/images/anime/1764/126627.jpg
11 | @SerialName("large_image_url")
12 | val largeImageUrl: String = "", // https://cdn.myanimelist.net/images/anime/1764/126627l.jpg
13 | @SerialName("small_image_url")
14 | val smallImageUrl: String = "" // https://cdn.myanimelist.net/images/anime/1764/126627t.jpg
15 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | /// Copy the associated object from source image to target image. The associated object including all the category read/write properties.
12 | /// @param source source
13 | /// @param target target
14 | FOUNDATION_EXPORT void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target);
15 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Webp.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Webp(
9 | @SerialName("image_url")
10 | val imageUrl: String = "", // https://cdn.myanimelist.net/images/anime/1764/126627.webp
11 | @SerialName("large_image_url")
12 | val largeImageUrl: String = "", // https://cdn.myanimelist.net/images/anime/1764/126627l.webp
13 | @SerialName("small_image_url")
14 | val smallImageUrl: String = "" // https://cdn.myanimelist.net/images/anime/1764/126627t.webp
15 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Trailer.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Trailer(
9 | @SerialName("embed_url")
10 | val embedUrl: String? = "", // https://www.youtube.com/embed/e8YBesRKq_U?enablejsapi=1&wmode=opaque&autoplay=1
11 | @SerialName("images")
12 | val images: ImagesX = ImagesX(),
13 | @SerialName("url")
14 | val url: String? = "", // https://www.youtube.com/watch?v=e8YBesRKq_U
15 | @SerialName("youtube_id")
16 | val youtubeId: String? = "" // e8YBesRKq_U
17 | )
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+GIF.h"
11 | #import "SDImageGIFCoder.h"
12 |
13 | @implementation UIImage (GIF)
14 |
15 | + (nullable UIImage *)sd_imageWithGIFData:(nullable NSData *)data {
16 | if (!data) {
17 | return nil;
18 | }
19 | return [[SDImageGIFCoder sharedCoder] decodedImageWithData:data options:0];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/NetworkClient.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data
2 |
3 | import io.ktor.client.HttpClientConfig
4 | import io.ktor.client.HttpClient
5 | import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
6 | import io.ktor.serialization.kotlinx.json.*
7 | import kotlinx.serialization.json.Json
8 |
9 | expect fun httpClient(config: HttpClientConfig<*>.() -> Unit = {}):HttpClient
10 |
11 | val networkClient:HttpClient = httpClient {
12 | install(ContentNegotiation){
13 | json(Json {
14 | prettyPrint = true
15 | isLenient = true
16 | ignoreUnknownKeys = true
17 | })
18 | }
19 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageIOAnimatedCoder.h"
11 |
12 | /**
13 | Built in coder using ImageIO that supports APNG encoding/decoding
14 | */
15 | @interface SDImageAPNGCoder : SDImageIOAnimatedCoder
16 |
17 | @property (nonatomic, class, readonly, nonnull) SDImageAPNGCoder *sharedCoder;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/iosApp/Pods/Local Podspecs/mokoMvvmFlowSwiftUI.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mokoMvvmFlowSwiftUI",
3 | "version": "0.16.1",
4 | "summary": "MOKO MVVM SwiftUI additions for Flow",
5 | "description": "some description here",
6 | "homepage": "localhost",
7 | "license": {
8 | "type": "Apache 2"
9 | },
10 | "authors": "IceRock Development",
11 | "source": {
12 | "http": "https://repo1.maven.org/maven2/dev/icerock/moko/mvvm-flow-swiftui/0.16.1/mvvm-flow-swiftui-0.16.1.zip",
13 | "type": "zip"
14 | },
15 | "platforms": {
16 | "ios": "13.0"
17 | },
18 | "ios": {
19 | "vendored_frameworks": "mokoMvvmFlowSwiftUI.xcframework"
20 | },
21 | "requires_arc": true
22 | }
23 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/usecase/DeleteLocalAnimeByIdUsecase.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.usecase
2 |
3 | import com.debanshu.animax.data.repository.LocalDataRepository
4 | import com.debanshu.animax.utils.Dispatcher
5 | import kotlinx.coroutines.withContext
6 | import org.koin.core.component.KoinComponent
7 | import org.koin.core.component.inject
8 |
9 | class DeleteLocalAnimeByIdUseCase : KoinComponent {
10 | private val localDataRepository: LocalDataRepository by inject()
11 | private val dispatcher: Dispatcher by inject()
12 | suspend fun execute(id: Long) = withContext(dispatcher.io) {
13 | localDataRepository.deleteAnimeById(id)
14 | }
15 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /// A weak proxy which forward all the message to the target
13 | @interface SDWeakProxy : NSProxy
14 |
15 | @property (nonatomic, weak, readonly, nullable) id target;
16 |
17 | - (nonnull instancetype)initWithTarget:(nonnull id)target;
18 | + (nonnull instancetype)proxyWithTarget:(nonnull id)target;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/androidApp/src/main/java/com/debanshu/animax/android/utils/constants.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.android.utils
2 |
3 | import androidx.compose.material.icons.Icons
4 | import androidx.compose.material.icons.filled.Favorite
5 | import androidx.compose.material.icons.filled.Home
6 | import com.debanshu.animax.android.model.BottomNavItem
7 |
8 | object constants {
9 | val BottomNavItems = listOf(
10 | BottomNavItem(
11 | label = "Home",
12 | icon = Icons.Filled.Home,
13 | route = "home"
14 | ),
15 | BottomNavItem(
16 | label = "Favourite",
17 | icon = Icons.Filled.Favorite,
18 | route = "favourite"
19 | )
20 | )
21 | }
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64/mokoMvvmFlowSwiftUI.framework/Headers/mokoMvvmFlowSwiftUI.h:
--------------------------------------------------------------------------------
1 | //
2 | // mokoMvvmFlowSwiftUI.h
3 | // mokoMvvmFlowSwiftUI
4 | //
5 | // Created by Aleksey Mikhailov on 29.04.2022.
6 | //
7 |
8 | #import
9 |
10 | //! Project version number for mokoMvvmFlowSwiftUI.
11 | FOUNDATION_EXPORT double mokoMvvmFlowSwiftUIVersionNumber;
12 |
13 | //! Project version string for mokoMvvmFlowSwiftUI.
14 | FOUNDATION_EXPORT const unsigned char mokoMvvmFlowSwiftUIVersionString[];
15 |
16 | // In this header, you should import all the public headers of your framework using statements like #import
17 |
18 |
19 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /// This is used for operation management, but not for operation queue execute
13 | @interface SDImageCachesManagerOperation : NSOperation
14 |
15 | @property (nonatomic, assign, readonly) NSUInteger pendingCount;
16 |
17 | - (void)beginWithTotalCount:(NSUInteger)totalCount;
18 | - (void)completeOne;
19 | - (void)done;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDWebImageTransitionInternal.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import
14 |
15 | /// Helper method for Core Animation transition
16 | FOUNDATION_EXPORT CAMediaTimingFunction * _Nullable SDTimingFunctionFromAnimationOptions(SDWebImageAnimationOptions options);
17 | FOUNDATION_EXPORT CATransition * _Nullable SDTransitionFromAnimationOptions(SDWebImageAnimationOptions options);
18 |
19 | #endif
20 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/ios-arm64_x86_64-simulator/mokoMvvmFlowSwiftUI.framework/Headers/mokoMvvmFlowSwiftUI.h:
--------------------------------------------------------------------------------
1 | //
2 | // mokoMvvmFlowSwiftUI.h
3 | // mokoMvvmFlowSwiftUI
4 | //
5 | // Created by Aleksey Mikhailov on 29.04.2022.
6 | //
7 |
8 | #import
9 |
10 | //! Project version number for mokoMvvmFlowSwiftUI.
11 | FOUNDATION_EXPORT double mokoMvvmFlowSwiftUIVersionNumber;
12 |
13 | //! Project version string for mokoMvvmFlowSwiftUI.
14 | FOUNDATION_EXPORT const unsigned char mokoMvvmFlowSwiftUIVersionString[];
15 |
16 | // In this header, you should import all the public headers of your framework using statements like #import
17 |
18 |
19 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import "UIImage+Transform.h"
14 |
15 | @interface NSBezierPath (SDRoundedCorners)
16 |
17 | /**
18 | Convenience way to create a bezier path with the specify rounding corners on macOS. Same as the one on `UIBezierPath`.
19 | */
20 | + (nonnull instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius;
21 |
22 | @end
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageError.h"
11 |
12 | NSErrorDomain const _Nonnull SDWebImageErrorDomain = @"SDWebImageErrorDomain";
13 |
14 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadResponseKey = @"SDWebImageErrorDownloadResponseKey";
15 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey = @"SDWebImageErrorDownloadStatusCodeKey";
16 | NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadContentTypeKey = @"SDWebImageErrorDownloadContentTypeKey";
17 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/Meta.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class Meta(
9 | @SerialName("current_page")
10 | val currentPage: Int = 0, // 1
11 | @SerialName("from")
12 | val from: Int = 0, // 1
13 | @SerialName("last_page")
14 | val lastPage: Int = 0, // 883
15 | @SerialName("links")
16 | val links: List = listOf(),
17 | @SerialName("path")
18 | val path: String = "", // http://api.jikan.moe/v4/top/anime
19 | @SerialName("per_page")
20 | val perPage: Int = 0, // 25
21 | @SerialName("to")
22 | val to: Int = 0, // 25
23 | @SerialName("total")
24 | val total: Int = 0 // 22052
25 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/usecase/GetTopAnimeUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.usecase
2 |
3 | import com.debanshu.animax.data.model.TopAnimeResponse
4 | import com.debanshu.animax.data.repository.RemoteDataRepository
5 | import com.debanshu.animax.utils.Dispatcher
6 | import kotlinx.coroutines.withContext
7 | import org.koin.core.component.KoinComponent
8 | import org.koin.core.component.inject
9 |
10 | class GetTopAnimeUseCase : BaseUseCase(), KoinComponent {
11 | private val remoteDataRepository: RemoteDataRepository by inject()
12 | private val dispatcher: Dispatcher by inject()
13 | override suspend fun execute(request: Unit): TopAnimeResponse = withContext(dispatcher.io) {
14 | remoteDataRepository.getTopAnimeList()
15 | }
16 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/domain/LocalAnimeEntity.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.domain
2 |
3 | import comdebanshuanimax.AnimeEntity
4 | import kotlinx.datetime.Instant
5 | import kotlinx.datetime.LocalDateTime
6 | import kotlinx.datetime.TimeZone
7 | import kotlinx.datetime.toLocalDateTime
8 |
9 | data class LocalAnimeEntity(
10 | val id: Long?,
11 | val title: String,
12 | val imageUrl: String,
13 | val created: LocalDateTime
14 | )
15 |
16 | fun AnimeEntity.toLocalAnimeEntity(): LocalAnimeEntity {
17 | return LocalAnimeEntity(
18 | id = id,
19 | title = name,
20 | imageUrl = imageUrl,
21 | created = Instant.fromEpochMilliseconds(created)
22 | .toLocalDateTime(TimeZone.currentSystemDefault())
23 | )
24 | }
25 |
26 |
27 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | /// A protocol represents cancelable operation.
12 | @protocol SDWebImageOperation
13 |
14 | /// Cancel the operation
15 | - (void)cancel;
16 |
17 | @optional
18 |
19 | /// Whether the operation has been cancelled.
20 | @property (nonatomic, assign, readonly, getter=isCancelled) BOOL cancelled;
21 |
22 | @end
23 |
24 | /// NSOperation conform to `SDWebImageOperation`.
25 | @interface NSOperation (SDWebImageOperation)
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+ExtendedCacheData.h"
11 | #import
12 |
13 | @implementation UIImage (ExtendedCacheData)
14 |
15 | - (id)sd_extendedObject {
16 | return objc_getAssociatedObject(self, @selector(sd_extendedObject));
17 | }
18 |
19 | - (void)setSd_extendedObject:(id)sd_extendedObject {
20 | objc_setAssociatedObject(self, @selector(sd_extendedObject), sd_extendedObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Views/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // iosApp
4 | //
5 | // Created by Debanshu Datta on 18/12/23.
6 | // Copyright © 2023 orgName. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 | import MultiPlatformLibrary
11 |
12 | struct ContentView: View {
13 | @ObservedObject var viewModel: AppViewModel = KoinHelper().getAppViewModel()
14 |
15 | var body: some View {
16 | TabView {
17 | GridViewAnime().tabItem {
18 | Image(systemName: "house")
19 | Text("Home")
20 | }
21 | LocalGridView().tabItem {
22 | Image(systemName: "heart")
23 | Text("Favourite")
24 | }
25 | }.environmentObject(viewModel)
26 | }
27 | }
28 |
29 | #Preview {
30 | ContentView()
31 | }
32 |
--------------------------------------------------------------------------------
/androidApp/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | @class SDAsyncBlockOperation;
12 | typedef void (^SDAsyncBlock)(SDAsyncBlockOperation * __nonnull asyncOperation);
13 |
14 | /// A async block operation, success after you call `completer` (not like `NSBlockOperation` which is for sync block, success on return)
15 | @interface SDAsyncBlockOperation : NSOperation
16 |
17 | - (nonnull instancetype)initWithBlock:(nonnull SDAsyncBlock)block;
18 | + (nonnull instancetype)blockOperationWithBlock:(nonnull SDAsyncBlock)block;
19 | - (void)complete;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/usecase/GetLocalAnimeUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.usecase
2 |
3 | import com.debanshu.animax.data.domain.LocalAnimeEntity
4 | import com.debanshu.animax.data.repository.LocalDataRepository
5 | import com.debanshu.animax.utils.Dispatcher
6 | import dev.icerock.moko.mvvm.flow.cFlow
7 | import kotlinx.coroutines.flow.Flow
8 | import kotlinx.coroutines.withContext
9 | import org.koin.core.component.KoinComponent
10 | import org.koin.core.component.inject
11 |
12 | class GetLocalAnimeUseCase : KoinComponent {
13 | private val localDataRepository: LocalDataRepository by inject()
14 | private val dispatcher: Dispatcher by inject()
15 | suspend fun execute(): Flow> =
16 | withContext(dispatcher.io) {
17 | localDataRepository.getAllAnime()
18 | }
19 | }
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 | SUPPORTS_MACCATALYST = YES
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 | SUPPORTS_MACCATALYST = YES
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | /**
13 | This category is just use as a convenience method. For more detail control, use methods in `UIImage+MultiFormat.h` or directly use `SDImageCoder`.
14 | */
15 | @interface UIImage (GIF)
16 |
17 | /**
18 | Creates an animated UIImage from an NSData.
19 | This will create animated image if the data is Animated GIF. And will create a static image is the data is Static GIF.
20 |
21 | @param data The GIF data
22 | @return The created image
23 | */
24 | + (nullable UIImage *)sd_imageWithGIFData:(nullable NSData *)data;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mokoMvvmFlowSwiftUI
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/mokoMvvmFlowSwiftUI" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
8 | PODS_ROOT = ${SRCROOT}
9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/mokoMvvmFlowSwiftUI
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
14 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/mokoMvvmFlowSwiftUI
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/mokoMvvmFlowSwiftUI" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
8 | PODS_ROOT = ${SRCROOT}
9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/mokoMvvmFlowSwiftUI
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
14 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/model/ImagesX.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.model
2 |
3 |
4 | import kotlinx.serialization.SerialName
5 | import kotlinx.serialization.Serializable
6 |
7 | @Serializable
8 | data class ImagesX(
9 | @SerialName("image_url")
10 | val imageUrl: String? = null, // https://img.youtube.com/vi/e8YBesRKq_U/default.jpg
11 | @SerialName("large_image_url")
12 | val largeImageUrl: String? = null, // https://img.youtube.com/vi/e8YBesRKq_U/hqdefault.jpg
13 | @SerialName("maximum_image_url")
14 | val maximumImageUrl: String? = null, // https://img.youtube.com/vi/e8YBesRKq_U/maxresdefault.jpg
15 | @SerialName("medium_image_url")
16 | val mediumImageUrl: String? = null, // https://img.youtube.com/vi/e8YBesRKq_U/mqdefault.jpg
17 | @SerialName("small_image_url")
18 | val smallImageUrl: String? = null // https://img.youtube.com/vi/e8YBesRKq_U/sddefault.jpg
19 | )
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/usecase/AddLocalAnimeUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.usecase
2 |
3 | import com.debanshu.animax.data.domain.DateTimeUtil
4 | import com.debanshu.animax.data.domain.LocalAnimeEntity
5 | import com.debanshu.animax.data.repository.LocalDataRepository
6 | import com.debanshu.animax.utils.Dispatcher
7 | import kotlinx.coroutines.withContext
8 | import kotlinx.datetime.LocalDateTime
9 | import org.koin.core.component.KoinComponent
10 | import org.koin.core.component.inject
11 | import kotlin.random.Random
12 |
13 | class AddLocalAnimeUseCase : KoinComponent {
14 | private val localDataRepository: LocalDataRepository by inject()
15 | private val dispatcher: Dispatcher by inject()
16 | suspend fun execute(id: Long, title: String, imageUrl: String) = withContext(dispatcher.io) {
17 | localDataRepository.insertAnime(LocalAnimeEntity(id, title, imageUrl, DateTimeUtil.now()))
18 | }
19 | }
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/shared/shared.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/shared
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../shared/build/cocoapods/framework"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | KOTLIN_PROJECT_PATH = :shared
6 | OTHER_LDFLAGS = $(inherited) -l"c++"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../shared
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | PRODUCT_MODULE_NAME = MultiPlatformLibrary
15 | SKIP_INSTALL = YES
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/shared/shared.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/shared
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../shared/build/cocoapods/framework"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | KOTLIN_PROJECT_PATH = :shared
6 | OTHER_LDFLAGS = $(inherited) -l"c++"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../shared
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | PRODUCT_MODULE_NAME = MultiPlatformLibrary
15 | SKIP_INSTALL = YES
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 5.18.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.2.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageFrame.h"
10 |
11 | @interface SDImageFrame ()
12 |
13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image;
14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration;
15 |
16 | @end
17 |
18 | @implementation SDImageFrame
19 |
20 | - (instancetype)initWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
21 | self = [super init];
22 | if (self) {
23 | _image = image;
24 | _duration = duration;
25 | }
26 | return self;
27 | }
28 |
29 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
30 | SDImageFrame *frame = [[SDImageFrame alloc] initWithImage:image duration:duration];
31 | return frame;
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageIOAnimatedCoder.h"
11 |
12 | /**
13 | This coder is used for Google WebP and Animated WebP(AWebP) image format.
14 | Image/IO provide the WebP decoding support in iOS 14/macOS 11/tvOS 14/watchOS 7+.
15 | @note Currently Image/IO seems does not supports WebP encoding, if you need WebP encoding, use the custom codec below.
16 | @note If you need to support lower firmware version for WebP, you can have a try at https://github.com/SDWebImage/SDWebImageWebPCoder
17 | */
18 | API_AVAILABLE(ios(14.0), tvos(14.0), macos(11.0), watchos(7.0))
19 | @interface SDImageAWebPCoder : SDImageIOAnimatedCoder
20 |
21 | @property (nonatomic, class, readonly, nonnull) SDImageAWebPCoder *sharedCoder;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iosApp/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - mokoMvvmFlowSwiftUI (0.16.1)
3 | - SDWebImage (5.18.2):
4 | - SDWebImage/Core (= 5.18.2)
5 | - SDWebImage/Core (5.18.2)
6 | - SDWebImageSwiftUI (2.2.3):
7 | - SDWebImage (~> 5.10)
8 | - shared (1.0)
9 |
10 | DEPENDENCIES:
11 | - mokoMvvmFlowSwiftUI (from `https://raw.githubusercontent.com/icerockdev/moko-mvvm/release/0.16.1/mokoMvvmFlowSwiftUI.podspec`)
12 | - SDWebImageSwiftUI
13 | - shared (from `../shared`)
14 |
15 | SPEC REPOS:
16 | trunk:
17 | - SDWebImage
18 | - SDWebImageSwiftUI
19 |
20 | EXTERNAL SOURCES:
21 | mokoMvvmFlowSwiftUI:
22 | :podspec: https://raw.githubusercontent.com/icerockdev/moko-mvvm/release/0.16.1/mokoMvvmFlowSwiftUI.podspec
23 | shared:
24 | :path: "../shared"
25 |
26 | SPEC CHECKSUMS:
27 | mokoMvvmFlowSwiftUI: e2ecbc38ea996fc376bf297041aeaad06ac44c89
28 | SDWebImage: c0de394d7cf7f9838aed1fd6bb6037654a4572e4
29 | SDWebImageSwiftUI: 17396b7889f9abc27231caaeb64c537564284aab
30 | shared: d22e29033a2b5a0efa52d701bcf02fc8d9e96808
31 |
32 | PODFILE CHECKSUM: 93bcabb71889d3ab3fb95bfacc398426cd1f0280
33 |
34 | COCOAPODS: 1.13.0
35 |
--------------------------------------------------------------------------------
/iosApp/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - mokoMvvmFlowSwiftUI (0.16.1)
3 | - SDWebImage (5.18.2):
4 | - SDWebImage/Core (= 5.18.2)
5 | - SDWebImage/Core (5.18.2)
6 | - SDWebImageSwiftUI (2.2.3):
7 | - SDWebImage (~> 5.10)
8 | - shared (1.0)
9 |
10 | DEPENDENCIES:
11 | - mokoMvvmFlowSwiftUI (from `https://raw.githubusercontent.com/icerockdev/moko-mvvm/release/0.16.1/mokoMvvmFlowSwiftUI.podspec`)
12 | - SDWebImageSwiftUI
13 | - shared (from `../shared`)
14 |
15 | SPEC REPOS:
16 | trunk:
17 | - SDWebImage
18 | - SDWebImageSwiftUI
19 |
20 | EXTERNAL SOURCES:
21 | mokoMvvmFlowSwiftUI:
22 | :podspec: https://raw.githubusercontent.com/icerockdev/moko-mvvm/release/0.16.1/mokoMvvmFlowSwiftUI.podspec
23 | shared:
24 | :path: "../shared"
25 |
26 | SPEC CHECKSUMS:
27 | mokoMvvmFlowSwiftUI: e2ecbc38ea996fc376bf297041aeaad06ac44c89
28 | SDWebImage: c0de394d7cf7f9838aed1fd6bb6037654a4572e4
29 | SDWebImageSwiftUI: 17396b7889f9abc27231caaeb64c537564284aab
30 | shared: d22e29033a2b5a0efa52d701bcf02fc8d9e96808
31 |
32 | PODFILE CHECKSUM: 93bcabb71889d3ab3fb95bfacc398426cd1f0280
33 |
34 | COCOAPODS: 1.13.0
35 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDDeviceHelper.h"
10 | #import
11 | #import
12 |
13 | @implementation SDDeviceHelper
14 |
15 | + (NSUInteger)totalMemory {
16 | return (NSUInteger)[[NSProcessInfo processInfo] physicalMemory];
17 | }
18 |
19 | + (NSUInteger)freeMemory {
20 | mach_port_t host_port = mach_host_self();
21 | mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
22 | vm_size_t page_size;
23 | vm_statistics_data_t vm_stat;
24 | kern_return_t kern;
25 |
26 | kern = host_page_size(host_port, &page_size);
27 | if (kern != KERN_SUCCESS) return 0;
28 | kern = host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size);
29 | if (kern != KERN_SUCCESS) return 0;
30 | return vm_stat.free_count * page_size;
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDAssociatedObject.h"
10 | #import "UIImage+Metadata.h"
11 | #import "UIImage+ExtendedCacheData.h"
12 | #import "UIImage+MemoryCacheCost.h"
13 | #import "UIImage+ForceDecode.h"
14 |
15 | void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target) {
16 | if (!source || !target) {
17 | return;
18 | }
19 | // Image Metadata
20 | target.sd_isIncremental = source.sd_isIncremental;
21 | target.sd_isTransformed = source.sd_isTransformed;
22 | target.sd_decodeOptions = source.sd_decodeOptions;
23 | target.sd_imageLoopCount = source.sd_imageLoopCount;
24 | target.sd_imageFormat = source.sd_imageFormat;
25 | // Force Decode
26 | target.sd_isDecoded = source.sd_isDecoded;
27 | // Extended Cache Data
28 | target.sd_extendedObject = source.sd_extendedObject;
29 | }
30 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCacheKeyFilter.h"
10 |
11 | @interface SDWebImageCacheKeyFilter ()
12 |
13 | @property (nonatomic, copy, nonnull) SDWebImageCacheKeyFilterBlock block;
14 |
15 | @end
16 |
17 | @implementation SDWebImageCacheKeyFilter
18 |
19 | - (instancetype)initWithBlock:(SDWebImageCacheKeyFilterBlock)block {
20 | self = [super init];
21 | if (self) {
22 | self.block = block;
23 | }
24 | return self;
25 | }
26 |
27 | + (instancetype)cacheKeyFilterWithBlock:(SDWebImageCacheKeyFilterBlock)block {
28 | SDWebImageCacheKeyFilter *cacheKeyFilter = [[SDWebImageCacheKeyFilter alloc] initWithBlock:block];
29 | return cacheKeyFilter;
30 | }
31 |
32 | - (NSString *)cacheKeyForURL:(NSURL *)url {
33 | if (!self.block) {
34 | return nil;
35 | }
36 | return self.block(url);
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009-2020 Olivier Poitrey rs@dailymotion.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
21 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDImageAssetManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /// A Image-Asset manager to work like UIKit/AppKit's image cache behavior
13 | /// Apple parse the Asset Catalog compiled file(`Assets.car`) by CoreUI.framework, however it's a private framework and there are no other ways to directly get the data. So we just process the normal bundle files :)
14 | @interface SDImageAssetManager : NSObject
15 |
16 | @property (nonatomic, strong, nonnull) NSMapTable *imageTable;
17 |
18 | + (nonnull instancetype)sharedAssetManager;
19 | - (nullable NSString *)getPathForName:(nonnull NSString *)name bundle:(nonnull NSBundle *)bundle preferredScale:(nonnull CGFloat *)scale;
20 | - (nullable UIImage *)imageForName:(nonnull NSString *)name;
21 | - (void)storeImage:(nonnull UIImage *)image forName:(nonnull NSString *)name;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2019 lizhuoli1126@126.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageIOAnimatedCoder.h"
11 |
12 | /**
13 | Built in coder using ImageIO that supports animated GIF encoding/decoding
14 | @note `SDImageIOCoder` supports GIF but only as static (will use the 1st frame).
15 | @note Use `SDImageGIFCoder` for fully animated GIFs. For `UIImageView`, it will produce animated `UIImage`(`NSImage` on macOS) for rendering. For `SDAnimatedImageView`, it will use `SDAnimatedImage` for rendering.
16 | @note The recommended approach for animated GIFs is using `SDAnimatedImage` with `SDAnimatedImageView`. It's more performant than `UIImageView` for GIF displaying(especially on memory usage)
17 | */
18 | @interface SDImageGIFCoder : SDImageIOAnimatedCoder
19 |
20 | @property (nonatomic, class, readonly, nonnull) SDImageGIFCoder *sharedCoder;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI
3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
7 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO" -framework "SDWebImage" -weak_framework "Combine" -weak_framework "SwiftUI"
8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
9 | PODS_BUILD_DIR = ${BUILD_DIR}
10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
12 | PODS_ROOT = ${SRCROOT}
13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImageSwiftUI
14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
16 | SKIP_INSTALL = YES
17 | SUPPORTS_MACCATALYST = YES
18 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
19 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImageSwiftUI/SDWebImageSwiftUI.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI
3 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
7 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO" -framework "SDWebImage" -weak_framework "Combine" -weak_framework "SwiftUI"
8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
9 | PODS_BUILD_DIR = ${BUILD_DIR}
10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
12 | PODS_ROOT = ${SRCROOT}
13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImageSwiftUI
14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
16 | SKIP_INSTALL = YES
17 | SUPPORTS_MACCATALYST = YES
18 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
19 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | typedef NSString * _Nullable(^SDWebImageCacheKeyFilterBlock)(NSURL * _Nonnull url);
13 |
14 | /**
15 | This is the protocol for cache key filter.
16 | We can use a block to specify the cache key filter. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options.
17 | */
18 | @protocol SDWebImageCacheKeyFilter
19 |
20 | - (nullable NSString *)cacheKeyForURL:(nonnull NSURL *)url;
21 |
22 | @end
23 |
24 | /**
25 | A cache key filter class with block.
26 | */
27 | @interface SDWebImageCacheKeyFilter : NSObject
28 |
29 | - (nonnull instancetype)initWithBlock:(nonnull SDWebImageCacheKeyFilterBlock)block;
30 | + (nonnull instancetype)cacheKeyFilterWithBlock:(nonnull SDWebImageCacheKeyFilterBlock)block;
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCacheSerializer.h"
10 |
11 | @interface SDWebImageCacheSerializer ()
12 |
13 | @property (nonatomic, copy, nonnull) SDWebImageCacheSerializerBlock block;
14 |
15 | @end
16 |
17 | @implementation SDWebImageCacheSerializer
18 |
19 | - (instancetype)initWithBlock:(SDWebImageCacheSerializerBlock)block {
20 | self = [super init];
21 | if (self) {
22 | self.block = block;
23 | }
24 | return self;
25 | }
26 |
27 | + (instancetype)cacheSerializerWithBlock:(SDWebImageCacheSerializerBlock)block {
28 | SDWebImageCacheSerializer *cacheSerializer = [[SDWebImageCacheSerializer alloc] initWithBlock:block];
29 | return cacheSerializer;
30 | }
31 |
32 | - (NSData *)cacheDataWithImage:(UIImage *)image originalData:(NSData *)data imageURL:(nullable NSURL *)imageURL {
33 | if (!self.block) {
34 | return nil;
35 | }
36 | return self.block(image, data, imageURL);
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // This file is from https://gist.github.com/zydeco/6292773
3 | //
4 | // Created by Jesús A. Álvarez on 2008-12-17.
5 | // Copyright 2008-2009 namedfork.net. All rights reserved.
6 | //
7 |
8 | #import
9 |
10 | /// File Extended Attribute (xattr) helper methods
11 | @interface SDFileAttributeHelper : NSObject
12 |
13 | + (nullable NSArray *)extendedAttributeNamesAtPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err;
14 | + (BOOL)hasExtendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err;
15 | + (nullable NSData *)extendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err;
16 | + (BOOL)setExtendedAttribute:(nonnull NSString *)name value:(nonnull NSData *)value atPath:(nonnull NSString *)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError * _Nullable * _Nullable)err;
17 | + (BOOL)removeExtendedAttribute:(nonnull NSString *)name atPath:(nonnull NSString *)path traverseLink:(BOOL)follow error:(NSError * _Nullable * _Nullable)err;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIColor+SDHexString.h"
10 |
11 | @implementation UIColor (SDHexString)
12 |
13 | - (NSString *)sd_hexString {
14 | CGFloat red, green, blue, alpha;
15 | #if SD_UIKIT
16 | if (![self getRed:&red green:&green blue:&blue alpha:&alpha]) {
17 | [self getWhite:&red alpha:&alpha];
18 | green = red;
19 | blue = red;
20 | }
21 | #else
22 | @try {
23 | [self getRed:&red green:&green blue:&blue alpha:&alpha];
24 | }
25 | @catch (NSException *exception) {
26 | [self getWhite:&red alpha:&alpha];
27 | green = red;
28 | blue = red;
29 | }
30 | #endif
31 |
32 | red = roundf(red * 255.f);
33 | green = roundf(green * 255.f);
34 | blue = roundf(blue * 255.f);
35 | alpha = roundf(alpha * 255.f);
36 |
37 | uint hex = ((uint)alpha << 24) | ((uint)red << 16) | ((uint)green << 8) | ((uint)blue);
38 |
39 | return [NSString stringWithFormat:@"#%08x", hex];
40 | }
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /// Cross-platform display link wrapper. Do not retain the target
13 | /// Use `CADisplayLink` on iOS/tvOS, `CVDisplayLink` on macOS, `NSTimer` on watchOS
14 | @interface SDDisplayLink : NSObject
15 |
16 | @property (readonly, nonatomic, weak, nullable) id target;
17 | @property (readonly, nonatomic, assign, nonnull) SEL selector;
18 | @property (readonly, nonatomic) NSTimeInterval duration; // elapsed time in seconds of previous callback. (or it's first callback, use the time between `start` and callback). Always zero when display link not running
19 | @property (readonly, nonatomic) BOOL isRunning;
20 |
21 | + (nonnull instancetype)displayLinkWithTarget:(nonnull id)target selector:(nonnull SEL)sel;
22 |
23 | - (void)addToRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode;
24 | - (void)removeFromRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode;
25 |
26 | - (void)start;
27 | - (void)stop;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageIOAnimatedCoder.h"
11 |
12 | /**
13 | This coder is used for HEIC (HEIF with HEVC container codec) image format.
14 | Image/IO provide the static HEIC (.heic) support in iOS 11/macOS 10.13/tvOS 11/watchOS 4+.
15 | Image/IO provide the animated HEIC (.heics) support in iOS 13/macOS 10.15/tvOS 13/watchOS 6+.
16 | See https://nokiatech.github.io/heif/technical.html for the standard.
17 | @note This coder is not in the default coder list for now, since HEIC animated image is really rare, and Apple's implementation still contains performance issues. You can enable if you need this.
18 | @note If you need to support lower firmware version for HEIF, you can have a try at https://github.com/SDWebImage/SDWebImageHEIFCoder
19 | */
20 | API_AVAILABLE(ios(13.0), tvos(13.0), macos(10.15), watchos(6.0))
21 | @interface SDImageHEICCoder : SDImageIOAnimatedCoder
22 |
23 | @property (nonatomic, class, readonly, nonnull) SDImageHEICCoder *sharedCoder;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageLoadersManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageLoader.h"
10 |
11 | /**
12 | A loaders manager to manage multiple loaders
13 | */
14 | @interface SDImageLoadersManager : NSObject
15 |
16 | /**
17 | Returns the global shared loaders manager instance. By default we will set [`SDWebImageDownloader.sharedDownloader`] into the loaders array.
18 | */
19 | @property (nonatomic, class, readonly, nonnull) SDImageLoadersManager *sharedManager;
20 |
21 | /**
22 | All image loaders in manager. The loaders array is a priority queue, which means the later added loader will have the highest priority
23 | */
24 | @property (nonatomic, copy, nullable) NSArray>* loaders;
25 |
26 | /**
27 | Add a new image loader to the end of loaders array. Which has the highest priority.
28 |
29 | @param loader loader
30 | */
31 | - (void)addLoader:(nonnull id)loader;
32 |
33 | /**
34 | Remove an image loader in the loaders array.
35 |
36 | @param loader loader
37 | */
38 | - (void)removeLoader:(nonnull id)loader;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/di/sharedModules.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.di
2 |
3 | import app.cash.sqldelight.db.SqlDriver
4 | import com.debanshu.animax.AppDatabase
5 | import com.debanshu.animax.data.DatabaseDriverFactory
6 | import com.debanshu.animax.data.repository.LocalDataRepository
7 | import com.debanshu.animax.data.repository.RemoteDataRepository
8 | import com.debanshu.animax.data.usecase.AddLocalAnimeUseCase
9 | import com.debanshu.animax.data.usecase.DeleteLocalAnimeByIdUseCase
10 | import com.debanshu.animax.data.usecase.GetLocalAnimeUseCase
11 | import com.debanshu.animax.data.usecase.GetTopAnimeUseCase
12 | import com.debanshu.animax.utils.provideDispatcher
13 | import org.koin.dsl.module
14 |
15 | private val dataModule = module {
16 | single { RemoteDataRepository() }
17 | factory { GetTopAnimeUseCase() }
18 | factory { GetLocalAnimeUseCase() }
19 | factory { AddLocalAnimeUseCase() }
20 | factory { DeleteLocalAnimeByIdUseCase() }
21 | single { AppDatabase((get() as DatabaseDriverFactory).createDriver()) }
22 | single { LocalDataRepository(get()) }
23 | }
24 |
25 | private val utilityModule = module {
26 | factory { provideDispatcher() }
27 | }
28 |
29 | private val sharedModules = listOf(
30 | dataModule, utilityModule, getViewModelByPlatform(), getDataDriverFactory()
31 | )
32 |
33 | fun getSharedModules() = sharedModules
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/domain/DateTimeUtil.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.domain
2 |
3 | import kotlinx.datetime.Clock
4 | import kotlinx.datetime.LocalDateTime
5 | import kotlinx.datetime.TimeZone
6 | import kotlinx.datetime.toInstant
7 | import kotlinx.datetime.toLocalDateTime
8 |
9 | object DateTimeUtil {
10 | fun now(): LocalDateTime =
11 | Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault())
12 |
13 | fun toEpochMillis(dateTime: LocalDateTime): Long =
14 | dateTime.toInstant(TimeZone.currentSystemDefault()).toEpochMilliseconds()
15 |
16 | fun formatAnimeDate(dateTime: LocalDateTime): String {
17 | val month = dateTime.month.name.lowercase().take(3).replaceFirstChar { it.uppercase() }
18 | val day = if(dateTime.dayOfMonth < 10) "0${dateTime.dayOfMonth}" else dateTime.dayOfMonth
19 | val year = dateTime.year
20 | val hour = if(dateTime.hour < 10) "0${dateTime.hour}" else dateTime.hour
21 | val minute = if(dateTime.minute < 10) "0${dateTime.minute}" else dateTime.minute
22 |
23 | return buildString {
24 | append(month)
25 | append(" ")
26 | append(day)
27 | append(" ")
28 | append(year)
29 | append(", ")
30 | append(hour)
31 | append(":")
32 | append(minute)
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageCoder.h"
11 |
12 | /**
13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding.
14 |
15 | GIF
16 | Also supports static GIF (meaning will only handle the 1st frame).
17 | For a full GIF support, we recommend `SDAnimatedImageView` to keep both CPU and memory balanced.
18 |
19 | HEIC
20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf
21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13)
22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU))
23 | Encode(Software): macOS 10.13
24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU))
25 | */
26 | @interface SDImageIOCoder : NSObject
27 |
28 | @property (nonatomic, class, readonly, nonnull) SDImageIOCoder *sharedCoder;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/iosApp/Pods/Local Podspecs/shared.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shared",
3 | "version": "1.0",
4 | "homepage": "Link to the Shared Module homepage",
5 | "source": {
6 | "http": ""
7 | },
8 | "authors": "",
9 | "license": "",
10 | "summary": "Some description for the Shared Module",
11 | "vendored_frameworks": "build/cocoapods/framework/MultiPlatformLibrary.framework",
12 | "libraries": "c++",
13 | "platforms": {
14 | "ios": "14.1"
15 | },
16 | "pod_target_xcconfig": {
17 | "KOTLIN_PROJECT_PATH": ":shared",
18 | "PRODUCT_MODULE_NAME": "MultiPlatformLibrary"
19 | },
20 | "script_phases": [
21 | {
22 | "name": "Build shared",
23 | "execution_position": "before_compile",
24 | "shell_path": "/bin/sh",
25 | "script": " if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n"
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | @interface UIImage (ExtendedCacheData)
14 |
15 | /**
16 | Read and Write the extended object and bind it to the image. Which can hold some extra metadata like Image's scale factor, URL rich link, date, etc.
17 | The extended object should conforms to NSCoding, which we use `NSKeyedArchiver` and `NSKeyedUnarchiver` to archive it to data, and write to disk cache.
18 | @note The disk cache preserve both of the data and extended data with the same cache key. For manual query, use the `SDDiskCache` protocol method `extendedDataForKey:` instead.
19 | @note You can specify arbitrary object conforms to NSCoding (NSObject protocol here is used to support object using `NS_ROOT_CLASS`, which is not NSObject subclass). If you load image from disk cache, you should check the extended object class to avoid corrupted data.
20 | @warning This object don't need to implements NSSecureCoding (but it's recommended), because we allows arbitrary class.
21 | */
22 | @property (nonatomic, strong, nullable) id sd_extendedObject;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | /**
12 | UIImage category for memory cache cost.
13 | */
14 | @interface UIImage (MemoryCacheCost)
15 |
16 | /**
17 | The memory cache cost for specify image used by image cache. The cost function is the bytes size held in memory.
18 | If you set some associated object to `UIImage`, you can set the custom value to indicate the memory cost.
19 |
20 | For `UIImage`, this method return the single frame bytes size when `image.images` is nil for static image. Return full frame bytes size when `image.images` is not nil for animated image.
21 | For `NSImage`, this method return the single frame bytes size because `NSImage` does not store all frames in memory.
22 | @note Note that because of the limitations of category this property can get out of sync if you create another instance with CGImage or other methods.
23 | @note For custom animated class conforms to `SDAnimatedImage`, you can override this getter method in your subclass to return a more proper value instead, which representing the current frame's total bytes.
24 | */
25 | @property (assign, nonatomic) NSUInteger sd_memoryCost;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+ForceDecode.h"
10 | #import "SDImageCoderHelper.h"
11 | #import "objc/runtime.h"
12 | #import "NSImage+Compatibility.h"
13 |
14 | @implementation UIImage (ForceDecode)
15 |
16 | - (BOOL)sd_isDecoded {
17 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_isDecoded));
18 | return [value boolValue];
19 | }
20 |
21 | - (void)setSd_isDecoded:(BOOL)sd_isDecoded {
22 | objc_setAssociatedObject(self, @selector(sd_isDecoded), @(sd_isDecoded), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
23 | }
24 |
25 | + (nullable UIImage *)sd_decodedImageWithImage:(nullable UIImage *)image {
26 | if (!image) {
27 | return nil;
28 | }
29 | return [SDImageCoderHelper decodedImageWithImage:image];
30 | }
31 |
32 | + (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image {
33 | return [self sd_decodedAndScaledDownImageWithImage:image limitBytes:0];
34 | }
35 |
36 | + (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image limitBytes:(NSUInteger)bytes {
37 | if (!image) {
38 | return nil;
39 | }
40 | return [SDImageCoderHelper decodedAndScaledDownImageWithImage:image limitBytes:bytes];
41 | }
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI" "${PODS_ROOT}/../../shared/build/cocoapods/framework" "${PODS_ROOT}/mokoMvvmFlowSwiftUI" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.framework/Headers"
6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
8 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "ImageIO" -framework "MultiPlatformLibrary" -framework "SDWebImage" -framework "SDWebImageSwiftUI" -framework "mokoMvvmFlowSwiftUI" -weak_framework "Combine" -weak_framework "SwiftUI"
9 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
10 | PODS_BUILD_DIR = ${BUILD_DIR}
11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
12 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
13 | PODS_ROOT = ${SRCROOT}/Pods
14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI" "${PODS_ROOT}/../../shared/build/cocoapods/framework" "${PODS_ROOT}/mokoMvvmFlowSwiftUI" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mokoMvvmFlowSwiftUI"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageSwiftUI/SDWebImageSwiftUI.framework/Headers"
6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
8 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "ImageIO" -framework "MultiPlatformLibrary" -framework "SDWebImage" -framework "SDWebImageSwiftUI" -framework "mokoMvvmFlowSwiftUI" -weak_framework "Combine" -weak_framework "SwiftUI"
9 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
10 | PODS_BUILD_DIR = ${BUILD_DIR}
11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
12 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
13 | PODS_ROOT = ${SRCROOT}/Pods
14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
16 |
--------------------------------------------------------------------------------
/androidApp/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
29 |
30 |
36 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageGIFCoder.h"
10 | #import "SDImageIOAnimatedCoderInternal.h"
11 | #if SD_MAC
12 | #import
13 | #else
14 | #import
15 | #endif
16 |
17 | @implementation SDImageGIFCoder
18 |
19 | + (instancetype)sharedCoder {
20 | static SDImageGIFCoder *coder;
21 | static dispatch_once_t onceToken;
22 | dispatch_once(&onceToken, ^{
23 | coder = [[SDImageGIFCoder alloc] init];
24 | });
25 | return coder;
26 | }
27 |
28 | #pragma mark - Subclass Override
29 |
30 | + (SDImageFormat)imageFormat {
31 | return SDImageFormatGIF;
32 | }
33 |
34 | + (NSString *)imageUTType {
35 | return (__bridge NSString *)kSDUTTypeGIF;
36 | }
37 |
38 | + (NSString *)dictionaryProperty {
39 | return (__bridge NSString *)kCGImagePropertyGIFDictionary;
40 | }
41 |
42 | + (NSString *)unclampedDelayTimeProperty {
43 | return (__bridge NSString *)kCGImagePropertyGIFUnclampedDelayTime;
44 | }
45 |
46 | + (NSString *)delayTimeProperty {
47 | return (__bridge NSString *)kCGImagePropertyGIFDelayTime;
48 | }
49 |
50 | + (NSString *)loopCountProperty {
51 | return (__bridge NSString *)kCGImagePropertyGIFLoopCount;
52 | }
53 |
54 | + (NSUInteger)defaultLoopCount {
55 | return 1;
56 | }
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageAPNGCoder.h"
10 | #import "SDImageIOAnimatedCoderInternal.h"
11 | #if SD_MAC
12 | #import
13 | #else
14 | #import
15 | #endif
16 |
17 | @implementation SDImageAPNGCoder
18 |
19 | + (instancetype)sharedCoder {
20 | static SDImageAPNGCoder *coder;
21 | static dispatch_once_t onceToken;
22 | dispatch_once(&onceToken, ^{
23 | coder = [[SDImageAPNGCoder alloc] init];
24 | });
25 | return coder;
26 | }
27 |
28 | #pragma mark - Subclass Override
29 |
30 | + (SDImageFormat)imageFormat {
31 | return SDImageFormatPNG;
32 | }
33 |
34 | + (NSString *)imageUTType {
35 | return (__bridge NSString *)kSDUTTypePNG;
36 | }
37 |
38 | + (NSString *)dictionaryProperty {
39 | return (__bridge NSString *)kCGImagePropertyPNGDictionary;
40 | }
41 |
42 | + (NSString *)unclampedDelayTimeProperty {
43 | return (__bridge NSString *)kCGImagePropertyAPNGUnclampedDelayTime;
44 | }
45 |
46 | + (NSString *)delayTimeProperty {
47 | return (__bridge NSString *)kCGImagePropertyAPNGDelayTime;
48 | }
49 |
50 | + (NSString *)loopCountProperty {
51 | return (__bridge NSString *)kCGImagePropertyAPNGLoopCount;
52 | }
53 |
54 | + (NSUInteger)defaultLoopCount {
55 | return 0;
56 | }
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AvailableLibraries
6 |
7 |
8 | LibraryIdentifier
9 | ios-arm64_x86_64-simulator
10 | LibraryPath
11 | mokoMvvmFlowSwiftUI.framework
12 | SupportedArchitectures
13 |
14 | arm64
15 | x86_64
16 |
17 | SupportedPlatform
18 | ios
19 | SupportedPlatformVariant
20 | simulator
21 |
22 |
23 | LibraryIdentifier
24 | ios-arm64
25 | LibraryPath
26 | mokoMvvmFlowSwiftUI.framework
27 | SupportedArchitectures
28 |
29 | arm64
30 |
31 | SupportedPlatform
32 | ios
33 |
34 |
35 | LibraryIdentifier
36 | macos-x86_64
37 | LibraryPath
38 | mokoMvvmFlowSwiftUI.framework
39 | SupportedArchitectures
40 |
41 | x86_64
42 |
43 | SupportedPlatform
44 | macos
45 |
46 |
47 | CFBundlePackageType
48 | XFWK
49 | XCFrameworkFormatVersion
50 | 1.0
51 |
52 |
53 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | typedef NSData * _Nullable(^SDWebImageCacheSerializerBlock)(UIImage * _Nonnull image, NSData * _Nullable data, NSURL * _Nullable imageURL);
13 |
14 | /**
15 | This is the protocol for cache serializer.
16 | We can use a block to specify the cache serializer. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options.
17 | */
18 | @protocol SDWebImageCacheSerializer
19 |
20 | /// Provide the image data associated to the image and store to disk cache
21 | /// @param image The loaded image
22 | /// @param data The original loaded image data. May be nil when image is transformed (UIImage.sd_isTransformed = YES)
23 | /// @param imageURL The image URL
24 | - (nullable NSData *)cacheDataWithImage:(nonnull UIImage *)image originalData:(nullable NSData *)data imageURL:(nullable NSURL *)imageURL;
25 |
26 | @end
27 |
28 | /**
29 | A cache serializer class with block.
30 | */
31 | @interface SDWebImageCacheSerializer : NSObject
32 |
33 | - (nonnull instancetype)initWithBlock:(nonnull SDWebImageCacheSerializerBlock)block;
34 | + (nonnull instancetype)cacheSerializerWithBlock:(nonnull SDWebImageCacheSerializerBlock)block;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+MemoryCacheCost.h"
10 | #import "objc/runtime.h"
11 | #import "NSImage+Compatibility.h"
12 |
13 | FOUNDATION_STATIC_INLINE NSUInteger SDMemoryCacheCostForImage(UIImage *image) {
14 | CGImageRef imageRef = image.CGImage;
15 | if (!imageRef) {
16 | return 0;
17 | }
18 | NSUInteger bytesPerFrame = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef);
19 | NSUInteger frameCount;
20 | #if SD_MAC
21 | frameCount = 1;
22 | #elif SD_UIKIT || SD_WATCH
23 | // Filter the same frame in `_UIAnimatedImage`.
24 | frameCount = image.images.count > 1 ? [NSSet setWithArray:image.images].count : 1;
25 | #endif
26 | NSUInteger cost = bytesPerFrame * frameCount;
27 | return cost;
28 | }
29 |
30 | @implementation UIImage (MemoryCacheCost)
31 |
32 | - (NSUInteger)sd_memoryCost {
33 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_memoryCost));
34 | NSUInteger memoryCost;
35 | if (value != nil) {
36 | memoryCost = [value unsignedIntegerValue];
37 | } else {
38 | memoryCost = SDMemoryCacheCostForImage(self);
39 | }
40 | return memoryCost;
41 | }
42 |
43 | - (void)setSd_memoryCost:(NSUInteger)sd_memoryCost {
44 | objc_setAssociatedObject(self, @selector(sd_memoryCost), @(sd_memoryCost), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 20G1231
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | mokoMvvmFlowSwiftUI
11 | CFBundleIdentifier
12 | dev.icerock.moko.mokoMvvmFlowSwiftUI
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | mokoMvvmFlowSwiftUI
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSupportedPlatforms
22 |
23 | MacOSX
24 |
25 | CFBundleVersion
26 | 1
27 | DTCompiler
28 | com.apple.compilers.llvm.clang.1_0
29 | DTPlatformBuild
30 | 13C100
31 | DTPlatformName
32 | macosx
33 | DTPlatformVersion
34 | 12.1
35 | DTSDKBuild
36 | 21C46
37 | DTSDKName
38 | macosx12.1
39 | DTXcode
40 | 1321
41 | DTXcodeBuild
42 | 13C100
43 | LSMinimumSystemVersion
44 | 12.1
45 | NSHumanReadableCopyright
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import
11 |
12 | /**
13 | These following graphics context method are provided to easily write cross-platform(AppKit/UIKit) code.
14 | For UIKit, these methods just call the same method in `UIGraphics.h`. See the documentation for usage.
15 | For AppKit, these methods use `NSGraphicsContext` to create image context and match the behavior like UIKit.
16 | @note If you don't care bitmap format (ARGB8888) and just draw image, use `SDGraphicsImageRenderer` instead. It's more performant on RAM usage.`
17 | */
18 |
19 | /// Returns the current graphics context.
20 | FOUNDATION_EXPORT CGContextRef __nullable SDGraphicsGetCurrentContext(void) CF_RETURNS_NOT_RETAINED;
21 | /// Creates a bitmap-based graphics context and makes it the current context.
22 | FOUNDATION_EXPORT void SDGraphicsBeginImageContext(CGSize size);
23 | /// Creates a bitmap-based graphics context with the specified options.
24 | FOUNDATION_EXPORT void SDGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);
25 | /// Removes the current bitmap-based graphics context from the top of the stack.
26 | FOUNDATION_EXPORT void SDGraphicsEndImageContext(void);
27 | /// Returns an image based on the contents of the current bitmap-based graphics context.
28 | FOUNDATION_EXPORT UIImage * __nullable SDGraphicsGetImageFromCurrentImageContext(void);
29 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageCoder.h"
10 |
11 | SDImageCoderOption const SDImageCoderDecodeFirstFrameOnly = @"decodeFirstFrameOnly";
12 | SDImageCoderOption const SDImageCoderDecodeScaleFactor = @"decodeScaleFactor";
13 | SDImageCoderOption const SDImageCoderDecodePreserveAspectRatio = @"decodePreserveAspectRatio";
14 | SDImageCoderOption const SDImageCoderDecodeThumbnailPixelSize = @"decodeThumbnailPixelSize";
15 | SDImageCoderOption const SDImageCoderDecodeFileExtensionHint = @"decodeFileExtensionHint";
16 | SDImageCoderOption const SDImageCoderDecodeTypeIdentifierHint = @"decodeTypeIdentifierHint";
17 | SDImageCoderOption const SDImageCoderDecodeUseLazyDecoding = @"decodeUseLazyDecoding";
18 | SDImageCoderOption const SDImageCoderDecodeScaleDownLimitBytes = @"decodeScaleDownLimitBytes";
19 |
20 | SDImageCoderOption const SDImageCoderEncodeFirstFrameOnly = @"encodeFirstFrameOnly";
21 | SDImageCoderOption const SDImageCoderEncodeCompressionQuality = @"encodeCompressionQuality";
22 | SDImageCoderOption const SDImageCoderEncodeBackgroundColor = @"encodeBackgroundColor";
23 | SDImageCoderOption const SDImageCoderEncodeMaxPixelSize = @"encodeMaxPixelSize";
24 | SDImageCoderOption const SDImageCoderEncodeMaxFileSize = @"encodeMaxFileSize";
25 | SDImageCoderOption const SDImageCoderEncodeEmbedThumbnail = @"encodeEmbedThumbnail";
26 |
27 | SDImageCoderOption const SDImageCoderWebImageContext = @"webImageContext";
28 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 20G1231
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | mokoMvvmFlowSwiftUI
11 | CFBundleIdentifier
12 | dev.icerock.moko.mokoMvvmFlowSwiftUI
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | mokoMvvmFlowSwiftUI
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSupportedPlatforms
22 |
23 | MacOSX
24 |
25 | CFBundleVersion
26 | 1
27 | DTCompiler
28 | com.apple.compilers.llvm.clang.1_0
29 | DTPlatformBuild
30 | 13C100
31 | DTPlatformName
32 | macosx
33 | DTPlatformVersion
34 | 12.1
35 | DTSDKBuild
36 | 21C46
37 | DTSDKName
38 | macosx12.1
39 | DTXcode
40 | 1321
41 | DTXcodeBuild
42 | 13C100
43 | LSMinimumSystemVersion
44 | 12.1
45 | NSHumanReadableCopyright
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/iosApp/Pods/mokoMvvmFlowSwiftUI/mokoMvvmFlowSwiftUI.xcframework/macos-x86_64/mokoMvvmFlowSwiftUI.framework/Versions/Current/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 20G1231
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | mokoMvvmFlowSwiftUI
11 | CFBundleIdentifier
12 | dev.icerock.moko.mokoMvvmFlowSwiftUI
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | mokoMvvmFlowSwiftUI
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSupportedPlatforms
22 |
23 | MacOSX
24 |
25 | CFBundleVersion
26 | 1
27 | DTCompiler
28 | com.apple.compilers.llvm.clang.1_0
29 | DTPlatformBuild
30 | 13C100
31 | DTPlatformName
32 | macosx
33 | DTPlatformVersion
34 | 12.1
35 | DTSDKBuild
36 | 21C46
37 | DTSDKName
38 | macosx12.1
39 | DTXcode
40 | 1321
41 | DTXcodeBuild
42 | 13C100
43 | LSMinimumSystemVersion
44 | 12.1
45 | NSHumanReadableCopyright
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageFrame.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /**
13 | This class is used for creating animated images via `animatedImageWithFrames` in `SDImageCoderHelper`.
14 | @note If you need to specify animated images loop count, use `sd_imageLoopCount` property in `UIImage+Metadata.h`.
15 | */
16 | @interface SDImageFrame : NSObject
17 |
18 | /**
19 | The image of current frame. You should not set an animated image.
20 | */
21 | @property (nonatomic, strong, readonly, nonnull) UIImage *image;
22 | /**
23 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero.
24 | */
25 | @property (nonatomic, readonly, assign) NSTimeInterval duration;
26 |
27 | /// Create a frame instance with specify image and duration
28 | /// @param image current frame's image
29 | /// @param duration current frame's duration
30 | - (nonnull instancetype)initWithImage:(nonnull UIImage *)image duration:(NSTimeInterval)duration;
31 |
32 | /**
33 | Create a frame instance with specify image and duration
34 |
35 | @param image current frame's image
36 | @param duration current frame's duration
37 | @return frame instance
38 | */
39 | + (nonnull instancetype)frameWithImage:(nonnull UIImage *)image duration:(NSTimeInterval)duration;
40 |
41 | - (nonnull instancetype)init NS_UNAVAILABLE;
42 | + (nonnull instancetype)new NS_UNAVAILABLE;
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 |
28 | UIRequiredDeviceCapabilities
29 |
30 | armv7
31 |
32 | UISupportedInterfaceOrientations
33 |
34 | UIInterfaceOrientationPortrait
35 | UIInterfaceOrientationLandscapeLeft
36 | UIInterfaceOrientationLandscapeRight
37 |
38 | UISupportedInterfaceOrientations~ipad
39 |
40 | UIInterfaceOrientationPortrait
41 | UIInterfaceOrientationPortraitUpsideDown
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | UILaunchScreen
46 |
47 |
48 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDImageFramePool.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 | #import "SDImageCoder.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | /// A per-provider (provider means, AnimatedImage object) based frame pool, each player who use the same provider share the same frame buffer
16 | @interface SDImageFramePool : NSObject
17 |
18 | /// Register and return back a frame pool, also increase reference count
19 | + (instancetype)registerProvider:(id)provider;
20 | /// Unregister a frame pool, also decrease reference count, if zero dealloc the frame pool
21 | + (void)unregisterProvider:(id)provider;
22 |
23 | /// Prefetch the current frame, query using `frameAtIndex:` by caller to check whether finished.
24 | - (void)prefetchFrameAtIndex:(NSUInteger)index;
25 |
26 | /// Control the max buffer count for current frame pool, used for RAM/CPU balance, default unlimited
27 | @property (nonatomic, assign) NSUInteger maxBufferCount;
28 | /// Control the max concurrent fetch queue operation count, used for CPU balance, default 1
29 | @property (nonatomic, assign) NSUInteger maxConcurrentCount;
30 |
31 | // Frame Operations
32 | @property (nonatomic, readonly) NSUInteger currentFrameCount;
33 | - (nullable UIImage *)frameAtIndex:(NSUInteger)index;
34 | - (void)setFrame:(nullable UIImage *)frame atIndex:(NSUInteger)index;
35 | - (void)removeFrameAtIndex:(NSUInteger)index;
36 | - (void)removeAllFrames;
37 |
38 | NS_ASSUME_NONNULL_END
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheState.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIView+WebCacheState.h"
10 | #import "objc/runtime.h"
11 |
12 | typedef NSMutableDictionary SDStatesDictionary;
13 |
14 | @implementation SDWebImageLoadState
15 |
16 | @end
17 |
18 | @implementation UIView (WebCacheState)
19 |
20 | - (SDStatesDictionary *)sd_imageLoadStateDictionary {
21 | SDStatesDictionary *states = objc_getAssociatedObject(self, @selector(sd_imageLoadStateDictionary));
22 | if (!states) {
23 | states = [NSMutableDictionary dictionary];
24 | objc_setAssociatedObject(self, @selector(sd_imageLoadStateDictionary), states, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
25 | }
26 | return states;
27 | }
28 |
29 | - (SDWebImageLoadState *)sd_imageLoadStateForKey:(NSString *)key {
30 | if (!key) {
31 | key = NSStringFromClass(self.class);
32 | }
33 | @synchronized(self) {
34 | return [self.sd_imageLoadStateDictionary objectForKey:key];
35 | }
36 | }
37 |
38 | - (void)sd_setImageLoadState:(SDWebImageLoadState *)state forKey:(NSString *)key {
39 | if (!key) {
40 | key = NSStringFromClass(self.class);
41 | }
42 | @synchronized(self) {
43 | self.sd_imageLoadStateDictionary[key] = state;
44 | }
45 | }
46 |
47 | - (void)sd_removeImageLoadStateForKey:(NSString *)key {
48 | if (!key) {
49 | key = NSStringFromClass(self.class);
50 | }
51 | @synchronized(self) {
52 | self.sd_imageLoadStateDictionary[key] = nil;
53 | }
54 | }
55 |
56 | @end
57 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageOptionsProcessor.h"
10 |
11 | @interface SDWebImageOptionsResult ()
12 |
13 | @property (nonatomic, assign) SDWebImageOptions options;
14 | @property (nonatomic, copy, nullable) SDWebImageContext *context;
15 |
16 | @end
17 |
18 | @implementation SDWebImageOptionsResult
19 |
20 | - (instancetype)initWithOptions:(SDWebImageOptions)options context:(SDWebImageContext *)context {
21 | self = [super init];
22 | if (self) {
23 | self.options = options;
24 | self.context = context;
25 | }
26 | return self;
27 | }
28 |
29 | @end
30 |
31 | @interface SDWebImageOptionsProcessor ()
32 |
33 | @property (nonatomic, copy, nonnull) SDWebImageOptionsProcessorBlock block;
34 |
35 | @end
36 |
37 | @implementation SDWebImageOptionsProcessor
38 |
39 | - (instancetype)initWithBlock:(SDWebImageOptionsProcessorBlock)block {
40 | self = [super init];
41 | if (self) {
42 | self.block = block;
43 | }
44 | return self;
45 | }
46 |
47 | + (instancetype)optionsProcessorWithBlock:(SDWebImageOptionsProcessorBlock)block {
48 | SDWebImageOptionsProcessor *optionsProcessor = [[SDWebImageOptionsProcessor alloc] initWithBlock:block];
49 | return optionsProcessor;
50 | }
51 |
52 | - (SDWebImageOptionsResult *)processedResultForURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context {
53 | if (!self.block) {
54 | return nil;
55 | }
56 | return self.block(url, options, context);
57 | }
58 |
59 | @end
60 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "SDWebImageOperation.h"
11 |
12 | /**
13 | These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external.
14 | All the stored operations are weak, so it will be dealloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them.
15 | */
16 | @interface UIView (WebCacheOperation)
17 |
18 | /**
19 | * Get the image load operation for key
20 | *
21 | * @param key key for identifying the operations
22 | * @return the image load operation
23 | */
24 | - (nullable id)sd_imageLoadOperationForKey:(nullable NSString *)key;
25 |
26 | /**
27 | * Set the image load operation (storage in a UIView based weak map table)
28 | *
29 | * @param operation the operation
30 | * @param key key for storing the operation
31 | */
32 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
33 |
34 | /**
35 | * Cancel the operation for the current UIView and key
36 | *
37 | * @param key key for identifying the operations
38 | */
39 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
40 |
41 | /**
42 | * Just remove the operation corresponding to the current UIView and key without cancelling them
43 | *
44 | * @param key key for identifying the operations
45 | */
46 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import "NSData+ImageContentType.h"
14 |
15 | /**
16 | A subclass of `NSBitmapImageRep` to fix that GIF duration issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`.
17 | This also fix the GIF loop count issue, which will use the Netscape standard (See http://www6.uniovi.es/gifanim/gifabout.htm) to only place once when the `kCGImagePropertyGIFLoopCount` is nil. This is what modern browser's behavior.
18 | Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image.
19 | This also support APNG format using `SDImageAPNGCoder`. Which provide full alpha-channel support and the correct duration match the `kCGImagePropertyAPNGUnclampedDelayTime`.
20 | */
21 | @interface SDAnimatedImageRep : NSBitmapImageRep
22 |
23 | /// Current animated image format.
24 | /// @note This format is only valid when `animatedImageData` not nil
25 | @property (nonatomic, assign, readonly) SDImageFormat animatedImageFormat;
26 |
27 | /// This allows to retrive the compressed data like GIF using `sd_imageData` on parent `NSImage`, without re-encoding (waste CPU and RAM)
28 | /// @note This is typically nonnull when you create with `initWithData:`, even it's marked as weak, because ImageIO retain it
29 | @property (nonatomic, readonly, nullable, weak) NSData *animatedImageData;
30 |
31 | @end
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageDownloaderDecryptor.h"
10 |
11 | @interface SDWebImageDownloaderDecryptor ()
12 |
13 | @property (nonatomic, copy, nonnull) SDWebImageDownloaderDecryptorBlock block;
14 |
15 | @end
16 |
17 | @implementation SDWebImageDownloaderDecryptor
18 |
19 | - (instancetype)initWithBlock:(SDWebImageDownloaderDecryptorBlock)block {
20 | self = [super init];
21 | if (self) {
22 | self.block = block;
23 | }
24 | return self;
25 | }
26 |
27 | + (instancetype)decryptorWithBlock:(SDWebImageDownloaderDecryptorBlock)block {
28 | SDWebImageDownloaderDecryptor *decryptor = [[SDWebImageDownloaderDecryptor alloc] initWithBlock:block];
29 | return decryptor;
30 | }
31 |
32 | - (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response {
33 | if (!self.block) {
34 | return nil;
35 | }
36 | return self.block(data, response);
37 | }
38 |
39 | @end
40 |
41 | @implementation SDWebImageDownloaderDecryptor (Conveniences)
42 |
43 | + (SDWebImageDownloaderDecryptor *)base64Decryptor {
44 | static SDWebImageDownloaderDecryptor *decryptor;
45 | static dispatch_once_t onceToken;
46 | dispatch_once(&onceToken, ^{
47 | decryptor = [SDWebImageDownloaderDecryptor decryptorWithBlock:^NSData * _Nullable(NSData * _Nonnull data, NSURLResponse * _Nullable response) {
48 | NSData *modifiedData = [[NSData alloc] initWithBase64EncodedData:data options:NSDataBase64DecodingIgnoreUnknownCharacters];
49 | return modifiedData;
50 | }];
51 | });
52 | return decryptor;
53 | }
54 |
55 | @end
56 |
--------------------------------------------------------------------------------
/androidApp/src/main/java/com/debanshu/animax/android/MyApplicationTheme.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.android
2 |
3 | import androidx.compose.foundation.isSystemInDarkTheme
4 | import androidx.compose.foundation.shape.RoundedCornerShape
5 | import androidx.compose.material.MaterialTheme
6 | import androidx.compose.material.Shapes
7 | import androidx.compose.material.Typography
8 | import androidx.compose.material.darkColors
9 | import androidx.compose.material.lightColors
10 | import androidx.compose.runtime.Composable
11 | import androidx.compose.ui.graphics.Color
12 | import androidx.compose.ui.text.TextStyle
13 | import androidx.compose.ui.text.font.FontFamily
14 | import androidx.compose.ui.text.font.FontWeight
15 | import androidx.compose.ui.unit.dp
16 | import androidx.compose.ui.unit.sp
17 |
18 | @Composable
19 | fun MyApplicationTheme(
20 | darkTheme: Boolean = isSystemInDarkTheme(),
21 | content: @Composable () -> Unit
22 | ) {
23 | val colors = if (darkTheme) {
24 | darkColors(
25 | primary = Color(0xFFBB86FC),
26 | primaryVariant = Color(0xFF3700B3),
27 | secondary = Color(0xFF03DAC5)
28 | )
29 | } else {
30 | lightColors(
31 | primary = Color(0xFF6200EE),
32 | primaryVariant = Color(0xFF3700B3),
33 | secondary = Color(0xFF03DAC5)
34 | )
35 | }
36 | val typography = Typography(
37 | body1 = TextStyle(
38 | fontFamily = FontFamily.Default,
39 | fontWeight = FontWeight.Normal,
40 | fontSize = 16.sp
41 | )
42 | )
43 | val shapes = Shapes(
44 | small = RoundedCornerShape(4.dp),
45 | medium = RoundedCornerShape(4.dp),
46 | large = RoundedCornerShape(0.dp)
47 | )
48 |
49 | MaterialTheme(
50 | colors = colors,
51 | typography = typography,
52 | shapes = shapes,
53 | content = content
54 | )
55 | }
56 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/OnChange.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import Combine
3 |
4 | @available(iOS, deprecated: 14.0)
5 | @available(macOS, deprecated: 11.0)
6 | @available(tvOS, deprecated: 14.0)
7 | @available(watchOS, deprecated: 7.0)
8 | public extension Backport where Wrapped: View {
9 |
10 | /// Adds a modifier for this view that fires an action when a specific
11 | /// value changes.
12 | ///
13 | /// `onChange` is called on the main thread. Avoid performing long-running
14 | /// tasks on the main thread. If you need to perform a long-running task in
15 | /// response to `value` changing, you should dispatch to a background queue.
16 | ///
17 | /// The new value is passed into the closure.
18 | ///
19 | /// - Parameters:
20 | /// - value: The value to observe for changes
21 | /// - action: A closure to run when the value changes.
22 | /// - newValue: The new value that changed
23 | ///
24 | /// - Returns: A view that fires an action when the specified value changes.
25 | @ViewBuilder
26 | func onChange(of value: Value, perform action: @escaping (Value) -> Void) -> some View {
27 | content.modifier(ChangeModifier(value: value, action: action))
28 | }
29 |
30 | }
31 |
32 | private struct ChangeModifier: ViewModifier {
33 | let value: Value
34 | let action: (Value) -> Void
35 |
36 | @State var oldValue: Value?
37 |
38 | init(value: Value, action: @escaping (Value) -> Void) {
39 | self.value = value
40 | self.action = action
41 | _oldValue = .init(initialValue: value)
42 | }
43 |
44 | func body(content: Content) -> some View {
45 | content
46 | .onReceive(Just(value)) { newValue in
47 | guard newValue != oldValue else { return }
48 | action(newValue)
49 | oldValue = newValue
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDWeakProxy.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWeakProxy.h"
10 |
11 | @implementation SDWeakProxy
12 |
13 | - (instancetype)initWithTarget:(id)target {
14 | _target = target;
15 | return self;
16 | }
17 |
18 | + (instancetype)proxyWithTarget:(id)target {
19 | return [[SDWeakProxy alloc] initWithTarget:target];
20 | }
21 |
22 | - (id)forwardingTargetForSelector:(SEL)selector {
23 | return _target;
24 | }
25 |
26 | - (void)forwardInvocation:(NSInvocation *)invocation {
27 | void *null = NULL;
28 | [invocation setReturnValue:&null];
29 | }
30 |
31 | - (NSMethodSignature *)methodSignatureForSelector:(SEL)selector {
32 | return [NSObject instanceMethodSignatureForSelector:@selector(init)];
33 | }
34 |
35 | - (BOOL)respondsToSelector:(SEL)aSelector {
36 | return [_target respondsToSelector:aSelector];
37 | }
38 |
39 | - (BOOL)isEqual:(id)object {
40 | return [_target isEqual:object];
41 | }
42 |
43 | - (NSUInteger)hash {
44 | return [_target hash];
45 | }
46 |
47 | - (Class)superclass {
48 | return [_target superclass];
49 | }
50 |
51 | - (Class)class {
52 | return [_target class];
53 | }
54 |
55 | - (BOOL)isKindOfClass:(Class)aClass {
56 | return [_target isKindOfClass:aClass];
57 | }
58 |
59 | - (BOOL)isMemberOfClass:(Class)aClass {
60 | return [_target isMemberOfClass:aClass];
61 | }
62 |
63 | - (BOOL)conformsToProtocol:(Protocol *)aProtocol {
64 | return [_target conformsToProtocol:aProtocol];
65 | }
66 |
67 | - (BOOL)isProxy {
68 | return YES;
69 | }
70 |
71 | - (NSString *)description {
72 | return [_target description];
73 | }
74 |
75 | - (NSString *)debugDescription {
76 | return [_target debugDescription];
77 | }
78 |
79 | @end
80 |
--------------------------------------------------------------------------------
/androidApp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.application")
3 | kotlin("android")
4 | }
5 |
6 | android {
7 | namespace = "com.debanshu.animax.android"
8 | compileSdk = 34
9 | defaultConfig {
10 | applicationId = "com.debanshu.animax.android"
11 | minSdk = 21
12 | targetSdk = 34
13 | versionCode = 1
14 | versionName = "1.0"
15 | }
16 | buildFeatures {
17 | compose = true
18 | }
19 | composeOptions {
20 | kotlinCompilerExtensionVersion = "1.5.7"
21 | }
22 | packagingOptions {
23 | resources {
24 | excludes += "/META-INF/{AL2.0,LGPL2.1}"
25 | }
26 | }
27 | buildTypes {
28 | getByName("release") {
29 | isMinifyEnabled = false
30 | }
31 | }
32 |
33 | compileOptions {
34 | sourceCompatibility = JavaVersion.VERSION_17
35 | targetCompatibility = JavaVersion.VERSION_17
36 | }
37 | kotlinOptions {
38 | jvmTarget = "17"
39 | }
40 | }
41 |
42 | dependencies {
43 | implementation(project(":shared"))
44 | implementation("androidx.compose.ui:ui:1.6.0-beta03")
45 | implementation("androidx.compose.ui:ui-tooling:1.6.0-beta03")
46 | implementation("androidx.compose.ui:ui-tooling-preview:1.6.0-beta03")
47 | implementation("androidx.compose.foundation:foundation:1.6.0-beta03")
48 | implementation("androidx.compose.material:material:1.6.0-beta03")
49 | implementation("androidx.activity:activity-compose:1.9.0-alpha01")
50 |
51 | implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
52 | implementation("io.coil-kt:coil-compose:2.5.0")
53 | implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.2")
54 | implementation("androidx.navigation:navigation-compose:2.7.6")
55 |
56 | val koin = "3.5.3"
57 | implementation("io.insert-koin:koin-android:${koin}")
58 | implementation("io.insert-koin:koin-androidx-compose:${koin}")
59 | }
--------------------------------------------------------------------------------
/shared/src/commonMain/kotlin/com/debanshu/animax/data/repository/LocalDataRepository.kt:
--------------------------------------------------------------------------------
1 | package com.debanshu.animax.data.repository
2 |
3 | import app.cash.sqldelight.coroutines.asFlow
4 | import app.cash.sqldelight.coroutines.mapToList
5 | import com.debanshu.animax.AppDatabase
6 | import com.debanshu.animax.data.DatabaseDriverFactory
7 | import com.debanshu.animax.data.domain.DateTimeUtil
8 | import com.debanshu.animax.data.domain.LocalAnimeEntity
9 | import com.debanshu.animax.data.domain.toLocalAnimeEntity
10 | import com.debanshu.animax.utils.Dispatcher
11 | import kotlinx.coroutines.Dispatchers
12 | import kotlinx.coroutines.IO
13 | import kotlinx.coroutines.flow.Flow
14 | import kotlinx.coroutines.flow.asFlow
15 | import kotlinx.coroutines.flow.map
16 | import kotlinx.coroutines.withContext
17 | import org.koin.core.component.inject
18 |
19 | class LocalDataRepository(database: AppDatabase) {
20 | private val queries = database.animeQueries
21 | fun insertAnime(anime: LocalAnimeEntity) {
22 | queries.transaction {
23 | queries.insertAnime(
24 | anime.id,
25 | anime.title,
26 | anime.imageUrl,
27 | DateTimeUtil.toEpochMillis(anime.created)
28 | )
29 | }
30 | }
31 |
32 | fun getAnimeById(id: Long): LocalAnimeEntity? {
33 | return queries.getAnimeById(id).executeAsOneOrNull()?.toLocalAnimeEntity()
34 | }
35 |
36 | fun getAllAnime(): Flow> {
37 | return queries.getAllAnime()
38 | .asFlow()
39 | .mapToList(Dispatchers.IO).map { list ->
40 | list.map { it.toLocalAnimeEntity() }
41 | }
42 |
43 | }
44 |
45 | fun deleteAnimeById(id: Long) {
46 | queries.transaction {
47 | queries.deleteAnimeById(id)
48 | }
49 | }
50 |
51 | fun clearDatabase() {
52 | queries.transaction {
53 | queries.removeAllAnime()
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSBezierPath+SDRoundedCorners.h"
10 |
11 | #if SD_MAC
12 |
13 | @implementation NSBezierPath (SDRoundedCorners)
14 |
15 | + (instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius {
16 | NSBezierPath *path = [NSBezierPath bezierPath];
17 |
18 | CGFloat maxCorner = MIN(NSWidth(rect), NSHeight(rect)) / 2;
19 |
20 | CGFloat topLeftRadius = MIN(maxCorner, (corners & SDRectCornerTopLeft) ? cornerRadius : 0);
21 | CGFloat topRightRadius = MIN(maxCorner, (corners & SDRectCornerTopRight) ? cornerRadius : 0);
22 | CGFloat bottomLeftRadius = MIN(maxCorner, (corners & SDRectCornerBottomLeft) ? cornerRadius : 0);
23 | CGFloat bottomRightRadius = MIN(maxCorner, (corners & SDRectCornerBottomRight) ? cornerRadius : 0);
24 |
25 | NSPoint topLeft = NSMakePoint(NSMinX(rect), NSMaxY(rect));
26 | NSPoint topRight = NSMakePoint(NSMaxX(rect), NSMaxY(rect));
27 | NSPoint bottomLeft = NSMakePoint(NSMinX(rect), NSMinY(rect));
28 | NSPoint bottomRight = NSMakePoint(NSMaxX(rect), NSMinY(rect));
29 |
30 | [path moveToPoint:NSMakePoint(NSMidX(rect), NSMaxY(rect))];
31 | [path appendBezierPathWithArcFromPoint:topLeft toPoint:bottomLeft radius:topLeftRadius];
32 | [path appendBezierPathWithArcFromPoint:bottomLeft toPoint:bottomRight radius:bottomLeftRadius];
33 | [path appendBezierPathWithArcFromPoint:bottomRight toPoint:topRight radius:bottomRightRadius];
34 | [path appendBezierPathWithArcFromPoint:topRight toPoint:topLeft radius:topRightRadius];
35 | [path closePath];
36 |
37 | return path;
38 | }
39 |
40 | @end
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
--------------------------------------------------------------------------------
/iosApp/iosApp/Views/GridViewAnime.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import MultiPlatformLibrary
3 | import mokoMvvmFlowSwiftUI
4 |
5 | struct GridViewAnime: View {
6 | @EnvironmentObject var viewModel: AppViewModel
7 | @State var uiState: AnimeListState = AnimeListStateUninitialized()
8 |
9 | private let adaptaiveColumns = [
10 | GridItem(.adaptive(minimum: 170))
11 | ]
12 |
13 |
14 | var body: some View {
15 | let appUiState = viewModel.animeState
16 | NavigationView{
17 | VStack{
18 | switch(uiState){
19 | case is AnimeListStateLoading:
20 | LoadingView()
21 | case let successState as AnimeListStateSuccess:
22 | ScrollView{
23 | LazyVGrid(columns: adaptaiveColumns, spacing: 20){
24 | ForEach(successState.data,id: \.self){ anime in
25 | AnimeGridItem(onClick: {
26 | viewModel.createDummyData(id: anime.malId as! Int64,title:anime.titleEnglish! ,imageUrl:anime.images.jpg.imageUrl)
27 | }, anime:anime)
28 | }
29 | }
30 | }
31 | case is AnimeListStateError:
32 | ErrorView()
33 | default:
34 | ErrorView()
35 | }
36 | }
37 | .padding([.horizontal])
38 | .navigationTitle("Animax")
39 | }.task {
40 | appUiState.subscribe { state in
41 | self.uiState = state!
42 | }
43 | }
44 | }
45 | }
46 |
47 | struct LoadingView: View {
48 | var body: some View {
49 | ProgressView()
50 | .padding()
51 | }
52 | }
53 |
54 | struct ErrorView: View {
55 | var body: some View {
56 | Text("An error occurred. Please try again.")
57 | .foregroundColor(.red)
58 | .padding()
59 | }
60 | }
61 |
62 | struct GridViewAnime_Previews: PreviewProvider {
63 | static var previews: some View {
64 | GridViewAnime()
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import
11 | #import "SDImageIOAnimatedCoder.h"
12 |
13 | // AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation
14 | #define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
15 | #define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif")
16 | // HEIC Sequence (Animated Image)
17 | #define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics")
18 | // kSDUTTypeWebP seems not defined in public UTI framework, Apple use the hardcode string, we define them :)
19 | #define kSDUTTypeWebP ((__bridge CFStringRef)@"org.webmproject.webp")
20 |
21 | #define kSDUTTypeImage ((__bridge CFStringRef)@"public.image")
22 | #define kSDUTTypeJPEG ((__bridge CFStringRef)@"public.jpeg")
23 | #define kSDUTTypePNG ((__bridge CFStringRef)@"public.png")
24 | #define kSDUTTypeTIFF ((__bridge CFStringRef)@"public.tiff")
25 | #define kSDUTTypeSVG ((__bridge CFStringRef)@"public.svg-image")
26 | #define kSDUTTypeGIF ((__bridge CFStringRef)@"com.compuserve.gif")
27 | #define kSDUTTypePDF ((__bridge CFStringRef)@"com.adobe.pdf")
28 | #define kSDUTTypeBMP ((__bridge CFStringRef)@"com.microsoft.bmp")
29 | #define kSDUTTypeRAW ((__bridge CFStringRef)@"public.camera-raw-image")
30 |
31 | @interface SDImageIOAnimatedCoder ()
32 |
33 | + (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source;
34 | + (NSUInteger)imageLoopCountWithSource:(nonnull CGImageSourceRef)source;
35 | + (nullable UIImage *)createFrameAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize lazyDecode:(BOOL)lazyDecode animatedImage:(BOOL)animatedImage;
36 | + (BOOL)canEncodeToFormat:(SDImageFormat)format;
37 | + (BOOL)canDecodeFromFormat:(SDImageFormat)format;
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/SDWebImageSwiftUI.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) DreamPiggy
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | import Foundation
10 | import SwiftUI
11 | @_exported import SDWebImage // Automatically import SDWebImage
12 |
13 | #if os(macOS)
14 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
15 | public typealias PlatformImage = NSImage
16 | #else
17 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
18 | public typealias PlatformImage = UIImage
19 | #endif
20 |
21 | #if os(macOS)
22 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
23 | public typealias PlatformView = NSView
24 | #endif
25 | #if os(iOS) || os(tvOS)
26 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
27 | public typealias PlatformView = UIView
28 | #endif
29 | #if os(watchOS)
30 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
31 | public typealias PlatformView = WKInterfaceObject
32 | #endif
33 |
34 | #if os(macOS)
35 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
36 | public typealias PlatformViewRepresentable = NSViewRepresentable
37 | #endif
38 | #if os(iOS) || os(tvOS)
39 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
40 | public typealias PlatformViewRepresentable = UIViewRepresentable
41 | #endif
42 | #if os(watchOS)
43 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
44 | public typealias PlatformViewRepresentable = WKInterfaceObjectRepresentable
45 | #endif
46 |
47 | #if os(macOS)
48 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
49 | extension NSViewRepresentable {
50 | typealias PlatformViewType = NSViewType
51 | }
52 | #endif
53 | #if os(iOS) || os(tvOS)
54 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
55 | extension UIViewRepresentable {
56 | typealias PlatformViewType = UIViewType
57 | }
58 | #endif
59 | #if os(watchOS)
60 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
61 | extension WKInterfaceObjectRepresentable {
62 | typealias PlatformViewType = WKInterfaceObjectType
63 | }
64 | #endif
65 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Components/AnimeGridItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnimeGridItem.swift
3 | // iosApp
4 | //
5 | // Created by Debanshu Datta on 01/02/23.
6 | // Copyright © 2023 orgName. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 | import MultiPlatformLibrary
11 | import SDWebImageSwiftUI
12 |
13 | struct AnimeGridItem: View {
14 | let anime: Anime
15 | let onClick:()->Void
16 | init(onClick: @escaping ()->Void, anime:Anime){
17 | self.onClick = onClick
18 | self.anime = anime
19 | }
20 | var body: some View {
21 | VStack(alignment: .leading) {
22 | AnimatedImage(url: URL(string: anime.images.jpg.imageUrl))
23 | .resizable()
24 | .scaledToFill()
25 | .frame(width:170,height: 220)
26 | .cornerRadius(10)
27 | HStack{
28 | Text(anime.titleEnglish!)
29 | .font(.system(size: 12, weight: .semibold))
30 | .lineLimit(2)
31 | Button(action: {
32 | self.onClick()
33 | }) {
34 | Image(systemName: true ? "heart.fill" : "heart")
35 | }
36 | }
37 |
38 | }
39 |
40 | }
41 |
42 | }
43 |
44 | struct AnimeGridLocalItem: View {
45 | let anime: LocalAnimeEntity
46 | let onClick:()->Void
47 | init(onClick: @escaping ()->Void, anime:LocalAnimeEntity){
48 | self.onClick = onClick
49 | self.anime = anime
50 | }
51 | var body: some View {
52 | VStack(alignment: .leading) {
53 | AnimatedImage(url: URL(string: anime.imageUrl))
54 | .resizable()
55 | .scaledToFill()
56 | .frame(width:170,height: 220)
57 | .cornerRadius(10)
58 | HStack{
59 | Text(anime.title)
60 | .font(.system(size: 12, weight: .semibold))
61 | .lineLimit(2)
62 | Button(action: {
63 | self.onClick()
64 | }) {
65 | Image(systemName: true ? "heart.fill" : "heart")
66 | }
67 | }
68 |
69 | }
70 |
71 | }
72 |
73 | }
74 |
75 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Backports/Backport.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import ObjectiveC
3 |
4 | /// Provides a convenient method for backporting API,
5 | /// including types, functions, properties, property wrappers and more.
6 | ///
7 | /// To backport a SwiftUI Label for example, you could apply the
8 | /// following extension:
9 | ///
10 | /// extension Backport where Content == Any {
11 | /// public struct Label { }
12 | /// }
13 | ///
14 | /// Now if we want to provide further extensions to our backport type,
15 | /// we need to ensure we retain the `Content == Any` generic requirement:
16 | ///
17 | /// extension Backport.Label where Content == Any, Title == Text, Icon == Image {
18 | /// public init(_ title: S, systemName: String) { }
19 | /// }
20 | ///
21 | /// In addition to types, we can also provide backports for properties
22 | /// and methods:
23 | ///
24 | /// extension Backport.Label where Content: View {
25 | /// func onChange(of value: Value, perform action: (Value) -> Void) -> some View {
26 | /// // `content` provides access to the extended type
27 | /// content.modifier(OnChangeModifier(value, action))
28 | /// }
29 | /// }
30 | ///
31 | public struct Backport {
32 |
33 | /// The underlying content this backport represents.
34 | public let content: Wrapped
35 |
36 | /// Initializes a new Backport for the specified content.
37 | /// - Parameter content: The content (type) that's being backported
38 | public init(_ content: Wrapped) {
39 | self.content = content
40 | }
41 |
42 | }
43 |
44 | public extension View {
45 | /// Wraps a SwiftUI `View` that can be extended to provide backport functionality.
46 | var backport: Backport { .init(self) }
47 | }
48 |
49 | public extension NSObjectProtocol {
50 | /// Wraps an `NSObject` that can be extended to provide backport functionality.
51 | var backport: Backport { .init(self) }
52 | }
53 |
54 | public extension AnyTransition {
55 | /// Wraps an `AnyTransition` that can be extended to provide backport functionality.
56 | static var backport: Backport{
57 | Backport(.identity)
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageCachesManagerOperation.h"
10 | #import "SDInternalMacros.h"
11 |
12 | @implementation SDImageCachesManagerOperation {
13 | SD_LOCK_DECLARE(_pendingCountLock);
14 | }
15 |
16 | @synthesize executing = _executing;
17 | @synthesize finished = _finished;
18 | @synthesize cancelled = _cancelled;
19 | @synthesize pendingCount = _pendingCount;
20 |
21 | - (instancetype)init {
22 | if (self = [super init]) {
23 | SD_LOCK_INIT(_pendingCountLock);
24 | _pendingCount = 0;
25 | }
26 | return self;
27 | }
28 |
29 | - (void)beginWithTotalCount:(NSUInteger)totalCount {
30 | self.executing = YES;
31 | self.finished = NO;
32 | _pendingCount = totalCount;
33 | }
34 |
35 | - (NSUInteger)pendingCount {
36 | SD_LOCK(_pendingCountLock);
37 | NSUInteger pendingCount = _pendingCount;
38 | SD_UNLOCK(_pendingCountLock);
39 | return pendingCount;
40 | }
41 |
42 | - (void)completeOne {
43 | SD_LOCK(_pendingCountLock);
44 | _pendingCount = _pendingCount > 0 ? _pendingCount - 1 : 0;
45 | SD_UNLOCK(_pendingCountLock);
46 | }
47 |
48 | - (void)cancel {
49 | self.cancelled = YES;
50 | [self reset];
51 | }
52 |
53 | - (void)done {
54 | self.finished = YES;
55 | self.executing = NO;
56 | [self reset];
57 | }
58 |
59 | - (void)reset {
60 | SD_LOCK(_pendingCountLock);
61 | _pendingCount = 0;
62 | SD_UNLOCK(_pendingCountLock);
63 | }
64 |
65 | - (void)setFinished:(BOOL)finished {
66 | [self willChangeValueForKey:@"isFinished"];
67 | _finished = finished;
68 | [self didChangeValueForKey:@"isFinished"];
69 | }
70 |
71 | - (void)setExecuting:(BOOL)executing {
72 | [self willChangeValueForKey:@"isExecuting"];
73 | _executing = executing;
74 | [self didChangeValueForKey:@"isExecuting"];
75 | }
76 |
77 | - (void)setCancelled:(BOOL)cancelled {
78 | [self willChangeValueForKey:@"isCancelled"];
79 | _cancelled = cancelled;
80 | [self didChangeValueForKey:@"isCancelled"];
81 | }
82 |
83 | @end
84 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | /**
12 | UIImage category about force decode feature (avoid Image/IO's lazy decoding during rendering behavior).
13 | */
14 | @interface UIImage (ForceDecode)
15 |
16 | /**
17 | A bool value indicating whether the image has already been decoded. This can help to avoid extra force decode.
18 | Force decode is used for 2 cases:
19 | -- 1. for ImageIO created image (via `CGImageCreateWithImageSource` SPI), it's lazy and we trigger the decode before rendering
20 | -- 2. for non-ImageIO created image (via `CGImageCreate` API), we can ensure it's alignment is suitable to render on screen without copy by CoreAnimation
21 | @note For coder plugin developer, always use the SDImageCoderHelper's `colorSpaceGetDeviceRGB`/`preferredPixelFormat` to create CGImage.
22 | @note For more information why force decode, see: https://github.com/path/FastImageCache#byte-alignment
23 | @note From v5.17.0, the default value is always NO. Use `SDImageForceDecodePolicy` to control complicated policy.
24 | */
25 | @property (nonatomic, assign) BOOL sd_isDecoded;
26 |
27 | /**
28 | Decode the provided image. This is useful if you want to force decode the image before rendering to improve performance.
29 |
30 | @param image The image to be decoded
31 | @return The decoded image
32 | */
33 | + (nullable UIImage *)sd_decodedImageWithImage:(nullable UIImage *)image;
34 |
35 | /**
36 | Decode and scale down the provided image
37 |
38 | @param image The image to be decoded
39 | @return The decoded and scaled down image
40 | */
41 | + (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
42 |
43 | /**
44 | Decode and scale down the provided image with limit bytes
45 |
46 | @param image The image to be decoded
47 | @param bytes The limit bytes size. Provide 0 to use the build-in limit.
48 | @return The decoded and scaled down image
49 | */
50 | + (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image limitBytes:(NSUInteger)bytes;
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIView+WebCacheState.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | /**
13 | A loading state to manage View Category which contains multiple states. Like UIImgeView.image && UIImageView.highlightedImage
14 | @code
15 | SDWebImageLoadState *loadState = [self sd_imageLoadStateForKey:@keypath(self, highlitedImage)];
16 | NSProgress *highlitedImageProgress = loadState.progress;
17 | @endcode
18 | */
19 | @interface SDWebImageLoadState : NSObject
20 |
21 | /**
22 | Image loading URL
23 | */
24 | @property (nonatomic, strong, nullable) NSURL *url;
25 | /**
26 | Image loading progress. The unit count is the received size and excepted size of download.
27 | */
28 | @property (nonatomic, strong, nullable) NSProgress *progress;
29 |
30 | @end
31 |
32 | /**
33 | These methods are used for WebCache view which have multiple states for image loading, for example, `UIButton` or `UIImageView.highlightedImage`
34 | It maitain the state container for per-operation, make it possible for control and check each image loading operation's state.
35 | @note For developer who want to add SDWebImage View Category support for their own stateful class, learn more on Wiki.
36 | */
37 | @interface UIView (WebCacheState)
38 |
39 | /**
40 | Get the image loading state container for specify operation key
41 |
42 | @param key key for identifying the operations
43 | @return The image loading state container
44 | */
45 | - (nullable SDWebImageLoadState *)sd_imageLoadStateForKey:(nullable NSString *)key;
46 |
47 | /**
48 | Set the image loading state container for specify operation key
49 |
50 | @param state The image loading state container
51 | @param key key for identifying the operations
52 | */
53 | - (void)sd_setImageLoadState:(nullable SDWebImageLoadState *)state forKey:(nullable NSString *)key;
54 |
55 | /**
56 | Rmove the image loading state container for specify operation key
57 |
58 | @param key key for identifying the operations
59 | */
60 | - (void)sd_removeImageLoadStateForKey:(nullable NSString *)key;
61 |
62 | @end
63 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImageSwiftUI/SDWebImageSwiftUI/Classes/Image.swift:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) DreamPiggy
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | import Foundation
10 | import SwiftUI
11 |
12 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
13 | extension Image {
14 | @inlinable init(platformImage: PlatformImage) {
15 | #if os(macOS)
16 | self.init(nsImage: platformImage)
17 | #else
18 | self.init(uiImage: platformImage)
19 | #endif
20 | }
21 | }
22 |
23 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
24 | extension PlatformImage {
25 | static var empty = PlatformImage()
26 | }
27 |
28 | #if os(iOS) || os(tvOS) || os(watchOS)
29 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
30 | extension PlatformImage.Orientation {
31 | @inlinable var toSwiftUI: Image.Orientation {
32 | switch self {
33 | case .up:
34 | return .up
35 | case .upMirrored:
36 | return .upMirrored
37 | case .down:
38 | return .down
39 | case .downMirrored:
40 | return .downMirrored
41 | case .left:
42 | return .left
43 | case .leftMirrored:
44 | return .leftMirrored
45 | case .right:
46 | return .right
47 | case .rightMirrored:
48 | return .rightMirrored
49 | @unknown default:
50 | return .up
51 | }
52 | }
53 | }
54 |
55 | @available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
56 | extension Image.Orientation {
57 | @inlinable var toPlatform: PlatformImage.Orientation {
58 | switch self {
59 | case .up:
60 | return .up
61 | case .upMirrored:
62 | return .upMirrored
63 | case .down:
64 | return .down
65 | case .downMirrored:
66 | return .downMirrored
67 | case .left:
68 | return .left
69 | case .leftMirrored:
70 | return .leftMirrored
71 | case .right:
72 | return .right
73 | case .rightMirrored:
74 | return .rightMirrored
75 | }
76 | }
77 | }
78 | #endif
79 |
--------------------------------------------------------------------------------
/shared/shared.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |spec|
2 | spec.name = 'shared'
3 | spec.version = '1.0'
4 | spec.homepage = 'Link to the Shared Module homepage'
5 | spec.source = { :http=> ''}
6 | spec.authors = ''
7 | spec.license = ''
8 | spec.summary = 'Some description for the Shared Module'
9 | spec.vendored_frameworks = 'build/cocoapods/framework/MultiPlatformLibrary.framework'
10 | spec.libraries = 'c++'
11 | spec.ios.deployment_target = '14.1'
12 |
13 |
14 | if !Dir.exist?('build/cocoapods/framework/MultiPlatformLibrary.framework') || Dir.empty?('build/cocoapods/framework/MultiPlatformLibrary.framework')
15 | raise "
16 |
17 | Kotlin framework 'MultiPlatformLibrary' doesn't exist yet, so a proper Xcode project can't be generated.
18 | 'pod install' should be executed after running ':generateDummyFramework' Gradle task:
19 |
20 | ./gradlew :shared:generateDummyFramework
21 |
22 | Alternatively, proper pod installation is performed during Gradle sync in the IDE (if Podfile location is set)"
23 | end
24 |
25 | spec.pod_target_xcconfig = {
26 | 'KOTLIN_PROJECT_PATH' => ':shared',
27 | 'PRODUCT_MODULE_NAME' => 'MultiPlatformLibrary',
28 | }
29 |
30 | spec.script_phases = [
31 | {
32 | :name => 'Build shared',
33 | :execution_position => :before_compile,
34 | :shell_path => '/bin/sh',
35 | :script => <<-SCRIPT
36 | if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
37 | echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
38 | exit 0
39 | fi
40 | set -ev
41 | REPO_ROOT="$PODS_TARGET_SRCROOT"
42 | "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
43 | -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
44 | -Pkotlin.native.cocoapods.archs="$ARCHS" \
45 | -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
46 | SCRIPT
47 | }
48 | ]
49 |
50 | end
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageDownloaderConfig.h"
10 | #import "SDWebImageDownloaderOperation.h"
11 |
12 | static SDWebImageDownloaderConfig * _defaultDownloaderConfig;
13 |
14 | @implementation SDWebImageDownloaderConfig
15 |
16 | + (SDWebImageDownloaderConfig *)defaultDownloaderConfig {
17 | static dispatch_once_t onceToken;
18 | dispatch_once(&onceToken, ^{
19 | _defaultDownloaderConfig = [SDWebImageDownloaderConfig new];
20 | });
21 | return _defaultDownloaderConfig;
22 | }
23 |
24 | - (instancetype)init {
25 | self = [super init];
26 | if (self) {
27 | _maxConcurrentDownloads = 6;
28 | _downloadTimeout = 15.0;
29 | _executionOrder = SDWebImageDownloaderFIFOExecutionOrder;
30 | _acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)];
31 | }
32 | return self;
33 | }
34 |
35 | - (id)copyWithZone:(NSZone *)zone {
36 | SDWebImageDownloaderConfig *config = [[[self class] allocWithZone:zone] init];
37 | config.maxConcurrentDownloads = self.maxConcurrentDownloads;
38 | config.downloadTimeout = self.downloadTimeout;
39 | config.minimumProgressInterval = self.minimumProgressInterval;
40 | config.sessionConfiguration = [self.sessionConfiguration copyWithZone:zone];
41 | config.operationClass = self.operationClass;
42 | config.executionOrder = self.executionOrder;
43 | config.urlCredential = self.urlCredential;
44 | config.username = self.username;
45 | config.password = self.password;
46 | config.acceptableStatusCodes = self.acceptableStatusCodes;
47 | config.acceptableContentTypes = self.acceptableContentTypes;
48 |
49 | return config;
50 | }
51 |
52 | - (void)setOperationClass:(Class)operationClass {
53 | if (operationClass) {
54 | NSAssert([operationClass isSubclassOfClass:[NSOperation class]] && [operationClass conformsToProtocol:@protocol(SDWebImageDownloaderOperation)], @"Custom downloader operation class must subclass NSOperation and conform to `SDWebImageDownloaderOperation` protocol");
55 | }
56 | _operationClass = operationClass;
57 | }
58 |
59 |
60 | @end
61 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | typedef NSData * _Nullable (^SDWebImageDownloaderDecryptorBlock)(NSData * _Nonnull data, NSURLResponse * _Nullable response);
13 |
14 | /**
15 | This is the protocol for downloader decryptor. Which decrypt the original encrypted data before decoding. Note progressive decoding is not compatible for decryptor.
16 | We can use a block to specify the downloader decryptor. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options.
17 | */
18 | @protocol SDWebImageDownloaderDecryptor
19 |
20 | /// Decrypt the original download data and return a new data. You can use this to decrypt the data using your preferred algorithm.
21 | /// @param data The original download data
22 | /// @param response The URL response for data. If you modify the original URL response via response modifier, the modified version will be here. This arg is nullable.
23 | /// @note If nil is returned, the image download will be marked as failed with error `SDWebImageErrorBadImageData`
24 | - (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response;
25 |
26 | @end
27 |
28 | /**
29 | A downloader response modifier class with block.
30 | */
31 | @interface SDWebImageDownloaderDecryptor : NSObject
32 |
33 | /// Create the data decryptor with block
34 | /// @param block A block to control decrypt logic
35 | - (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block;
36 |
37 | /// Create the data decryptor with block
38 | /// @param block A block to control decrypt logic
39 | + (nonnull instancetype)decryptorWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block;
40 |
41 | @end
42 |
43 | /// Convenience way to create decryptor for common data encryption.
44 | @interface SDWebImageDownloaderDecryptor (Conveniences)
45 |
46 | /// Base64 Encoded image data decryptor
47 | @property (class, readonly, nonnull) SDWebImageDownloaderDecryptor *base64Decryptor;
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/iosApp/iosApp/Views/LocalGridView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LocalGridView.swift
3 | // iosApp
4 | //
5 | // Created by Debanshu Datta on 18/12/23.
6 | // Copyright © 2023 orgName. All rights reserved.
7 | //
8 |
9 | import SwiftUI
10 | import MultiPlatformLibrary
11 | import mokoMvvmFlowSwiftUI
12 |
13 | struct LocalGridView: View {
14 | @EnvironmentObject var viewModel: AppViewModel
15 | @State var uiState: AnimeLocalState = AnimeLocalStateUninitialized()
16 |
17 | var body: some View {
18 | let appUiState = viewModel.animeLocalState
19 | NavigationView{
20 | VStack{
21 | switch(uiState){
22 | case is AnimeLocalStateLoading:
23 | LoadingView()
24 | case let successState as AnimeLocalStateSuccess:
25 | SuccessView(data: successState.data) { id in
26 | viewModel.deleteAnimeById(id: id)
27 | }
28 | case is AnimeLocalStateError:
29 | ErrorView()
30 | default:
31 | ErrorView()
32 | }
33 | }
34 | .padding([.horizontal])
35 | .navigationTitle("Animax")
36 | }.task {
37 | appUiState.subscribe { state in
38 | self.uiState = state!
39 | }
40 | }
41 | }
42 | }
43 |
44 | struct SuccessView: View {
45 | let data: SkieSwiftFlow<[LocalAnimeEntity]>
46 | let deleteAnimeById: (Int64) -> Void
47 |
48 | private let adaptaiveColumns = [
49 | GridItem(.adaptive(minimum: 170))
50 | ]
51 |
52 | @State
53 | private var items: [LocalAnimeEntity] = []
54 |
55 | var body: some View {
56 | ScrollView {
57 | LazyVGrid(columns: adaptaiveColumns, spacing: 20) {
58 | ForEach(items, id: \.id) { anime in
59 | AnimeGridLocalItem(
60 | onClick: { deleteAnimeById(anime.id as! Int64) },
61 | anime:anime
62 | )
63 | }
64 | }
65 | }
66 | .task {
67 | // Reset items as this is called each time this view appears and we don't want duplicates
68 | items = []
69 | for await item in data {
70 | items = item
71 | }
72 | }
73 | }
74 | }
75 |
76 |
77 | #Preview {
78 | LocalGridView()
79 | }
80 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageCoder.h"
11 |
12 | /**
13 | Global object holding the array of coders, so that we avoid passing them from object to object.
14 | Uses a priority queue behind scenes, which means the latest added coders have the highest priority.
15 | This is done so when encoding/decoding something, we go through the list and ask each coder if they can handle the current data.
16 | That way, users can add their custom coders while preserving our existing prebuilt ones
17 |
18 | Note: the `coders` getter will return the coders in their reversed order
19 | Example:
20 | - by default we internally set coders = `IOCoder`, `GIFCoder`, `APNGCoder`
21 | - calling `coders` will return `@[IOCoder, GIFCoder, APNGCoder]`
22 | - call `[addCoder:[MyCrazyCoder new]]`
23 | - calling `coders` now returns `@[IOCoder, GIFCoder, APNGCoder, MyCrazyCoder]`
24 |
25 | Coders
26 | ------
27 | A coder must conform to the `SDImageCoder` protocol or even to `SDProgressiveImageCoder` if it supports progressive decoding
28 | Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat`
29 | Those methods are called on each coder in the array (using the priority order) until one of them returns YES.
30 | That means that coder can decode that data / encode to that format
31 | */
32 | @interface SDImageCodersManager : NSObject
33 |
34 | /**
35 | Returns the global shared coders manager instance.
36 | */
37 | @property (nonatomic, class, readonly, nonnull) SDImageCodersManager *sharedManager;
38 |
39 | /**
40 | All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority
41 | */
42 | @property (nonatomic, copy, nullable) NSArray> *coders;
43 |
44 | /**
45 | Add a new coder to the end of coders array. Which has the highest priority.
46 |
47 | @param coder coder
48 | */
49 | - (void)addCoder:(nonnull id)coder;
50 |
51 | /**
52 | Remove a coder in the coders array.
53 |
54 | @param coder coder
55 | */
56 | - (void)removeCoder:(nonnull id)coder;
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | /**
14 | You can use switch case like normal enum. It's also recommended to add a default case. You should not assume anything about the raw value.
15 | For custom coder plugin, it can also extern the enum for supported format. See `SDImageCoder` for more detailed information.
16 | */
17 | typedef NSInteger SDImageFormat NS_TYPED_EXTENSIBLE_ENUM;
18 | static const SDImageFormat SDImageFormatUndefined = -1;
19 | static const SDImageFormat SDImageFormatJPEG = 0;
20 | static const SDImageFormat SDImageFormatPNG = 1;
21 | static const SDImageFormat SDImageFormatGIF = 2;
22 | static const SDImageFormat SDImageFormatTIFF = 3;
23 | static const SDImageFormat SDImageFormatWebP = 4;
24 | static const SDImageFormat SDImageFormatHEIC = 5;
25 | static const SDImageFormat SDImageFormatHEIF = 6;
26 | static const SDImageFormat SDImageFormatPDF = 7;
27 | static const SDImageFormat SDImageFormatSVG = 8;
28 | static const SDImageFormat SDImageFormatBMP = 9;
29 | static const SDImageFormat SDImageFormatRAW = 10;
30 |
31 | /**
32 | NSData category about the image content type and UTI.
33 | */
34 | @interface NSData (ImageContentType)
35 |
36 | /**
37 | * Return image format
38 | *
39 | * @param data the input image data
40 | *
41 | * @return the image format as `SDImageFormat` (enum)
42 | */
43 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;
44 |
45 | /**
46 | * Convert SDImageFormat to UTType
47 | *
48 | * @param format Format as SDImageFormat
49 | * @return The UTType as CFStringRef
50 | * @note For unknown format, `kSDUTTypeImage` abstract type will return
51 | */
52 | + (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format CF_RETURNS_NOT_RETAINED NS_SWIFT_NAME(sd_UTType(from:));
53 |
54 | /**
55 | * Convert UTType to SDImageFormat
56 | *
57 | * @param uttype The UTType as CFStringRef
58 | * @return The Format as SDImageFormat
59 | * @note For unknown type, `SDImageFormatUndefined` will return
60 | */
61 | + (SDImageFormat)sd_imageFormatFromUTType:(nonnull CFStringRef)uttype;
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageDownloaderRequestModifier.h"
10 |
11 | @interface SDWebImageDownloaderRequestModifier ()
12 |
13 | @property (nonatomic, copy, nonnull) SDWebImageDownloaderRequestModifierBlock block;
14 |
15 | @end
16 |
17 | @implementation SDWebImageDownloaderRequestModifier
18 |
19 | - (instancetype)initWithBlock:(SDWebImageDownloaderRequestModifierBlock)block {
20 | self = [super init];
21 | if (self) {
22 | self.block = block;
23 | }
24 | return self;
25 | }
26 |
27 | + (instancetype)requestModifierWithBlock:(SDWebImageDownloaderRequestModifierBlock)block {
28 | SDWebImageDownloaderRequestModifier *requestModifier = [[SDWebImageDownloaderRequestModifier alloc] initWithBlock:block];
29 | return requestModifier;
30 | }
31 |
32 | - (NSURLRequest *)modifiedRequestWithRequest:(NSURLRequest *)request {
33 | if (!self.block) {
34 | return nil;
35 | }
36 | return self.block(request);
37 | }
38 |
39 | @end
40 |
41 | @implementation SDWebImageDownloaderRequestModifier (Conveniences)
42 |
43 | - (instancetype)initWithMethod:(NSString *)method {
44 | return [self initWithMethod:method headers:nil body:nil];
45 | }
46 |
47 | - (instancetype)initWithHeaders:(NSDictionary *)headers {
48 | return [self initWithMethod:nil headers:headers body:nil];
49 | }
50 |
51 | - (instancetype)initWithBody:(NSData *)body {
52 | return [self initWithMethod:nil headers:nil body:body];
53 | }
54 |
55 | - (instancetype)initWithMethod:(NSString *)method headers:(NSDictionary *)headers body:(NSData *)body {
56 | method = method ? [method copy] : @"GET";
57 | headers = [headers copy];
58 | body = [body copy];
59 | return [self initWithBlock:^NSURLRequest * _Nullable(NSURLRequest * _Nonnull request) {
60 | NSMutableURLRequest *mutableRequest = [request mutableCopy];
61 | mutableRequest.HTTPMethod = method;
62 | mutableRequest.HTTPBody = body;
63 | for (NSString *header in headers) {
64 | NSString *value = headers[header];
65 | [mutableRequest setValue:value forHTTPHeaderField:header];
66 | }
67 | return [mutableRequest copy];
68 | }];
69 | }
70 |
71 | @end
72 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDAsyncBlockOperation.h"
10 | #import "SDInternalMacros.h"
11 |
12 | @interface SDAsyncBlockOperation ()
13 |
14 | @property (nonatomic, copy, nonnull) SDAsyncBlock executionBlock;
15 |
16 | @end
17 |
18 | @implementation SDAsyncBlockOperation
19 |
20 | @synthesize executing = _executing;
21 | @synthesize finished = _finished;
22 |
23 | - (nonnull instancetype)initWithBlock:(nonnull SDAsyncBlock)block {
24 | self = [super init];
25 | if (self) {
26 | self.executionBlock = block;
27 | }
28 | return self;
29 | }
30 |
31 | + (nonnull instancetype)blockOperationWithBlock:(nonnull SDAsyncBlock)block {
32 | SDAsyncBlockOperation *operation = [[SDAsyncBlockOperation alloc] initWithBlock:block];
33 | return operation;
34 | }
35 |
36 | - (void)start {
37 | @synchronized (self) {
38 | if (self.isCancelled) {
39 | self.finished = YES;
40 | return;
41 | }
42 | self.finished = NO;
43 | self.executing = YES;
44 | }
45 | SDAsyncBlock executionBlock = self.executionBlock;
46 | if (executionBlock) {
47 | @weakify(self);
48 | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
49 | @strongify(self);
50 | if (!self) return;
51 | executionBlock(self);
52 | });
53 | }
54 | }
55 |
56 | - (void)cancel {
57 | @synchronized (self) {
58 | [super cancel];
59 | if (self.isExecuting) {
60 | self.executing = NO;
61 | self.finished = YES;
62 | }
63 | }
64 | }
65 |
66 |
67 | - (void)complete {
68 | @synchronized (self) {
69 | if (self.isExecuting) {
70 | self.finished = YES;
71 | self.executing = NO;
72 | }
73 | }
74 | }
75 |
76 | - (void)setFinished:(BOOL)finished {
77 | [self willChangeValueForKey:@"isFinished"];
78 | _finished = finished;
79 | [self didChangeValueForKey:@"isFinished"];
80 | }
81 |
82 | - (void)setExecuting:(BOOL)executing {
83 | [self willChangeValueForKey:@"isExecuting"];
84 | _executing = executing;
85 | [self didChangeValueForKey:@"isExecuting"];
86 | }
87 |
88 | - (BOOL)isAsynchronous {
89 | return YES;
90 | }
91 |
92 | @end
93 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## SDWebImage
5 |
6 | Copyright (c) 2009-2020 Olivier Poitrey rs@dailymotion.com
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is furnished
13 | to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in all
16 | copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 |
27 |
28 | ## SDWebImageSwiftUI
29 |
30 | Copyright (c) 2019 lizhuoli1126@126.com
31 |
32 | Permission is hereby granted, free of charge, to any person obtaining a copy
33 | of this software and associated documentation files (the "Software"), to deal
34 | in the Software without restriction, including without limitation the rights
35 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
36 | copies of the Software, and to permit persons to whom the Software is
37 | furnished to do so, subject to the following conditions:
38 |
39 | The above copyright notice and this permission notice shall be included in
40 | all copies or substantial portions of the Software.
41 |
42 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
43 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
44 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
46 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
47 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
48 | THE SOFTWARE.
49 |
50 | Generated by CocoaPods - https://cocoapods.org
51 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDImageCoder.h"
11 |
12 | /**
13 | This is the abstract class for all animated coder, which use the Image/IO API. You can not use this directly as real coders. A exception will be raised if you use this class.
14 | All of the properties need the subclass to implement and works as expected.
15 | For Image/IO, See Apple's documentation: https://developer.apple.com/documentation/imageio
16 | */
17 | @interface SDImageIOAnimatedCoder : NSObject
18 |
19 | #pragma mark - Subclass Override
20 | /**
21 | The supported animated image format. Such as `SDImageFormatGIF`.
22 | @note Subclass override.
23 | */
24 | @property (class, readonly) SDImageFormat imageFormat;
25 | /**
26 | The supported image format UTI Type. Such as `kSDUTTypeGIF`.
27 | This can be used for cases when we can not detect `SDImageFormat. Such as progressive decoding's hint format `kCGImageSourceTypeIdentifierHint`.
28 | @note Subclass override.
29 | */
30 | @property (class, readonly, nonnull) NSString *imageUTType;
31 | /**
32 | The image container property key used in Image/IO API. Such as `kCGImagePropertyGIFDictionary`.
33 | @note Subclass override.
34 | */
35 | @property (class, readonly, nonnull) NSString *dictionaryProperty;
36 | /**
37 | The image unclamped delay time property key used in Image/IO API. Such as `kCGImagePropertyGIFUnclampedDelayTime`
38 | @note Subclass override.
39 | */
40 | @property (class, readonly, nonnull) NSString *unclampedDelayTimeProperty;
41 | /**
42 | The image delay time property key used in Image/IO API. Such as `kCGImagePropertyGIFDelayTime`.
43 | @note Subclass override.
44 | */
45 | @property (class, readonly, nonnull) NSString *delayTimeProperty;
46 | /**
47 | The image loop count property key used in Image/IO API. Such as `kCGImagePropertyGIFLoopCount`.
48 | @note Subclass override.
49 | */
50 | @property (class, readonly, nonnull) NSString *loopCountProperty;
51 | /**
52 | The default loop count when there are no any loop count information inside image container metadata.
53 | For example, for GIF format, the standard use 1 (play once). For APNG format, the standard use 0 (infinity loop).
54 | @note Subclass override.
55 | */
56 | @property (class, readonly) NSUInteger defaultLoopCount;
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/iosApp/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "NSButton+WebCache.h"
14 | #import "NSData+ImageContentType.h"
15 | #import "NSImage+Compatibility.h"
16 | #import "SDAnimatedImage.h"
17 | #import "SDAnimatedImagePlayer.h"
18 | #import "SDAnimatedImageRep.h"
19 | #import "SDAnimatedImageView+WebCache.h"
20 | #import "SDAnimatedImageView.h"
21 | #import "SDCallbackQueue.h"
22 | #import "SDDiskCache.h"
23 | #import "SDGraphicsImageRenderer.h"
24 | #import "SDImageAPNGCoder.h"
25 | #import "SDImageAWebPCoder.h"
26 | #import "SDImageCache.h"
27 | #import "SDImageCacheConfig.h"
28 | #import "SDImageCacheDefine.h"
29 | #import "SDImageCachesManager.h"
30 | #import "SDImageCoder.h"
31 | #import "SDImageCoderHelper.h"
32 | #import "SDImageCodersManager.h"
33 | #import "SDImageFrame.h"
34 | #import "SDImageGIFCoder.h"
35 | #import "SDImageGraphics.h"
36 | #import "SDImageHEICCoder.h"
37 | #import "SDImageIOAnimatedCoder.h"
38 | #import "SDImageIOCoder.h"
39 | #import "SDImageLoader.h"
40 | #import "SDImageLoadersManager.h"
41 | #import "SDImageTransformer.h"
42 | #import "SDMemoryCache.h"
43 | #import "SDWebImageCacheKeyFilter.h"
44 | #import "SDWebImageCacheSerializer.h"
45 | #import "SDWebImageCompat.h"
46 | #import "SDWebImageDefine.h"
47 | #import "SDWebImageDownloader.h"
48 | #import "SDWebImageDownloaderConfig.h"
49 | #import "SDWebImageDownloaderDecryptor.h"
50 | #import "SDWebImageDownloaderOperation.h"
51 | #import "SDWebImageDownloaderRequestModifier.h"
52 | #import "SDWebImageDownloaderResponseModifier.h"
53 | #import "SDWebImageError.h"
54 | #import "SDWebImageIndicator.h"
55 | #import "SDWebImageManager.h"
56 | #import "SDWebImageOperation.h"
57 | #import "SDWebImageOptionsProcessor.h"
58 | #import "SDWebImagePrefetcher.h"
59 | #import "SDWebImageTransition.h"
60 | #import "UIButton+WebCache.h"
61 | #import "UIImage+ExtendedCacheData.h"
62 | #import "UIImage+ForceDecode.h"
63 | #import "UIImage+GIF.h"
64 | #import "UIImage+MemoryCacheCost.h"
65 | #import "UIImage+Metadata.h"
66 | #import "UIImage+MultiFormat.h"
67 | #import "UIImage+Transform.h"
68 | #import "UIImageView+HighlightedWebCache.h"
69 | #import "UIImageView+WebCache.h"
70 | #import "UIView+WebCache.h"
71 | #import "UIView+WebCacheOperation.h"
72 | #import "UIView+WebCacheState.h"
73 | #import "SDWebImage.h"
74 |
75 | FOUNDATION_EXPORT double SDWebImageVersionNumber;
76 | FOUNDATION_EXPORT const unsigned char SDWebImageVersionString[];
77 |
78 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | /// An error domain represent SDWebImage loading system with custom codes
13 | FOUNDATION_EXPORT NSErrorDomain const _Nonnull SDWebImageErrorDomain;
14 |
15 | /// The response instance for invalid download response (NSURLResponse *)
16 | FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadResponseKey;
17 | /// The HTTP status code for invalid download response (NSNumber *)
18 | FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadStatusCodeKey;
19 | /// The HTTP MIME content type for invalid download response (NSString *)
20 | FOUNDATION_EXPORT NSErrorUserInfoKey const _Nonnull SDWebImageErrorDownloadContentTypeKey;
21 |
22 | /// SDWebImage error domain and codes
23 | typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) {
24 | SDWebImageErrorInvalidURL = 1000, // The URL is invalid, such as nil URL or corrupted URL
25 | SDWebImageErrorBadImageData = 1001, // The image data can not be decoded to image, or the image data is empty
26 | SDWebImageErrorCacheNotModified = 1002, // The remote location specify that the cached image is not modified, such as the HTTP response 304 code. It's useful for `SDWebImageRefreshCached`
27 | SDWebImageErrorBlackListed = 1003, // The URL is blacklisted because of unrecoverable failure marked by downloader (such as 404), you can use `.retryFailed` option to avoid this
28 | SDWebImageErrorInvalidDownloadOperation = 2000, // The image download operation is invalid, such as nil operation or unexpected error occur when operation initialized
29 | SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey`
30 | SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code.
31 | SDWebImageErrorInvalidDownloadResponse = 2003, // When using response modifier, the modified download response is nil and marked as failed.
32 | SDWebImageErrorInvalidDownloadContentType = 2004, // The image download response a invalid content type. You can check the MIME content type in error's userInfo under `SDWebImageErrorDownloadContentTypeKey`
33 | };
34 |
--------------------------------------------------------------------------------
/iosApp/Pods/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+MultiFormat.h"
10 | #import "SDImageCodersManager.h"
11 | #import "SDAnimatedImageRep.h"
12 |
13 | @implementation UIImage (MultiFormat)
14 |
15 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
16 | return [self sd_imageWithData:data scale:1];
17 | }
18 |
19 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale {
20 | return [self sd_imageWithData:data scale:scale firstFrameOnly:NO];
21 | }
22 |
23 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly {
24 | if (!data) {
25 | return nil;
26 | }
27 | SDImageCoderOptions *options = @{SDImageCoderDecodeScaleFactor : @(MAX(scale, 1)), SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
28 | return [[SDImageCodersManager sharedManager] decodedImageWithData:data options:options];
29 | }
30 |
31 | - (nullable NSData *)sd_imageData {
32 | #if SD_MAC
33 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);
34 | NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil];
35 | // Check weak animated data firstly
36 | if ([imageRep isKindOfClass:[SDAnimatedImageRep class]]) {
37 | SDAnimatedImageRep *animatedImageRep = (SDAnimatedImageRep *)imageRep;
38 | NSData *imageData = [animatedImageRep animatedImageData];
39 | if (imageData) {
40 | return imageData;
41 | }
42 | }
43 | #endif
44 | return [self sd_imageDataAsFormat:SDImageFormatUndefined];
45 | }
46 |
47 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
48 | return [self sd_imageDataAsFormat:imageFormat compressionQuality:1];
49 | }
50 |
51 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality {
52 | return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO];
53 | }
54 |
55 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly {
56 | SDImageCoderOptions *options = @{SDImageCoderEncodeCompressionQuality : @(compressionQuality), SDImageCoderEncodeFirstFrameOnly : @(firstFrameOnly)};
57 | return [[SDImageCodersManager sharedManager] encodedDataWithImage:self format:imageFormat options:options];
58 | }
59 |
60 | @end
61 |
--------------------------------------------------------------------------------