Compare commits
No commits in common. 'master' and 'bet_component' have entirely different histories.
master
...
bet_compon
@ -1,20 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: Swift-ALLIN
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
event:
|
|
||||||
- push
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: build
|
|
||||||
image: swift:latest
|
|
||||||
commands:
|
|
||||||
- cd Sources/Model
|
|
||||||
- swift build
|
|
||||||
|
|
||||||
- name: test
|
|
||||||
image: swift:latest
|
|
||||||
commands:
|
|
||||||
- cd Sources/Model
|
|
||||||
- swift test
|
|
Before Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 354 KiB |
@ -1,91 +1,3 @@
|
|||||||
<div align="center">
|
# Swift
|
||||||
|
|
||||||
<img src="Documentation/Images/Banner-AllIn.png" />
|
Client IOS
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
[Présentation](#apple---all-in) | [Répartition du dépôt](#répartition-du-gitlab) | [Structures](#structures) | [Technologies](#technologies) | [Outils](#outils) | [Wiki](https://codefirst.iut.uca.fr/git/AllDev/Gestion_de_projet/wiki)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
### Apple - ALL IN!
|
|
||||||
|
|
||||||
**Contexte** : Application Swift et SwiftUI pour le projet universitaire de troisième année (B.U.T Informatique de Clermont-Ferrand) intitulé *All In*.
|
|
||||||
</br>
|
|
||||||
|
|
||||||
**Description** : Ce dépôt contient l'ensemble du code pour la partie client iOS de l'application *ALL IN*.
|
|
||||||
</br>
|
|
||||||
|
|
||||||
# Répartition du dépot
|
|
||||||
|
|
||||||
[**Sources**](Sources) : **Code de l'application**
|
|
||||||
|
|
||||||
[**Documentation**](Documentation) : **Documentation de l'application**
|
|
||||||
|
|
||||||
|
|
||||||
# Structures
|
|
||||||
|
|
||||||
- MVVM
|
|
||||||
|
|
||||||
<div align = center>
|
|
||||||
|
|
||||||
<img src="https://codefirst.iut.uca.fr/git/AllDev/Gestion_de_projet/raw/branch/master/Documentation/Diagrammes/AllInMVVM.png" width="600" />
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
# Fonctionnement
|
|
||||||
|
|
||||||
- ### Comment lancer le projet ?
|
|
||||||
|
|
||||||
:information_source: *Assurez-vous d'avoir un Mac à disposition*
|
|
||||||
|
|
||||||
Tout d'abord si ce n'est pas fait cloner le dépôt de la branche **master/main**, pour cela copier le lien URL du dépôt git :
|
|
||||||
|
|
||||||
<div align = center>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Sur votre Mac, ouvrez l'IDE **Xcode** (disponible via l'App Store), puis cloner le dépôt en utilisant l'URL copiée précédemment :
|
|
||||||
|
|
||||||
<div align = center>
|
|
||||||
|
|
||||||
<img src="Documentation/Images/WelcomeToXcode.png" width="500" >
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Vous serez alors redirigé par l'IDE et pourrez lancer l'application sur l'appareil de votre choix :
|
|
||||||
|
|
||||||
<div align = center>
|
|
||||||
|
|
||||||
<img src="Documentation/Images/LaunchApp.png" width="900" >
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
*Si vous souhaitez lancer l'application sur votre appareil personnel, il sera nécessaire de renseigner votre compte iCloud dans l'IDE !*
|
|
||||||
|
|
||||||
# Technologies
|
|
||||||
|
|
||||||
<img src="" />
|
|
||||||
|
|
||||||
Pour réaliser l'interface visuelle, nous avons opté pour **SwiftUI** du fait qu'elle permet de réaliser des interfaces utilisateurs complexes de manière élégante. Le framework est récent, mis à jour régulièrement, et facile à prendre en main pour le développement.
|
|
||||||
|
|
||||||
# Outils
|
|
||||||
|
|
||||||
Pour la partie API, nous avons utilisé plusieurs outils :
|
|
||||||
|
|
||||||
- UserDefaults
|
|
||||||
|
|
||||||
Pour stocker le token localement, nous utilisons l'outil fourni par SwiftUI qui est UserDefaults, afin de réaliser une authentification automatique lorsque le client ouvre l'application, en récupérant son token lors de la précédente connexion.
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
© AllDev - Apple
|
|
||||||
|
|
||||||
</div>
|
|
@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Workspace
|
|
||||||
version = "1.0">
|
|
||||||
<FileRef
|
|
||||||
location = "group:StubLib">
|
|
||||||
</FileRef>
|
|
||||||
<FileRef
|
|
||||||
location = "group:Api">
|
|
||||||
</FileRef>
|
|
||||||
<FileRef
|
|
||||||
location = "group:AllInApp/AllInApp.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
<FileRef
|
|
||||||
location = "group:DependencyInjection/DependencyInjection.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
<FileRef
|
|
||||||
location = "group:Model">
|
|
||||||
</FileRef>
|
|
||||||
</Workspace>
|
|
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>com.apple.security.application-groups</key>
|
|
||||||
<array/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
@ -1,39 +0,0 @@
|
|||||||
//
|
|
||||||
// AllInApp.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Emre on 19/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import DependencyInjection
|
|
||||||
import Model
|
|
||||||
|
|
||||||
@main
|
|
||||||
struct AllInApp: App {
|
|
||||||
|
|
||||||
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
|
|
||||||
@Environment(\.scenePhase) var phase
|
|
||||||
let DI = DependencyInjection.shared
|
|
||||||
|
|
||||||
init() {
|
|
||||||
DI.addSingleton(IAuthService.self, AuthService())
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some Scene {
|
|
||||||
WindowGroup {
|
|
||||||
ContentView()
|
|
||||||
.onAppear {
|
|
||||||
AppStateContainer.shared.notificationState.scheduleNotifications()
|
|
||||||
}
|
|
||||||
.onChange(of: phase) { newPhase in
|
|
||||||
switch newPhase {
|
|
||||||
case .background, .inactive:
|
|
||||||
UIApplication.shared.shortcutItems = QuickAction.allShortcutItems
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
//
|
|
||||||
// AppState.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Emre on 17/12/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
class AppStateContainer: ObservableObject {
|
|
||||||
static let shared = AppStateContainer()
|
|
||||||
let loggedState: LoggedState = LoggedState()
|
|
||||||
var onlineStatus: OnlineStatus = OnlineStatus()
|
|
||||||
var notificationState: NotificationService = NotificationService()
|
|
||||||
@Published var user: User?
|
|
||||||
|
|
||||||
@AppStorage("authenticationRefresh", store: UserDefaults(suiteName: "group.alldev.AllIn")!) var authenticationRefresh: String?
|
|
||||||
}
|
|
||||||
|
|
||||||
class LoggedState: ObservableObject {
|
|
||||||
@Published var connectedUser: Bool = false
|
|
||||||
}
|
|
||||||
|
|
||||||
class OnlineStatus: ObservableObject {
|
|
||||||
@Published var isOnline: Bool = true
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xF8",
|
|
||||||
"green" : "0x99",
|
|
||||||
"red" : "0x23"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xF8",
|
|
||||||
"green" : "0x99",
|
|
||||||
"red" : "0x23"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x5B",
|
|
||||||
"green" : "0x5B",
|
|
||||||
"red" : "0x5B"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x5B",
|
|
||||||
"green" : "0x5B",
|
|
||||||
"red" : "0x5B"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x70",
|
|
||||||
"green" : "0x70",
|
|
||||||
"red" : "0x70"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x70",
|
|
||||||
"green" : "0x70",
|
|
||||||
"red" : "0x70"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x9D",
|
|
||||||
"green" : "0x9D",
|
|
||||||
"red" : "0x9F"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x9D",
|
|
||||||
"green" : "0x9D",
|
|
||||||
"red" : "0x9F"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x24",
|
|
||||||
"green" : "0x24",
|
|
||||||
"red" : "0x24"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x24",
|
|
||||||
"green" : "0x24",
|
|
||||||
"red" : "0x24"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xEC",
|
|
||||||
"green" : "0xE8",
|
|
||||||
"red" : "0x00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xEC",
|
|
||||||
"green" : "0xE8",
|
|
||||||
"red" : "0x00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xF7",
|
|
||||||
"green" : "0xF7",
|
|
||||||
"red" : "0xF7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xF7",
|
|
||||||
"green" : "0xF7",
|
|
||||||
"red" : "0xF7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xCB",
|
|
||||||
"green" : "0xCB",
|
|
||||||
"red" : "0xCB"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xCB",
|
|
||||||
"green" : "0xCB",
|
|
||||||
"red" : "0xCB"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x8A",
|
|
||||||
"green" : "0x2B",
|
|
||||||
"red" : "0xFE"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x8A",
|
|
||||||
"green" : "0x2B",
|
|
||||||
"red" : "0xFE"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xC5",
|
|
||||||
"green" : "0x66",
|
|
||||||
"red" : "0x8A"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xC5",
|
|
||||||
"green" : "0x66",
|
|
||||||
"red" : "0x8A"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0x3C",
|
|
||||||
"green" : "0x3C",
|
|
||||||
"red" : "0x3C"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xFF",
|
|
||||||
"green" : "0xFF",
|
|
||||||
"red" : "0xFF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xE9",
|
|
||||||
"green" : "0xDE",
|
|
||||||
"red" : "0xC4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xE9",
|
|
||||||
"green" : "0xDE",
|
|
||||||
"red" : "0xC4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xFF",
|
|
||||||
"green" : "0xB5",
|
|
||||||
"red" : "0xB7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xFF",
|
|
||||||
"green" : "0xB5",
|
|
||||||
"red" : "0xB7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"colors" : [
|
|
||||||
{
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xFF",
|
|
||||||
"green" : "0xE8",
|
|
||||||
"red" : "0xD1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"appearances" : [
|
|
||||||
{
|
|
||||||
"appearance" : "luminosity",
|
|
||||||
"value" : "dark"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"color" : {
|
|
||||||
"color-space" : "srgb",
|
|
||||||
"components" : {
|
|
||||||
"alpha" : "1.000",
|
|
||||||
"blue" : "0xFF",
|
|
||||||
"green" : "0xE8",
|
|
||||||
"red" : "0xD1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"idiom" : "universal"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.6 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "allcoinWhite.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 27 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Group 107 (1).png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 681 B |
Before Width: | Height: | Size: 986 B |
Before Width: | Height: | Size: 3.4 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Group 179.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 832 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Group 210.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 2.2 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "chevronDown.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 2.2 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "chevronRight.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "chevronUp.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 2.1 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Exclude (1).png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "defaultUser.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "football.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.8 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "friends.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "gear.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "GiftEarn.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 32 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Gift.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 61 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "globe.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 804 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "globe.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 39 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "globePurple.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.3 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "launchScreen.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Group 280.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 3.5 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "lock.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 610 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "lockPurple.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 821 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Mask group (3).png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 5.0 MiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "background.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "money.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "paintbrush.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "PinkAllCoin.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 693 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "PinkBadge.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1008 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "pinkFlame.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 3.5 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "UserPink.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 843 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Trophy.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 975 B |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "questionMarkGrey.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 2.9 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "questionMark.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "Trophy.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 7.0 KiB |
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "threeLines 1.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"filename" : "threeLines.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "videoGame.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"images" : [
|
|
||||||
{
|
|
||||||
"filename" : "WelcomeBackground.png",
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "1x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"author" : "xcode",
|
|
||||||
"version" : 1
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
//
|
|
||||||
// AllcoinsCount.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas on 28/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct AllcoinsCapsule: View {
|
|
||||||
var gains: Int
|
|
||||||
var body: some View {
|
|
||||||
Text("Vous remportez")
|
|
||||||
.foregroundColor(.white)
|
|
||||||
HStack{
|
|
||||||
Text(gains.description)
|
|
||||||
.textStyle(weight: .bold, color: .white, size: 60)
|
|
||||||
Image("allcoinWhiteIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 40, height:40)
|
|
||||||
.scaledToFit()
|
|
||||||
}
|
|
||||||
.padding([.leading,.trailing],30)
|
|
||||||
.padding([.top,.bottom],10)
|
|
||||||
.background(.white.opacity(0.09))
|
|
||||||
.cornerRadius(999, corners: .allCorners)
|
|
||||||
.clipShape(Capsule())
|
|
||||||
.overlay(RoundedRectangle(cornerRadius: 999).stroke(.white, lineWidth: 1.5))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct AllcoinsCapsule_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
AllcoinsCapsule(gains: 100)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
//
|
|
||||||
// AllcoinsCounter.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Emre on 20/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct AllcoinsCounter: View {
|
|
||||||
|
|
||||||
var backgroundColor: Color = .white
|
|
||||||
var foregroundColor: Color = AllInColors.primaryColor
|
|
||||||
@ObservedObject var appStateContainer = AppStateContainer.shared
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
HStack(alignment: .center) {
|
|
||||||
Text(String(appStateContainer.user!.nbCoins))
|
|
||||||
.contentTransition(.numericText())
|
|
||||||
.fontWeight(.black)
|
|
||||||
.foregroundColor(foregroundColor)
|
|
||||||
Image("allcoinIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 17, height: 17, alignment: .leading)
|
|
||||||
}
|
|
||||||
.frame(width: 90, height: 40)
|
|
||||||
.background(backgroundColor)
|
|
||||||
.cornerRadius(9999, corners: [.topLeft, .bottomLeft])
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct AllcoinsCounter_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
AllcoinsCounter()
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
//
|
|
||||||
// BetCard.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas on 24/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct BetCard: View {
|
|
||||||
|
|
||||||
var bet: Bet
|
|
||||||
@State var showDetails: Bool = false
|
|
||||||
@State var showParticipate: Bool = false
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack(spacing: 0) {
|
|
||||||
VStack(alignment: .leading,spacing: 2){
|
|
||||||
HStack{
|
|
||||||
Spacer()
|
|
||||||
Text("bet_proposed_by_format \(bet.author.capitalized)")
|
|
||||||
.font(.system(size: 10))
|
|
||||||
.foregroundColor(AllInColors.grey800Color)
|
|
||||||
}
|
|
||||||
Text(bet.theme)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.foregroundColor(AllInColors.grey800Color)
|
|
||||||
Text(bet.phrase)
|
|
||||||
.font(.system(size: 20))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
HStack{
|
|
||||||
Text("bet_starting")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.foregroundColor(AllInColors.grey800Color)
|
|
||||||
TextCapsule(date: bet.endRegisterDate)
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.frame(width: .infinity)
|
|
||||||
.padding(.all,15)
|
|
||||||
.background(AllInColors.componentBackgroundColor).cornerRadius(20, corners: [.topLeft,.topRight]).padding(.bottom,0)
|
|
||||||
|
|
||||||
VStack(alignment: .leading,spacing: 2){
|
|
||||||
HStack{
|
|
||||||
Spacer()
|
|
||||||
UsersPreview(users: [])
|
|
||||||
Text("bet_players_waiting_format \(bet.invited.count.description)")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.foregroundColor(AllInColors.grey800Color)
|
|
||||||
.fontWeight(.medium)
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
}
|
|
||||||
.padding(0)
|
|
||||||
ParticipateButton(isOpen: $showDetails, isParticapatedOpen: $showParticipate, bet: bet)
|
|
||||||
.padding(.top, 5)
|
|
||||||
}
|
|
||||||
.frame(width: .infinity)
|
|
||||||
.padding(.all,8)
|
|
||||||
.background(AllInColors.underComponentBackgroundColor)
|
|
||||||
.cornerRadius(20, corners: [.bottomLeft,.bottomRight])
|
|
||||||
.border(width: 1, edges: [.top], color: AllInColors.delimiterGrey)
|
|
||||||
}
|
|
||||||
.onTapGesture {
|
|
||||||
showDetails.toggle()
|
|
||||||
}
|
|
||||||
.fullScreenCover(isPresented: $showDetails) {
|
|
||||||
DetailsView(isModalPresented: $showDetails, isModalParticipated: $showParticipate, id: bet.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct BetCard_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
BetCard(bet: BinaryBet(theme: "Football - Finale de la Ligue des Champions",
|
|
||||||
phrase: "Le gagnant de la finale sera l'équipe avec le plus de tirs au but.",
|
|
||||||
endRegisterDate: Date().addingTimeInterval(86400),
|
|
||||||
endBetDate: Date().addingTimeInterval(172800),
|
|
||||||
isPrivate: false,
|
|
||||||
status: .inProgress,
|
|
||||||
invited: [],
|
|
||||||
author: "Imri"))
|
|
||||||
.preferredColorScheme(.dark)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
//
|
|
||||||
// BetLineLoading.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas Delanier on 19/01/2024.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct BetLineLoading: View {
|
|
||||||
|
|
||||||
@State var showInfos: Bool = false
|
|
||||||
var bet: BetDetail
|
|
||||||
|
|
||||||
var value: CGFloat {
|
|
||||||
let totalParticipations = bet.participations.count
|
|
||||||
let numberOfYes = bet.participations.filter { $0.answer.uppercased() == "YES" }.count
|
|
||||||
let numberOfNo = bet.participations.filter { $0.answer.uppercased() == "NO" }.count
|
|
||||||
if(numberOfNo == 0 && numberOfYes == 0){
|
|
||||||
return 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
return totalParticipations > 0 ? CGFloat(numberOfYes) / CGFloat(totalParticipations) : 0.0
|
|
||||||
}
|
|
||||||
|
|
||||||
var yesParticipations: [Participation] {
|
|
||||||
bet.participations.filter { $0.answer.uppercased() == "YES" }
|
|
||||||
}
|
|
||||||
|
|
||||||
var noParticipations: [Participation] {
|
|
||||||
bet.participations.filter { $0.answer.uppercased() == "NO" }
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
switch bet.bet {
|
|
||||||
case is BinaryBet:
|
|
||||||
BinaryBetLine(bet: bet)
|
|
||||||
case is CustomBet:
|
|
||||||
CustomBetLine(bet: bet)
|
|
||||||
default:
|
|
||||||
BinaryBetLine(bet: bet)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,168 +0,0 @@
|
|||||||
//
|
|
||||||
// BinaryBetLine.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas Delanier on 10/06/2024.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct BinaryBetLine: View {
|
|
||||||
|
|
||||||
@State var showInfos: Bool = false
|
|
||||||
var bet: BetDetail
|
|
||||||
|
|
||||||
var value: CGFloat {
|
|
||||||
let totalParticipations = bet.participations.count
|
|
||||||
let numberOfYes = bet.participations.filter { $0.answer.uppercased() == "YES" }.count
|
|
||||||
let numberOfNo = bet.participations.filter { $0.answer.uppercased() == "NO" }.count
|
|
||||||
if(numberOfNo == 0 && numberOfYes == 0){
|
|
||||||
return 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
return totalParticipations > 0 ? CGFloat(numberOfYes) / CGFloat(totalParticipations) : 0.0
|
|
||||||
}
|
|
||||||
|
|
||||||
var yesParticipations: [Participation] {
|
|
||||||
bet.participations.filter { $0.answer.uppercased() == "YES" }
|
|
||||||
}
|
|
||||||
|
|
||||||
var noParticipations: [Participation] {
|
|
||||||
bet.participations.filter { $0.answer.uppercased() == "NO" }
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack(alignment: .leading, spacing: 0) {
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Text("OUI")
|
|
||||||
.font(.system(size: 25))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.blue200)
|
|
||||||
Spacer()
|
|
||||||
Text("NON")
|
|
||||||
.font(.system(size: 25))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.pink100)
|
|
||||||
}
|
|
||||||
|
|
||||||
GeometryReader { geometry in
|
|
||||||
ZStack(alignment: .leading) {
|
|
||||||
HStack{
|
|
||||||
Spacer()
|
|
||||||
Rectangle()
|
|
||||||
.frame(width: min(CGFloat(1-self.value) * geometry.size.width, geometry.size.width-20), height: 17)
|
|
||||||
.foregroundStyle(AllInColors.PinkBetGradiant).cornerRadius(999)
|
|
||||||
}
|
|
||||||
|
|
||||||
HStack(spacing: 0) {
|
|
||||||
Rectangle()
|
|
||||||
.frame(width: min(CGFloat(self.value) * geometry.size.width, geometry.size.width-20), height: 17)
|
|
||||||
.foregroundStyle(AllInColors.BlueBetGradiant)
|
|
||||||
.cornerRadius(999)
|
|
||||||
Image("loadingHeartIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 29, height: 32)
|
|
||||||
.padding(.leading, -10)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
.padding(.bottom, 5)
|
|
||||||
}
|
|
||||||
.frame(height: 40)
|
|
||||||
|
|
||||||
HStack {
|
|
||||||
Spacer()
|
|
||||||
Text("bet_status_details_drawer")
|
|
||||||
.textStyle(weight: .medium, color: AllInColors.primaryTextColor, size: 10)
|
|
||||||
Image(showInfos ? "chevronUpIcon" : "chevronDownIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 10, height: 7)
|
|
||||||
.scaledToFill()
|
|
||||||
}
|
|
||||||
.onTapGesture {
|
|
||||||
withAnimation {
|
|
||||||
showInfos.toggle()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.padding(.bottom, 5)
|
|
||||||
.padding(.trailing, 5)
|
|
||||||
|
|
||||||
if showInfos {
|
|
||||||
VStack(spacing: 1) {
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Image("blueAllCoinIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width:12, height: 12)
|
|
||||||
Text(yesParticipations.reduce(0, {x,y in x + y.stake}).description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.blue200)
|
|
||||||
Spacer()
|
|
||||||
Text(noParticipations.reduce(0, {x,y in x + y.stake}).description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.pink100)
|
|
||||||
Image("pinkAllCoinIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
}
|
|
||||||
HStack(spacing: 5){
|
|
||||||
Image("bluePersonIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(yesParticipations.count.description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.blue200)
|
|
||||||
Spacer()
|
|
||||||
Text(noParticipations.count.description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.pink100)
|
|
||||||
Image("pinkPersonIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
|
|
||||||
}
|
|
||||||
HStack(spacing: 5){
|
|
||||||
Image("blueBadgeIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(yesParticipations.max(by: { $0.stake < $1.stake })?.stake.description ?? "0")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.blue200)
|
|
||||||
Spacer()
|
|
||||||
Text(noParticipations.max(by: { $0.stake < $1.stake })?.stake.description ?? "0")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.pink100)
|
|
||||||
Image("pinkBadgeIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
|
|
||||||
}
|
|
||||||
HStack(spacing: 5){
|
|
||||||
Image("blueTrophyIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text("1.2")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.blue200)
|
|
||||||
Spacer()
|
|
||||||
Text("1.2")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(AllInColors.pink100)
|
|
||||||
Image("pinkTrophyIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width:12, height: 12)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
//
|
|
||||||
// ChoiceCapsule.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas on 26/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct ChoiceCapsule: View {
|
|
||||||
let filter: BetFilter
|
|
||||||
@State var pressed = false
|
|
||||||
@ObservedObject var viewModel: BetViewModel
|
|
||||||
|
|
||||||
var label: String {
|
|
||||||
switch filter {
|
|
||||||
case .isPublic:
|
|
||||||
return String(localized: "bet_public")
|
|
||||||
case .isInvitation:
|
|
||||||
return String(localized: "bet_invitation")
|
|
||||||
case .inProgress:
|
|
||||||
return String(localized: "bet_current")
|
|
||||||
case .isFinished:
|
|
||||||
return String(localized: "bet_finished")
|
|
||||||
default:
|
|
||||||
return "NaN"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
Group {
|
|
||||||
if(pressed) {
|
|
||||||
Text(label)
|
|
||||||
.textStyle(weight: .semibold, color: .white, size: 15)
|
|
||||||
.padding([.leading,.trailing],13.8)
|
|
||||||
.padding([.top,.bottom], 7)
|
|
||||||
.background(AllInColors.lightPurpleColor)
|
|
||||||
.clipShape(Capsule())
|
|
||||||
} else {
|
|
||||||
Text(label)
|
|
||||||
.textStyle(weight: .regular, color: AllInColors.grey800Color, size: 15)
|
|
||||||
.padding([.leading,.trailing], 15)
|
|
||||||
.padding([.top,.bottom], 7)
|
|
||||||
.background(AllInColors.underComponentBackgroundColor)
|
|
||||||
.clipShape(Capsule())
|
|
||||||
.overlay(
|
|
||||||
RoundedRectangle(cornerRadius: 20)
|
|
||||||
.stroke(AllInColors.delimiterGrey, lineWidth: 1)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.onTapGesture() {
|
|
||||||
pressed.toggle()
|
|
||||||
if(pressed) {
|
|
||||||
viewModel.filters.insert(filter)
|
|
||||||
} else {
|
|
||||||
viewModel.filters.remove(filter)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
//
|
|
||||||
// ChoiceFinalAnswerCell.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas Delanier on 29/01/2024.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct ChoiceFinalAnswerCell: View {
|
|
||||||
|
|
||||||
var selected = false
|
|
||||||
var answer: AnswerDetail
|
|
||||||
var rawColor = AllInColors.blueAccentColor
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
ZStack {
|
|
||||||
HStack {
|
|
||||||
Spacer()
|
|
||||||
Text(answer.response)
|
|
||||||
.textStyle(weight: .bold, color: selected ? .white : rawColor, size: 40)
|
|
||||||
.padding(.vertical, 10)
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
HStack {
|
|
||||||
Spacer()
|
|
||||||
OddCapsule(
|
|
||||||
backgroundColor: selected ? .white : AllInColors.purpleAccentColor,
|
|
||||||
foregroundColor: selected ? AllInColors.purpleAccentColor : .white,
|
|
||||||
odd: answer.odds
|
|
||||||
)
|
|
||||||
.padding(.trailing, 20)
|
|
||||||
.scaleEffect(0.9)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.background(selected ? AllInColors.purpleAccentColor : .white)
|
|
||||||
.cornerRadius(17)
|
|
||||||
.scaleEffect(selected ? 1.02 : 1)
|
|
||||||
.animation(.easeInOut(duration: 0.3), value: selected)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
//
|
|
||||||
// ConfidentialityButton.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Emre on 29/09/2023.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct ConfidentialityButton: View {
|
|
||||||
|
|
||||||
var image: String
|
|
||||||
var text: String
|
|
||||||
var selected: Bool
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
HStack() {
|
|
||||||
Image(selected ? image + "Icon" : image + "PurpleIcon")
|
|
||||||
.resizable()
|
|
||||||
.scaledToFit()
|
|
||||||
.padding(.vertical, 12)
|
|
||||||
|
|
||||||
Text(text)
|
|
||||||
.font(.system(size: 17))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(selected ? .white : AllInColors.lightPurpleColor)
|
|
||||||
}
|
|
||||||
.frame(width: 110, height: 45)
|
|
||||||
.background(selected ? AllInColors.lightPurpleColor : AllInColors.componentBackgroundColor)
|
|
||||||
.cornerRadius(10)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ConfidentialityButton_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
ConfidentialityButton(image: "lock", text: "Privé", selected: true)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,141 +0,0 @@
|
|||||||
//
|
|
||||||
// CustomBetLine.swift
|
|
||||||
// AllIn
|
|
||||||
//
|
|
||||||
// Created by Lucas Delanier on 10/06/2024.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import Model
|
|
||||||
|
|
||||||
struct CustomBetLine: View {
|
|
||||||
|
|
||||||
@State var showInfos: [String: Bool] = [:]
|
|
||||||
var bet: BetDetail
|
|
||||||
|
|
||||||
var participationsForAnswer: [String: [Participation]] {
|
|
||||||
Dictionary(grouping: bet.participations, by: { $0.answer.uppercased() })
|
|
||||||
}
|
|
||||||
|
|
||||||
var sortedAnswers: [AnswerDetail] {
|
|
||||||
bet.answers.sorted { $0.totalParticipants > $1.totalParticipants }
|
|
||||||
}
|
|
||||||
|
|
||||||
func getTextStyle(for answer: AnswerDetail) -> Font.Weight {
|
|
||||||
return answer == sortedAnswers.first ? .bold : .light
|
|
||||||
}
|
|
||||||
|
|
||||||
func getColor(for answer: AnswerDetail) -> Color {
|
|
||||||
return answer == sortedAnswers.first ? AllInColors.pinkAccentColor : AllInColors.blueAccentColor
|
|
||||||
}
|
|
||||||
|
|
||||||
func getGradiant(for answer: AnswerDetail) -> LinearGradient {
|
|
||||||
return answer == sortedAnswers.first ? AllInColors.PinkBetGradiant : AllInColors.BlueBetLineGradiant
|
|
||||||
}
|
|
||||||
|
|
||||||
func getFlameImage(for answer: AnswerDetail) -> String {
|
|
||||||
return answer == sortedAnswers.first ? "pinkFlameIcon" : "blueFlameIcon"
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack(alignment: .leading, spacing: 0) {
|
|
||||||
ForEach(sortedAnswers, id: \.response) { answer in
|
|
||||||
let participations = participationsForAnswer[answer.response.uppercased()] ?? []
|
|
||||||
let totalParticipations = bet.participations.count
|
|
||||||
let percentage = totalParticipations > 0 ? CGFloat(participations.count) / CGFloat(totalParticipations) : 0.0
|
|
||||||
|
|
||||||
VStack {
|
|
||||||
HStack {
|
|
||||||
Text(answer.response)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(getTextStyle(for: answer))
|
|
||||||
.foregroundColor(getColor(for: answer))
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
|
|
||||||
GeometryReader { geometry in
|
|
||||||
ZStack(alignment: .leading) {
|
|
||||||
HStack(spacing: 0) {
|
|
||||||
Rectangle()
|
|
||||||
.frame(width: min(percentage * geometry.size.width, geometry.size.width-20), height: 17)
|
|
||||||
.foregroundStyle(getGradiant(for: answer))
|
|
||||||
.cornerRadius(999, corners: [.topLeft, .bottomLeft])
|
|
||||||
Image(getFlameImage(for: answer))
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 29, height: 32)
|
|
||||||
.padding(.leading, -6)
|
|
||||||
Text("\(Int(percentage * 100))%")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundStyle(getColor(for: answer))
|
|
||||||
.padding(.leading, 2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.padding(.bottom, 5)
|
|
||||||
}
|
|
||||||
.frame(height: 40)
|
|
||||||
|
|
||||||
HStack {
|
|
||||||
Spacer()
|
|
||||||
Text("bet_status_details_drawer")
|
|
||||||
.textStyle(weight: .medium, color: AllInColors.primaryTextColor, size: 10)
|
|
||||||
Image(showInfos[answer.response] ?? false ? "chevronUpIcon" : "chevronDownIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 10, height: 7)
|
|
||||||
.scaledToFill()
|
|
||||||
}
|
|
||||||
.onTapGesture {
|
|
||||||
withAnimation {
|
|
||||||
showInfos[answer.response, default: false].toggle()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.padding(.trailing, 5)
|
|
||||||
|
|
||||||
if showInfos[answer.response] ?? false {
|
|
||||||
HStack{
|
|
||||||
VStack(alignment: .leading,spacing: 1) {
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Image(answer == sortedAnswers.first ? "pinkAllCoinIcon" : "blueAllCoinIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(participations.reduce(0, { x, y in x + y.stake }).description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(getColor(for: answer))
|
|
||||||
}
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Image(answer == sortedAnswers.first ? "pinkPersonIcon" : "bluePersonIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(participations.count.description)
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(getColor(for: answer))
|
|
||||||
}
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Image(answer == sortedAnswers.first ? "pinkBadgeIcon" : "blueBadgeIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(participations.max(by: { $0.stake < $1.stake })?.stake.description ?? "0")
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(getColor(for: answer))
|
|
||||||
}
|
|
||||||
HStack(spacing: 5) {
|
|
||||||
Image(answer == sortedAnswers.first ? "pinkTrophyIcon" : "blueTrophyIcon")
|
|
||||||
.resizable()
|
|
||||||
.frame(width: 12, height: 12)
|
|
||||||
Text(String(format: "%.2f", answer.odds))
|
|
||||||
.font(.system(size: 15))
|
|
||||||
.fontWeight(.bold)
|
|
||||||
.foregroundColor(getColor(for: answer))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|