diff --git a/.metadata b/.metadata
index 8973d6c..b70aa44 100644
--- a/.metadata
+++ b/.metadata
@@ -4,8 +4,8 @@
# This file should be version controlled and should not be manually edited.
version:
- revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
- channel: "stable"
+ revision: "3e493a3e4d0a5c99fa7da51faae354e95a9a1abe"
+ channel: "beta"
project_type: app
@@ -13,11 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
- create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- - platform: android
- create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
+ create_revision: 3e493a3e4d0a5c99fa7da51faae354e95a9a1abe
+ base_revision: 3e493a3e4d0a5c99fa7da51faae354e95a9a1abe
+ - platform: web
+ create_revision: 3e493a3e4d0a5c99fa7da51faae354e95a9a1abe
+ base_revision: 3e493a3e4d0a5c99fa7da51faae354e95a9a1abe
# User provided section
diff --git a/README.md b/README.md
index 02b65df..51d9e51 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,215 @@
-# mnemo_cards
+# Mnemo Cards - Мобильное приложение для изучения языков
-Mnemo
+Полнофункциональная система для изучения языков, включающая мобильное приложение, веб-сервер, телеграм-бот и веб-игры.
-## Getting Started
+## 🏗️ Структура проекта
-This project is a starting point for a Flutter application.
+Проект состоит из нескольких взаимосвязанных компонентов:
-A few resources to get you started if this is your first Flutter project:
+### 📱 Мобильное приложение (`mnemo_cards/`)
+Основное Flutter приложение для iOS и Android с функциями:
+- Изучение языков через карточки
+- Интеграция с Firebase (Firestore, Analytics, Crashlytics)
+- Система покупок (YooKassa, In-App Purchase)
+- Реклама (Yandex Mobile Ads)
+- Локальные уведомления
+- Интеграция с веб-играми через WebView
+- Поддержка Telegram Web App
-- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
+**Технологии:** Flutter, BLoC, Auto Route, Firebase, WebView
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev/), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
+### 🌐 Веб-приложение (`mnemo_cards_web/`)
+Веб-версия Flutter приложения с функциями:
+- Изучение языков через карточки в браузере
+- Интеграция с Firebase (Firestore, Analytics, Crashlytics)
+- Адаптивный дизайн для различных устройств
+- Синхронизация данных с мобильным приложением
+- Поддержка PWA (Progressive Web App)
+- Интеграция с веб-играми
+
+**Технологии:** Flutter Web, BLoC, Auto Route, Firebase, PWA
+
+### 🔧 Общие компоненты (`mnemo_cards_common/`)
+Общие DTO и утилиты для мобильного приложения:
+- Модели данных
+- Сетевые утилиты
+- JSON сериализация
+- Криптографические функции
+
+### 🖥️ Backend сервер (`mnemo_cards_backend/`)
+Dart сервер на базе Shelf framework:
+- REST API для мобильного приложения
+- База данных Isar
+- Интеграция с Google APIs
+- Система платежей YooKassa
+- Периодические задачи
+- Swagger документация
+
+**Технологии:** Dart, Shelf, Isar, Google APIs
+
+### 🔧 Backend общие компоненты (`mnemo_cards_common_backend/`)
+Общие компоненты для backend:
+- Модели данных
+- Утилиты для работы с Isar
+- Общие бизнес-логика
+
+### 🤖 Telegram бот (`mnemo_cards_telegram_bot/`)
+Telegram бот для управления приложением:
+- Административные функции
+- Распространение APK файлов
+- Управление пользователями
+- Интеграция с основным backend
+
+**Технологии:** Dart, Teledart, Isar
+
+### 🎮 Веб-игры и WebView Bridge (`games/`)
+Система веб-игр с безопасной коммуникацией через WebView:
+- **Host приложение** - Flutter приложение-контейнер
+- **Web приложения** - Flutter Web игры (bus_word_game, web_app1)
+- **Bridge Core** - система безопасной коммуникации
+- **Payloads** - типизированные сообщения между приложениями
+
+**Архитектура:**
+- Изолированные payload'ы для каждого приложения
+- JavaScript bridge для WebView коммуникации
+- Типобезопасная обработка сообщений
+- Поддержка сложных сценариев (авторизация, quiz, нативные диалоги)
+
+**Технологии:** Flutter Web, WebView, JavaScript Bridge, Melos
+
+## 🚀 Быстрый старт
+
+### Мобильное приложение
+```bash
+cd mnemo_cards
+flutter pub get
+flutter run
+```
+
+### Веб-приложение
+```bash
+cd mnemo_cards_web
+flutter pub get
+flutter run -d chrome
+```
+
+### Backend сервер
+```bash
+cd mnemo_cards_backend
+dart pub get
+dart run
+```
+
+### Telegram бот
+```bash
+cd mnemo_cards_telegram_bot
+dart pub get
+dart run
+```
+
+### Веб-игры
+```bash
+cd games
+melos bootstrap
+cd apps/host_app
+flutter run
+```
+
+## 🔗 Зависимости между компонентами
+
+```
+mnemo_cards
+├── mnemo_cards_common (DTO)
+├── games/mnemo_cards_web_bridge (WebView интеграция)
+└── Firebase/Backend API
+
+mnemo_cards_web
+├── mnemo_cards_common (DTO)
+├── mnemo_cards_frontend_common (общие компоненты)
+├── games/payloads_shared (общие типы)
+└── Firebase/Backend API
+
+mnemo_cards_backend
+├── mnemo_cards_common (общие DTO)
+├── mnemo_cards_common_backend (backend утилиты)
+└── Isar Database
+
+mnemo_cards_telegram_bot
+├── mnemo_cards_common_backend
+└── Backend API
+
+games/
+├── bridge_core (WebView коммуникация)
+├── payloads_shared (общие типы)
+└── apps/ (веб-приложения)
+```
+
+## 📋 Основные функции
+
+### Мобильное приложение
+- 📚 Изучение языков через карточки
+- 🎮 Интеграция с веб-играми
+- 💳 Система покупок и подписок
+- 📊 Аналитика и статистика
+- 🔔 Push уведомления
+- 🌐 Telegram Web App поддержка
+
+### Веб-приложение
+- 📚 Изучение языков через карточки в браузере
+- 🎮 Интеграция с веб-играми
+- 💳 Система покупок и подписок
+- 📊 Аналитика и статистика
+- 🔄 Синхронизация с мобильным приложением
+- 📱 PWA поддержка для установки на устройство
+
+### Backend
+- 🔐 Аутентификация и авторизация
+- 💾 Управление данными пользователей
+- 💰 Обработка платежей
+- 📈 Аналитика и метрики
+- 🔄 Периодические задачи
+- 📚 API для мобильного приложения
+
+### Telegram бот
+- 👨💼 Административные функции
+- 📱 Распространение APK
+- 👥 Управление пользователями
+- 📊 Мониторинг системы
+
+### Веб-игры
+- 🎯 Интерактивные игры для изучения языков
+- 🔗 Безопасная интеграция с мобильным приложением
+- 📊 Отслеживание прогресса
+- 🎨 Современный UI/UX
+
+## 🛠️ Технологический стек
+
+- **Frontend:** Flutter, Flutter Web
+- **Backend:** Dart, Shelf, Isar
+- **База данных:** Isar (локальная), Firestore (облачная)
+- **Аутентификация:** Firebase Auth, Google Sign-In
+- **Платежи:** YooKassa, In-App Purchase
+- **Аналитика:** Firebase Analytics, Crashlytics
+- **Реклама:** Yandex Mobile Ads
+- **Уведомления:** Firebase Messaging, Local Notifications
+- **Коммуникация:** WebView Bridge, REST API
+- **Мониторинг:** Telegram Bot
+
+## 📱 Поддерживаемые платформы
+
+- **iOS** - нативное приложение
+- **Android** - нативное приложение
+- **Web** - Flutter Web приложение и игры
+- **Telegram** - Web App интеграция
+
+## 🔒 Безопасность
+
+- Шифрование данных
+- Безопасная WebView коммуникация
+- Защита от root/jailbreak
+- Валидация платежей
+- Изоляция payload'ов в веб-играх
+
+## 📄 Лицензия
+
+Проект является приватным и не предназначен для публикации.
diff --git a/analysis_options.yaml b/analysis_options.yaml
deleted file mode 100644
index 0cdae21..0000000
--- a/analysis_options.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-analyzer:
- errors:
- todo: info # чтобы отображать тудушки
-# unused_import: error # Лишние импорты в проекте не нужны
-# unused_local_variable: error # Неиспользуемые переменные в проекте не нужны
-# missing_required_param: error # Не пропускаем обязательные параметры
-# prefer_relative_imports: error # Относительные импорты в проекте
-# directives_ordering: error # Следим за порядком импортов в проекте
- unawaited_futures: error # Всегда резолвим Future
\ No newline at end of file
diff --git a/android/.gitignore b/android/.gitignore
deleted file mode 100644
index 6f56801..0000000
--- a/android/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
-**/*.keystore
-**/*.jks
diff --git a/android/app/build.gradle b/android/app/build.gradle
deleted file mode 100644
index 4540827..0000000
--- a/android/app/build.gradle
+++ /dev/null
@@ -1,83 +0,0 @@
-plugins {
- id "com.android.application"
- // START: FlutterFire Configuration
- id 'com.google.gms.google-services'
- id 'com.google.firebase.crashlytics'
- // END: FlutterFire Configuration
- id "kotlin-android"
- // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
- id "dev.flutter.flutter-gradle-plugin"
-}
-
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file("local.properties")
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader("UTF-8") { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
-if (flutterVersionCode == null) {
- flutterVersionCode = "1"
-}
-
-def flutterVersionName = localProperties.getProperty("flutter.versionName")
-if (flutterVersionName == null) {
- flutterVersionName = "1.0"
-}
-
-def keystoreProperties = new Properties()
-def keystorePropertiesFile = rootProject.file('key.properties')
-if (keystorePropertiesFile.exists()) {
- keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
-}
-
-android {
- namespace = "com.cinnabarflower.mnemo_cards"
- compileSdk = flutter.compileSdkVersion
- ndkVersion = flutter.ndkVersion
-
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-
- defaultConfig {
- applicationId = "com.cinnabarflower.mnemo_cards"
- // You can update the following values to match your application needs.
- // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
- minSdk = 25
- targetSdk = flutter.targetSdkVersion
- versionCode = flutterVersionCode.toInteger()
- versionName = flutterVersionName
- }
-
- signingConfigs {
- release {
- keyAlias keystoreProperties['keyAlias']
- keyPassword keystoreProperties['keyPassword']
- storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
- storePassword keystoreProperties['storePassword']
- }
- debug {
- keyAlias keystoreProperties['keyAlias']
- keyPassword keystoreProperties['keyPassword']
- storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
- storePassword keystoreProperties['storePassword']
- }
- }
-
- buildTypes {
- release {
- signingConfig signingConfigs.release
- }
- debug {
- signingConfig signingConfigs.release
- }
- }
-}
-
-flutter {
- source = "../.."
-}
diff --git a/android/app/google-services.json b/android/app/google-services.json
deleted file mode 100644
index 1b69ccc..0000000
--- a/android/app/google-services.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "project_info": {
- "project_number": "701767851968",
- "project_id": "mnemo-cards",
- "storage_bucket": "mnemo-cards.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:701767851968:android:6190df55346394732f7225",
- "android_client_info": {
- "package_name": "com.cinnabarflower.mnemo_cards"
- }
- },
- "oauth_client": [
- {
- "client_id": "701767851968-3jgootslus3ie76t682j4v7glletloud.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.cinnabarflower.mnemo_cards",
- "certificate_hash": "6df4f259b9c53ac01472c17df69e8c91494f3947"
- }
- },
- {
- "client_id": "701767851968-5e6v0b5humhj0iu22t21nb9dtgt4tjus.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.cinnabarflower.mnemo_cards",
- "certificate_hash": "49bb5b6863c9e6d8db43e7eb4d54796a300d87fe"
- }
- },
- {
- "client_id": "701767851968-vqvjgf1u79jg924inm25bfuv4dg41t2u.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "com.cinnabarflower.mnemo_cards",
- "certificate_hash": "19f45c4abc59f7ce5f22e84376273ee1ee19bdc2"
- }
- },
- {
- "client_id": "701767851968-bud97rud1d9qtqju96addn31nhm0oofu.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyBGn7PVVDX-o7WipivtuBjdoH5nYEPsHms"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "701767851968-bud97rud1d9qtqju96addn31nhm0oofu.apps.googleusercontent.com",
- "client_type": 3
- },
- {
- "client_id": "701767851968-8dqcmk706p08gujqbl2m9s4sq1aljibs.apps.googleusercontent.com",
- "client_type": 2,
- "ios_info": {
- "bundle_id": "com.cinnabarflower.mnemoCards"
- }
- }
- ]
- }
- }
- }
- ],
- "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index 399f698..0000000
--- a/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index cf05adf..0000000
--- a/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/kotlin/com/cinnabarflower/mnemo_cards/MainActivity.kt b/android/app/src/main/kotlin/com/cinnabarflower/mnemo_cards/MainActivity.kt
deleted file mode 100644
index 840a9e0..0000000
--- a/android/app/src/main/kotlin/com/cinnabarflower/mnemo_cards/MainActivity.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.cinnabarflower.mnemo_cards
-
-import io.flutter.embedding.android.FlutterActivity
-
-class MainActivity: FlutterActivity()
diff --git a/android/app/src/main/res/drawable-hdpi/android12splash.png b/android/app/src/main/res/drawable-hdpi/android12splash.png
deleted file mode 100644
index a950af6..0000000
Binary files a/android/app/src/main/res/drawable-hdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-hdpi/splash.png b/android/app/src/main/res/drawable-hdpi/splash.png
deleted file mode 100644
index a950af6..0000000
Binary files a/android/app/src/main/res/drawable-hdpi/splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-mdpi/android12splash.png b/android/app/src/main/res/drawable-mdpi/android12splash.png
deleted file mode 100644
index b8e69a5..0000000
Binary files a/android/app/src/main/res/drawable-mdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-mdpi/splash.png b/android/app/src/main/res/drawable-mdpi/splash.png
deleted file mode 100644
index b8e69a5..0000000
Binary files a/android/app/src/main/res/drawable-mdpi/splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/android/app/src/main/res/drawable-night-hdpi/android12splash.png
deleted file mode 100644
index a950af6..0000000
Binary files a/android/app/src/main/res/drawable-night-hdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/android/app/src/main/res/drawable-night-mdpi/android12splash.png
deleted file mode 100644
index b8e69a5..0000000
Binary files a/android/app/src/main/res/drawable-night-mdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
deleted file mode 100644
index aa97e95..0000000
Binary files a/android/app/src/main/res/drawable-night-xhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
deleted file mode 100644
index 1d18d62..0000000
Binary files a/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
deleted file mode 100644
index 6a284fd..0000000
Binary files a/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png
deleted file mode 100644
index 3107d37..0000000
Binary files a/android/app/src/main/res/drawable-v21/background.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index 3cc4948..0000000
--- a/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- -
-
-
- -
-
-
-
diff --git a/android/app/src/main/res/drawable-xhdpi/android12splash.png b/android/app/src/main/res/drawable-xhdpi/android12splash.png
deleted file mode 100644
index aa97e95..0000000
Binary files a/android/app/src/main/res/drawable-xhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png
deleted file mode 100644
index aa97e95..0000000
Binary files a/android/app/src/main/res/drawable-xhdpi/splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxhdpi/android12splash.png
deleted file mode 100644
index 1d18d62..0000000
Binary files a/android/app/src/main/res/drawable-xxhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png
deleted file mode 100644
index 1d18d62..0000000
Binary files a/android/app/src/main/res/drawable-xxhdpi/splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
deleted file mode 100644
index 6a284fd..0000000
Binary files a/android/app/src/main/res/drawable-xxxhdpi/android12splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash.png b/android/app/src/main/res/drawable-xxxhdpi/splash.png
deleted file mode 100644
index 6a284fd..0000000
Binary files a/android/app/src/main/res/drawable-xxxhdpi/splash.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
deleted file mode 100644
index 3107d37..0000000
Binary files a/android/app/src/main/res/drawable/background.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 3cc4948..0000000
--- a/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- -
-
-
- -
-
-
-
diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
deleted file mode 100644
index 6f591a2..0000000
Binary files a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
deleted file mode 100644
index b725052..0000000
Binary files a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
deleted file mode 100644
index 07bdd0c..0000000
Binary files a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
deleted file mode 100644
index e15861a..0000000
Binary files a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png and /dev/null differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
deleted file mode 100644
index 848e129..0000000
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png and /dev/null differ
diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml
deleted file mode 100644
index ba4b2ae..0000000
--- a/android/app/src/main/res/values-night-v31/styles.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index dbc9ea9..0000000
--- a/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml
deleted file mode 100644
index e437c38..0000000
--- a/android/app/src/main/res/values-v31/styles.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index 0d1fa8f..0000000
--- a/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml
deleted file mode 100644
index 8ec5168..0000000
--- a/android/app/src/main/res/xml/network_security_config.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index 399f698..0000000
--- a/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/android/build.gradle b/android/build.gradle
deleted file mode 100644
index d2ffbff..0000000
--- a/android/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-rootProject.buildDir = "../build"
-subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
- project.evaluationDependsOn(":app")
-}
-
-tasks.register("clean", Delete) {
- delete rootProject.buildDir
-}
diff --git a/android/gradle.properties b/android/gradle.properties
deleted file mode 100644
index 3b5b324..0000000
--- a/android/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/android/key.properties b/android/key.properties
deleted file mode 100644
index 1dde9f9..0000000
--- a/android/key.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-storePassword=345234
-keyPassword=345234
-keyAlias=upload
-storeFile=../../../../upload-keystore.jks
\ No newline at end of file
diff --git a/android/pepk.jar b/android/pepk.jar
deleted file mode 100644
index 5ffdd4c..0000000
Binary files a/android/pepk.jar and /dev/null differ
diff --git a/android/settings.gradle b/android/settings.gradle
deleted file mode 100644
index 85ec48a..0000000
--- a/android/settings.gradle
+++ /dev/null
@@ -1,43 +0,0 @@
-pluginManagement {
- def flutterSdkPath = {
- def properties = new Properties()
- file("local.properties").withInputStream { properties.load(it) }
- def flutterSdkPath = properties.getProperty("flutter.sdk")
- assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
- return flutterSdkPath
- }()
-
- includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
-
- repositories {
- google()
- mavenCentral()
- gradlePluginPortal()
- }
-
- // For yoo kassa
- buildscript {
- repositories {
- mavenCentral()
- maven {
- url = uri("https://storage.googleapis.com/r8-releases/raw")
- }
- }
- dependencies {
- classpath("com.android.tools:r8:8.3.37")
- }
- }
-}
-
-plugins {
- id "dev.flutter.flutter-plugin-loader" version "1.0.0"
- id "com.android.application" version "7.3.0" apply false
- // START: FlutterFire Configuration
- id "com.google.gms.google-services" version "4.3.15" apply false
- id "com.google.firebase.crashlytics" version "2.9.9" apply false
-
- // END: FlutterFire Configuration
- id "org.jetbrains.kotlin.android" version "1.9.10" apply false
-}
-
-include ":app"
diff --git a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
deleted file mode 100644
index 7cc6506..0000000
Binary files a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk and /dev/null differ
diff --git a/build_app.sh b/build_app.sh
deleted file mode 100644
index 2487f69..0000000
--- a/build_app.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-set -e -v
-cp ~/mnemo_cards/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ~/mnemo_cards_telegram_bot/apks/admin_app.apk
-
diff --git a/cerdo_1024x512.png b/cerdo_1024x512.png
deleted file mode 100644
index d7f024a..0000000
Binary files a/cerdo_1024x512.png and /dev/null differ
diff --git a/cerdo_512.png b/cerdo_512.png
deleted file mode 100644
index 12a16b8..0000000
Binary files a/cerdo_512.png and /dev/null differ
diff --git a/devtools_options.yaml b/devtools_options.yaml
deleted file mode 100644
index fa0b357..0000000
--- a/devtools_options.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-description: This file stores settings for Dart & Flutter DevTools.
-documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
-extensions:
diff --git a/firebase.json b/firebase.json
deleted file mode 100644
index 4d12b0d..0000000
--- a/firebase.json
+++ /dev/null
@@ -1 +0,0 @@
-{"flutter":{"platforms":{"android":{"default":{"projectId":"mnemo-cards","appId":"1:701767851968:android:6190df55346394732f7225","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"mnemo-cards","appId":"1:701767851968:ios:5c9040634eac8c152f7225","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"mnemo-cards","configurations":{"android":"1:701767851968:android:6190df55346394732f7225","ios":"1:701767851968:ios:5c9040634eac8c152f7225"}}}}}}
\ No newline at end of file
diff --git a/fonts/Nunito-VariableFont_wght.ttf b/fonts/Nunito-VariableFont_wght.ttf
deleted file mode 100644
index 0a00f63..0000000
Binary files a/fonts/Nunito-VariableFont_wght.ttf and /dev/null differ
diff --git a/funny_letters/build_web_debug.sh b/funny_letters/build_web_debug.sh
new file mode 100644
index 0000000..d43634b
--- /dev/null
+++ b/funny_letters/build_web_debug.sh
@@ -0,0 +1,2 @@
+flutter build web --profile --dart-define=Dart2jsOptimization=O0
+
diff --git a/funny_letters/codegen.sh b/funny_letters/codegen.sh
new file mode 100644
index 0000000..edcbc79
--- /dev/null
+++ b/funny_letters/codegen.sh
@@ -0,0 +1 @@
+flutter packages pub run build_runner build --delete-conflicting-outputs --verbose
\ No newline at end of file
diff --git a/funny_letters/lib/runner/ui/button.dart b/funny_letters/lib/runner/ui/button.dart
new file mode 100644
index 0000000..727d798
--- /dev/null
+++ b/funny_letters/lib/runner/ui/button.dart
@@ -0,0 +1,35 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+const Color borderGray = Color(0xffABABAB);
+
+class Button extends StatelessWidget {
+ final String asset;
+ final VoidCallback onTap;
+
+ const Button(this.asset, this.onTap);
+
+ @override
+ Widget build(BuildContext context) {
+ return GestureDetector(
+ onTap: onTap,
+ child: Container(
+ width: 110.w,
+ height: 60.h,
+ decoration: BoxDecoration(
+ color: Theme.of(context).scaffoldBackgroundColor,
+ border: Border.all(color: borderGray),
+ borderRadius: BorderRadius.circular(16.0),
+ ),
+ alignment: Alignment.center,
+ child: Image(
+ image: AssetImage(asset),
+ width: 29.w,
+ color: Theme.of(context).colorScheme.primary,
+ fit: BoxFit.scaleDown,
+ ),
+ ),
+ );
+ }
+}
diff --git a/funny_letters/run_web.sh b/funny_letters/run_web.sh
new file mode 100644
index 0000000..a363f6c
--- /dev/null
+++ b/funny_letters/run_web.sh
@@ -0,0 +1 @@
+dhttpd --path build/web --host 0.0.0.0 --port 8888
\ No newline at end of file
diff --git a/games/ads_example/assets/vast_player_new.html b/games/ads_example/assets/vast_player_new.html
new file mode 100644
index 0000000..763f8b4
--- /dev/null
+++ b/games/ads_example/assets/vast_player_new.html
@@ -0,0 +1,405 @@
+
+
+
+ Vast-Player Example
+
+
+
+
+
+
Загрузка рекламы...
+
+
Пропустить через: 5с
+
+
+
+
\ No newline at end of file
diff --git a/games/mnemo_cards_game_api/PROJECT_STRUCTURE.md b/games/mnemo_cards_game_api/PROJECT_STRUCTURE.md
new file mode 100644
index 0000000..d6d8990
--- /dev/null
+++ b/games/mnemo_cards_game_api/PROJECT_STRUCTURE.md
@@ -0,0 +1,148 @@
+# 📦 Flutter WebView Bridge — структура проекта
+
+Проект разделён на независимые пакеты (монорепозиторий с Melos), чтобы:
+
+- отделить зависимости между `host`, `web` и `payloads`;
+- изолировать доступ к данным (web видит только нужное);
+- упростить масштабирование и тестирование.
+
+---
+
+## 🗂️ Общая структура
+
+```
+├── games/
+│ ├── bridge_core/ # Общие типы и сериализация
+│ ├── payloads_shared/ # Payload'ы, общие для всех
+│ ├── payloads_host/ # Только для host-приложения
+│ ├── payloads_app1/ # Только для web_app1
+│ ├── host_app/ # Flutter Host App (с WebView)
+│ ├── web_app1/ # Flutter Web-приложение 1
+├── melos.yaml # Конфигурация монорепозитория
+```
+
+---
+
+## 📦 Описание пакетов
+
+### `bridge_core/`
+
+Содержит:
+
+- `BridgeMessage` — модель сообщения
+- `BridgePayload` — абстракция типа данных
+- `PayloadRegistry` — карта `"type"` → `fromJson`
+
+Используется **всеми** остальными пакетами.
+
+---
+
+### `payloads_shared/`
+
+Содержит payload'ы, используемые и в `host`, и в web-приложениях.
+Пример: `GetUserInfoPayload`, `PingPayload`.
+
+Импортируется и в `host_app`, и в `web_app1`, `web_app2`.
+
+---
+
+### `payloads_host/`
+
+Содержит payload'ы, специфичные для хост-приложения.
+Пример: `SecretAdminCommand`, `ShowNativeDialogPayload`.
+
+Импортируется **только в `host_app`**.
+
+---
+
+### `payloads_app1/`
+
+Содержит payload'ы, специфичные для web-приложения 1.
+Пример: `LoginRequestPayload`, `SubmitQuizPayload`.
+
+Импортируется **только в `web_app1`** и `host_app`.
+
+---
+
+### `host_app/`
+
+Flutter-приложение с WebView.
+
+- Имеет доступ ко всем `payloads_*` пакетам
+- Обрабатывает все события
+- Реализует `BridgeWebViewController`
+
+---
+
+### `web_app1/`
+
+Flutter Web-приложение, встроенное в WebView.
+
+- Импортирует только нужные `payloads_*`
+- Регистрирует только свои payload'ы
+- Не видит лишнего
+
+---
+
+## 🔐 Разделение доступа
+
+| Пакет | Видит payloads_shared | Видит payloads_host | Видит payloads_app1 |
+|---------------|------------------------|----------------------|----------------------|
+| host_app | ✅ | ✅ | ✅ |
+| web_app1 | ✅ | ❌ | ✅ |
+| web_app2 | ✅ | ❌ | ❌ |
+
+---
+
+## ⚙️ Melos
+
+Файл `melos.yaml` в корне:
+
+```yaml
+name: flutter_webview_bridge_repo
+packages:
+ - packages/**
+```
+
+Запуск:
+```bash
+melos bootstrap
+```
+
+---
+
+## 📥 Регистрация payload'ов
+
+Каждый payload-пакет содержит:
+
+```dart
+void registerPayloads() {
+ BridgePayload.register('type_name', (json) => MyPayload.fromJson(json));
+}
+```
+
+В `main()` у приложения:
+
+```dart
+void main() {
+ registerPayloads();
+ runApp(MyApp());
+}
+```
+
+---
+
+## 📌 Пример использования
+
+```dart
+// Web-приложение
+GetUserInfoPayload(fields: ['name']).toMessage().sendToHost();
+
+// Хост-приложение
+hostBridge.registerHandler('get_user_info', (msg) {
+ final payload = GetUserInfoPayload.fromJson(msg.data);
+ ...
+});
+```
+
+---
\ No newline at end of file
diff --git a/games/mnemo_cards_game_api/lib/src/app_binder.dart b/games/mnemo_cards_game_api/lib/src/app_binder.dart
new file mode 100644
index 0000000..192c694
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/app_binder.dart
@@ -0,0 +1,25 @@
+import 'package:mnemo_cards_game_api/mnemo_cards_game_api.dart';
+
+import 'game_data.dart';
+
+abstract class AppBinder {
+ /// Initialize the JavaScript environment
+ Future init();
+
+ /// Dispose the JavaScript environment
+ Future dispose();
+
+ Future sendEvent(GameEvent event);
+
+ Future get getGameData;
+
+ set gameData(T settings);
+
+ Stream get gameDataStream;
+
+ set gameSettings(GameSettings settings);
+
+ Future get getGameSettings;
+
+ Stream get gameSettingsStream;
+}
diff --git a/games/mnemo_cards_game_api/lib/src/app_binder_impl.dart b/games/mnemo_cards_game_api/lib/src/app_binder_impl.dart
new file mode 100644
index 0000000..9404633
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/app_binder_impl.dart
@@ -0,0 +1,268 @@
+// import 'dart:async';
+// import 'dart:convert';
+// import 'dart:convert';
+// import 'dart:typed_data';
+// import 'dart:js_interop' as js;
+//
+// import 'package:mnemo_cards_game_api/mnemo_cards_game_api.dart';
+//
+// import 'app_binder.dart';
+//
+// class AppBinderImpl implements AppBinder {
+// final _messageHandlers = >{};
+// bool _musicEnabled = true;
+// bool _soundEnabled = true;
+// bool _isDarkMode = false;
+//
+// @override
+// void initializeJavaScript() {
+// print('[AppBinder] Initializing JavaScript environment');
+//
+// // Set up the message handler for responses from the host app
+// js.context['handleMessageFromHost'] = (String message) {
+// print('[AppBinder] Received message from host: $message');
+// try {
+// final data = jsonDecode(message);
+// final type = data['type'] as String;
+// print('[AppBinder] Message type: $type');
+//
+// final completer = _messageHandlers[type];
+// if (completer != null) {
+// print('[AppBinder] Found handler for message type: $type');
+// _messageHandlers.remove(type);
+// completer.complete(data);
+// } else {
+// print(
+// '[AppBinder] Warning: No handler found for message type: $type',
+// );
+// }
+// } catch (e) {
+// print('[AppBinder] Error handling message from host: $e');
+// print('[AppBinder] Message was: $message');
+// }
+// };
+//
+// // Define the function that the host app will inject
+// if (js.context['sendMessageToHost'] == null) {
+// print('[AppBinder] Setting up default sendMessageToHost');
+// js.context['sendMessageToHost'] = (String message) {
+// print(
+// '[AppBinder] Warning: Using default sendMessageToHost implementation',
+// );
+// print('[AppBinder] Message would have been: $message');
+// };
+// } else {
+// print('[AppBinder] sendMessageToHost is already defined by host app');
+// }
+// }
+//
+// Future _sendMessage(String type, Map data) async {
+// print('[AppBinder] Sending message type: $type');
+// print('[AppBinder] Message data: $data');
+//
+// final completer = Completer();
+// _messageHandlers[type] = completer;
+//
+// final request = jsonEncode({'type': type, 'data': data});
+//
+// print('[AppBinder] Sending request to host: $request');
+//
+// // Send message to host app
+// js.context.callMethod('sendMessageToHost', [request]);
+//
+// print('[AppBinder] Waiting for response from host...');
+// final response = await completer.future;
+// print('[AppBinder] Received response: $response');
+//
+// return response;
+// }
+//
+// @override
+// Future playWord(String word, {String? lang}) async {
+// if (!_soundEnabled) {
+// print('[AppBinder] Sound is disabled, skipping word playback');
+// return;
+// }
+//
+// print('[AppBinder] Playing word: $word, language: $lang');
+// try {
+// final Map args = {
+// 'word': word,
+// if (lang != null) 'lang': lang,
+// };
+// await _sendMessage('playWord', args);
+// print('[AppBinder] Successfully played word: $word');
+// } catch (e) {
+// print('[AppBinder] Error playing word: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future loadFileBytes(String path) async {
+// print('[AppBinder] Loading file bytes from: $path');
+// try {
+// final result = await _sendMessage('loadFileBytes', {'path': path});
+//
+// if (result['error'] != null) {
+// print('[AppBinder] Error loading file bytes: ${result['error']}');
+// throw Exception(result['error']);
+// }
+//
+// final bytes = base64Decode(result['data']);
+// print('[AppBinder] Successfully loaded ${bytes.length} bytes');
+// return bytes;
+// } catch (e) {
+// print('[AppBinder] Error loading file bytes: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future getCustomBackground(String word) async {
+// print('[AppBinder] Getting custom background for word: $word');
+// try {
+// final result = await _sendMessage('getCustomBackground', {'word': word});
+// final background = result['data'] as String?;
+// print('[AppBinder] Custom background result: $background');
+// return background;
+// } catch (e) {
+// print('[AppBinder] Error getting custom background: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future loadSettings() async {
+// print('[AppBinder] Loading settings');
+// try {
+// final result = await _sendMessage('loadSettings', {});
+//
+// if (result['error'] != null) {
+// print('[AppBinder] Error in settings response: ${result['error']}');
+// throw Exception(result['error']);
+// }
+//
+// final data = result['data'] as Map;
+// print('[AppBinder] Received settings: $data');
+//
+// // Update local states
+// _musicEnabled = data['musicEnabled'] ?? true;
+// _soundEnabled = data['soundEnabled'] ?? true;
+// _isDarkMode = data['isDarkMode'] ?? false;
+//
+// return GameSettings.fromJson(data);
+// } catch (e) {
+// print('[AppBinder] Error loading settings: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future> loadWordsWithTranslations() async {
+// print('[AppBinder] Loading words with translations');
+// try {
+// final result = await _sendMessage('loadWordsWithTranslations', {});
+//
+// if (result['error'] != null) {
+// print('[AppBinder] Error in words response: ${result['error']}');
+// throw Exception(result['error']);
+// }
+//
+// final List data = result['data'] as List;
+// print('[AppBinder] Received ${data.length} words');
+// final words = data
+// .map(
+// (item) =>
+// WordWithTranslation.fromJson(item as Map),
+// )
+// .toList();
+// print('[AppBinder] Words loaded: ${words.map((w) => w.word).join(', ')}');
+// return words;
+// } catch (e) {
+// print('[AppBinder] Error loading words with translations: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future setMusicEnabled(bool enabled) async {
+// print('[AppBinder] Setting music enabled: $enabled');
+// try {
+// await _sendMessage('setMusicEnabled', {'enabled': enabled});
+// _musicEnabled = enabled;
+// print('[AppBinder] Successfully set music enabled: $enabled');
+// } catch (e) {
+// print('[AppBinder] Error setting music enabled: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future setSoundEnabled(bool enabled) async {
+// print('[AppBinder] Setting sound enabled: $enabled');
+// try {
+// await _sendMessage('setSoundEnabled', {'enabled': enabled});
+// _soundEnabled = enabled;
+// print('[AppBinder] Successfully set sound enabled: $enabled');
+// } catch (e) {
+// print('[AppBinder] Error setting sound enabled: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future isMusicEnabled() async {
+// print('[AppBinder] Getting music enabled state');
+// try {
+// final result = await _sendMessage('getMusicEnabled', {});
+// _musicEnabled = result['data']['enabled'] as bool;
+// print('[AppBinder] Music enabled: $_musicEnabled');
+// return _musicEnabled;
+// } catch (e) {
+// print('[AppBinder] Error getting music enabled state: $e');
+// return _musicEnabled; // Return cached value on error
+// }
+// }
+//
+// @override
+// Future isSoundEnabled() async {
+// print('[AppBinder] Getting sound enabled state');
+// try {
+// final result = await _sendMessage('getSoundEnabled', {});
+// _soundEnabled = result['data']['enabled'] as bool;
+// print('[AppBinder] Sound enabled: $_soundEnabled');
+// return _soundEnabled;
+// } catch (e) {
+// print('[AppBinder] Error getting sound enabled state: $e');
+// return _soundEnabled; // Return cached value on error
+// }
+// }
+//
+// @override
+// Future setDarkMode(bool enabled) async {
+// print('[AppBinder] Setting dark mode: $enabled');
+// try {
+// await _sendMessage('setDarkMode', {'enabled': enabled});
+// _isDarkMode = enabled;
+// print('[AppBinder] Successfully set dark mode: $enabled');
+// } catch (e) {
+// print('[AppBinder] Error setting dark mode: $e');
+// rethrow;
+// }
+// }
+//
+// @override
+// Future isDarkMode() async {
+// print('[AppBinder] Getting dark mode state');
+// try {
+// final result = await _sendMessage('getDarkMode', {});
+// _isDarkMode = result['data']['enabled'] as bool;
+// print('[AppBinder] Dark mode: $_isDarkMode');
+// return _isDarkMode;
+// } catch (e) {
+// print('[AppBinder] Error getting dark mode state: $e');
+// return _isDarkMode; // Return cached value on error
+// }
+// }
+// }
diff --git a/games/mnemo_cards_game_api/lib/src/funny_letters_game_data.dart b/games/mnemo_cards_game_api/lib/src/funny_letters_game_data.dart
new file mode 100644
index 0000000..47471ab
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/funny_letters_game_data.dart
@@ -0,0 +1,5 @@
+import 'package:mnemo_cards_game_api/src/game_data.dart';
+
+class FunnyLettersGameData implements GameData {
+
+}
\ No newline at end of file
diff --git a/games/mnemo_cards_game_api/lib/src/game_data.dart b/games/mnemo_cards_game_api/lib/src/game_data.dart
new file mode 100644
index 0000000..82b0b64
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/game_data.dart
@@ -0,0 +1 @@
+abstract class GameData {}
diff --git a/games/mnemo_cards_game_api/lib/src/game_page.dart b/games/mnemo_cards_game_api/lib/src/game_page.dart
new file mode 100644
index 0000000..3356a74
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/game_page.dart
@@ -0,0 +1,154 @@
+import 'dart:developer';
+import 'package:flutter/material.dart';
+// import 'package:flutter_screenutil/flutter_screenutil.dart';
+// import 'package:url_launcher/url_launcher.dart';
+import 'package:webview_flutter/webview_flutter.dart';
+
+class WebViewPage extends StatefulWidget {
+ final String url;
+ final String? title;
+ final String? returnUrl;
+ final VoidCallback? onPop;
+ final bool safeArea;
+ final bool setupToken;
+
+ const WebViewPage({
+ required this.url,
+ this.onPop,
+ this.returnUrl,
+ this.title,
+ this.safeArea = false,
+ this.setupToken = false,
+ });
+
+ @override
+ State createState() => _WebViewPageState();
+}
+
+class _WebViewPageState extends State with WidgetsBindingObserver {
+ bool canPop = false;
+ late final WebViewController controller;
+ bool _isBlank = false;
+
+ void _onPop() {
+ if (widget.onPop != null) {
+ widget.onPop!();
+ }
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ WidgetsBinding.instance.addObserver(this);
+
+ controller = WebViewController()
+ ..setJavaScriptMode(JavaScriptMode.unrestricted)
+ ..setBackgroundColor(Colors.white)
+ ..setNavigationDelegate(
+ NavigationDelegate(
+ onNavigationRequest: (r) {
+ final u = Uri.parse(r.url);
+ if (u.scheme != 'http' && u.scheme != 'https') {
+ _handleDeeplink(u);
+ return NavigationDecision.prevent;
+ }
+ return NavigationDecision.navigate;
+ },
+ onPageStarted: (u) async {
+ // если вернулись на returnUrl
+ if (widget.returnUrl != null && u.contains(widget.returnUrl!)) {
+ _popAndClose();
+ }
+ // подставляем токен
+ if (widget.setupToken) {
+ final token = await _userToken();
+ if (token != null) {
+ final uri = Uri.parse(widget.url);
+ final host = '${uri.scheme}://${uri.host}';
+ controller.runJavaScript('''
+ window.getUnityToken = ()=>'$token';
+ window.unityData={targetUrl:"$host"};
+ function ExitGame(){Flutter.postMessage('exitGame');}
+ ''');
+ }
+ }
+ },
+ ),
+ )
+ ..loadRequest(Uri.parse(widget.url));
+ }
+
+ @override
+ void didChangeAppLifecycleState(AppLifecycleState state) {
+ super.didChangeAppLifecycleState(state);
+
+ if ((state == AppLifecycleState.paused || state == AppLifecycleState.inactive) && mounted) {
+ // при уходе в фон — грузим пустую страницу, чтобы сразу остановить звук
+ controller.loadRequest(Uri.parse('about:blank'));
+ _isBlank = true;
+ }
+
+ if (state == AppLifecycleState.resumed && mounted) {
+ // при возврате — восстанавливаем исходный URL
+ if (_isBlank) {
+ controller.loadRequest(Uri.parse(widget.url));
+ _isBlank = false;
+ }
+ }
+ }
+
+ Future _userToken() async {}
+
+ Future _handleDeeplink(Uri uri) async {}
+
+ Future _popAndClose() async {
+ if (!canPop) {
+ setState(() => canPop = true);
+
+ // очищаем WebView
+ await controller.loadRequest(Uri.parse('about:blank'));
+ await Future.wait([
+ controller.clearCache(),
+ controller.clearLocalStorage(),
+ controller.removeJavaScriptChannel('Flutter'),
+ ]);
+
+ _onPop();
+ await Future.delayed(const Duration(milliseconds: 250));
+ // AutoRouter.of(context).parent()?.maybePop(true);
+ }
+ }
+
+ @override
+ void dispose() {
+ // на всякий случай — "убиваем" WebView перед уничтожением
+ controller.loadRequest(Uri.parse('about:blank'));
+ WidgetsBinding.instance.removeObserver(this);
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return PopScope(
+ canPop: canPop,
+ onPopInvokedWithResult: (didPop, _) async {
+ if (!canPop) {
+ setState(() => canPop = true);
+ await controller.loadRequest(Uri.parse('about:blank'));
+ _onPop();
+ await Future.delayed(const Duration(milliseconds: 250));
+ // AutoRouter.of(context).back();
+ }
+ },
+ child: SafeArea(
+ child: Scaffold(
+ body: SafeArea(
+ top: widget.safeArea,
+ bottom: widget.safeArea,
+ child: WebViewWidget(controller: controller),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/games/mnemo_cards_game_api/lib/src/game_theme.dart b/games/mnemo_cards_game_api/lib/src/game_theme.dart
new file mode 100644
index 0000000..6fad57d
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/game_theme.dart
@@ -0,0 +1,37 @@
+import 'package:flutter/material.dart';
+
+class GameSettings {
+ final bool musicEnabled;
+ final bool soundEnabled;
+ final GameThemeData themeData;
+
+ GameSettings({
+ this.musicEnabled = true,
+ this.soundEnabled = true,
+ required this.themeData,
+ });
+
+ factory GameSettings.fromJson(Map json) {
+ return GameSettings(
+ musicEnabled: json['musicEnabled'] ?? true,
+ soundEnabled: json['soundEnabled'] ?? true,
+ themeData: GameThemeData(
+ brightness: json['isDarkMode'] == true
+ ? Brightness.dark
+ : Brightness.light,
+ ),
+ );
+ }
+
+ Map toJson() => {
+ 'musicEnabled': musicEnabled,
+ 'soundEnabled': soundEnabled,
+ 'isDarkMode': themeData.brightness == Brightness.dark,
+ };
+}
+
+class GameThemeData {
+ final Brightness brightness;
+
+ const GameThemeData({required this.brightness});
+}
diff --git a/games/mnemo_cards_game_api/lib/src/theme.dart b/games/mnemo_cards_game_api/lib/src/theme.dart
new file mode 100644
index 0000000..f33cb29
--- /dev/null
+++ b/games/mnemo_cards_game_api/lib/src/theme.dart
@@ -0,0 +1,20 @@
+import 'package:flutter/material.dart';
+import 'package:mnemo_cards_game_api/mnemo_cards_game_api.dart';
+
+extension ThemeDataExtensions on GameThemeData {
+ ThemeData toMaterialTheme() {
+ return brightness == Brightness.light
+ ? ThemeData.light().copyWith(
+ colorScheme: ColorScheme.fromSwatch(
+ backgroundColor: Colors.white,
+ brightness: Brightness.light,
+ ),
+ )
+ : ThemeData.dark().copyWith(
+ colorScheme: ColorScheme.fromSwatch(
+ backgroundColor: Colors.white,
+ brightness: Brightness.light,
+ ),
+ );
+ }
+}
diff --git a/games/mnemo_cards_web_bridge/lib/src/web_app_bridget.dart b/games/mnemo_cards_web_bridge/lib/src/web_app_bridget.dart
new file mode 100644
index 0000000..3d9706a
--- /dev/null
+++ b/games/mnemo_cards_web_bridge/lib/src/web_app_bridget.dart
@@ -0,0 +1,16 @@
+abstract interface class WebAppBridget {
+ /// Returns the current URL of the web application.
+ String getCurrentUrl();
+
+ /// Navigates to the specified URL.
+ void navigateTo(String url);
+
+ /// Reloads the current page.
+ void reloadPage();
+
+ /// Returns the title of the current page.
+ String getPageTitle();
+
+ /// Sets the title of the current page.
+ void setPageTitle(String title);
+}
\ No newline at end of file
diff --git a/codegen.sh b/games/packages/payloads_shared/codegen.sh
similarity index 100%
rename from codegen.sh
rename to games/packages/payloads_shared/codegen.sh
diff --git a/games/packages/payloads_shared/lib/src/payloads/user_cards_payload.dart b/games/packages/payloads_shared/lib/src/payloads/user_cards_payload.dart
new file mode 100644
index 0000000..bb56ded
--- /dev/null
+++ b/games/packages/payloads_shared/lib/src/payloads/user_cards_payload.dart
@@ -0,0 +1,77 @@
+import 'package:bridge_core/bridge_core.dart';
+import 'package:json_annotation/json_annotation.dart';
+import 'package:copy_with_extension/copy_with_extension.dart';
+
+part 'user_cards_payload.g.dart';
+
+@CopyWith()
+@JsonSerializable()
+class UserCardsRequestPayload extends BridgePayload {
+ @JsonKey(name: 'pack_ids')
+ final List? packIds;
+ @JsonKey(name: 'card_ids')
+ final List? cardIds;
+ @JsonKey(name: 'original_words')
+ final List? originalWords;
+ @JsonKey(name: 'translation_words')
+ final List? translationWords;
+
+ const UserCardsRequestPayload({
+ this.packIds,
+ this.cardIds,
+ this.originalWords,
+ this.translationWords,
+ });
+
+ @override
+ Map toJson() => _$UserCardsRequestPayloadToJson(this);
+
+ @override
+ String get type => 'user_cards_request_payload';
+}
+
+@CopyWith()
+@JsonSerializable()
+class UserCardsPayload extends BridgePayload {
+ @JsonKey(name: 'cards')
+ final List gameCards;
+
+ UserCardsPayload({required this.gameCards});
+
+ @override
+ Map toJson() => _$UserCardsPayloadToJson(this);
+
+ @override
+ String get type => 'user_cards_payload';
+}
+
+@JsonSerializable()
+@CopyWith()
+class GameCard {
+ final int id;
+ final String? image;
+ final String? mnemo;
+ final String? original;
+ final String? translation;
+ final String? transcription;
+ final String? imageBack;
+ final String? transcriptionMnemo;
+ final String? back;
+
+ const GameCard({
+ required this.id,
+ required this.mnemo,
+ required this.original,
+ required this.translation,
+ required this.transcription,
+ this.transcriptionMnemo,
+ this.image,
+ this.imageBack,
+ this.back,
+ });
+
+ factory GameCard.fromJson(Map json) =>
+ _$GameCardFromJson(json);
+
+ Map toJson() => _$GameCardToJson(this);
+}
diff --git a/icons/back.png b/icons/back.png
deleted file mode 100644
index 078e97b..0000000
Binary files a/icons/back.png and /dev/null differ
diff --git a/icons/cards.png b/icons/cards.png
deleted file mode 100644
index 387b81c..0000000
Binary files a/icons/cards.png and /dev/null differ
diff --git a/icons/chat.png b/icons/chat.png
deleted file mode 100644
index 06990a2..0000000
Binary files a/icons/chat.png and /dev/null differ
diff --git a/icons/clock.png b/icons/clock.png
deleted file mode 100644
index c57fc40..0000000
Binary files a/icons/clock.png and /dev/null differ
diff --git a/icons/crown.png b/icons/crown.png
deleted file mode 100644
index 8b8f9d7..0000000
Binary files a/icons/crown.png and /dev/null differ
diff --git a/icons/down.png b/icons/down.png
deleted file mode 100644
index 581d80d..0000000
Binary files a/icons/down.png and /dev/null differ
diff --git a/icons/exit.png b/icons/exit.png
deleted file mode 100644
index 915ad08..0000000
Binary files a/icons/exit.png and /dev/null differ
diff --git a/icons/gift.png b/icons/gift.png
deleted file mode 100644
index f1cfa5d..0000000
Binary files a/icons/gift.png and /dev/null differ
diff --git a/icons/google.png b/icons/google.png
deleted file mode 100644
index d626325..0000000
Binary files a/icons/google.png and /dev/null differ
diff --git a/icons/heart.png b/icons/heart.png
deleted file mode 100644
index 89331b2..0000000
Binary files a/icons/heart.png and /dev/null differ
diff --git a/icons/heart_fill.png b/icons/heart_fill.png
deleted file mode 100644
index 842ad28..0000000
Binary files a/icons/heart_fill.png and /dev/null differ
diff --git a/icons/mic_off.png b/icons/mic_off.png
deleted file mode 100644
index e147ad5..0000000
Binary files a/icons/mic_off.png and /dev/null differ
diff --git a/icons/mic_on.png b/icons/mic_on.png
deleted file mode 100644
index 54150be..0000000
Binary files a/icons/mic_on.png and /dev/null differ
diff --git a/icons/next.png b/icons/next.png
deleted file mode 100644
index 66ed80b..0000000
Binary files a/icons/next.png and /dev/null differ
diff --git a/icons/profile.png b/icons/profile.png
deleted file mode 100644
index b4cd411..0000000
Binary files a/icons/profile.png and /dev/null differ
diff --git a/icons/settings.png b/icons/settings.png
deleted file mode 100644
index 7ac7dbe..0000000
Binary files a/icons/settings.png and /dev/null differ
diff --git a/icons/shuffle.png b/icons/shuffle.png
deleted file mode 100644
index 7ec9a54..0000000
Binary files a/icons/shuffle.png and /dev/null differ
diff --git a/icons/skull.png b/icons/skull.png
deleted file mode 100644
index 6ec7283..0000000
Binary files a/icons/skull.png and /dev/null differ
diff --git a/icons/small_circle.png b/icons/small_circle.png
deleted file mode 100644
index 058e19b..0000000
Binary files a/icons/small_circle.png and /dev/null differ
diff --git a/icons/sound_off.png b/icons/sound_off.png
deleted file mode 100644
index 40cd041..0000000
Binary files a/icons/sound_off.png and /dev/null differ
diff --git a/icons/sound_on.png b/icons/sound_on.png
deleted file mode 100644
index 263a078..0000000
Binary files a/icons/sound_on.png and /dev/null differ
diff --git a/icons/tg.png b/icons/tg.png
deleted file mode 100644
index c3097fb..0000000
Binary files a/icons/tg.png and /dev/null differ
diff --git a/icons/view.png b/icons/view.png
deleted file mode 100644
index 73be8f0..0000000
Binary files a/icons/view.png and /dev/null differ
diff --git a/images_gen.sh b/images_gen.sh
deleted file mode 100644
index 03500e2..0000000
--- a/images_gen.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-dart run flutter_native_splash:create
-dart run flutter_launcher_icons
\ No newline at end of file
diff --git a/ios/.gitignore b/ios/.gitignore
deleted file mode 100644
index 7a7f987..0000000
--- a/ios/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-**/dgph
-*.mode1v3
-*.mode2v3
-*.moved-aside
-*.pbxuser
-*.perspectivev3
-**/*sync/
-.sconsign.dblite
-.tags*
-**/.vagrant/
-**/DerivedData/
-Icon?
-**/Pods/
-**/.symlinks/
-profile
-xcuserdata
-**/.generated/
-Flutter/App.framework
-Flutter/Flutter.framework
-Flutter/Flutter.podspec
-Flutter/Generated.xcconfig
-Flutter/ephemeral/
-Flutter/app.flx
-Flutter/app.zip
-Flutter/flutter_assets/
-Flutter/flutter_export_environment.sh
-ServiceDefinitions.json
-Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!default.mode1v3
-!default.mode2v3
-!default.pbxuser
-!default.perspectivev3
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
deleted file mode 100644
index 163000d..0000000
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 14.0
-
-
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
deleted file mode 100644
index ec97fc6..0000000
--- a/ios/Flutter/Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "Generated.xcconfig"
diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
deleted file mode 100644
index c4855bf..0000000
--- a/ios/Flutter/Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "Generated.xcconfig"
diff --git a/ios/Podfile b/ios/Podfile
deleted file mode 100644
index 003e055..0000000
--- a/ios/Podfile
+++ /dev/null
@@ -1,49 +0,0 @@
-# source 'https://github.com/CocoaPods/Specs.git'
-# source 'https://git.yoomoney.ru/scm/sdk/cocoa-pod-specs.git'
-
-
-# Uncomment this line to define a global platform for your project
-platform :ios, '14.0'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
- 'Debug' => :debug,
- 'Profile' => :release,
- 'Release' => :release,
-}
-
-def flutter_root
- generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
- unless File.exist?(generated_xcode_build_settings_path)
- raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
- end
-
- File.foreach(generated_xcode_build_settings_path) do |line|
- matches = line.match(/FLUTTER_ROOT\=(.*)/)
- return matches[1].strip if matches
- end
- raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_ios_podfile_setup
-
-target 'Runner' do
- use_frameworks! :linkage => :static
-# use_frameworks!
- use_modular_headers!
-
- flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerTests' do
- inherit! :search_paths
- end
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- flutter_additional_ios_build_settings(target)
- end
-end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
deleted file mode 100644
index 1893d20..0000000
--- a/ios/Podfile.lock
+++ /dev/null
@@ -1,1503 +0,0 @@
-PODS:
- - abseil/algorithm (1.20240116.2):
- - abseil/algorithm/algorithm (= 1.20240116.2)
- - abseil/algorithm/container (= 1.20240116.2)
- - abseil/algorithm/algorithm (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/algorithm/container (1.20240116.2):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/base (1.20240116.2):
- - abseil/base/atomic_hook (= 1.20240116.2)
- - abseil/base/base (= 1.20240116.2)
- - abseil/base/base_internal (= 1.20240116.2)
- - abseil/base/config (= 1.20240116.2)
- - abseil/base/core_headers (= 1.20240116.2)
- - abseil/base/cycleclock_internal (= 1.20240116.2)
- - abseil/base/dynamic_annotations (= 1.20240116.2)
- - abseil/base/endian (= 1.20240116.2)
- - abseil/base/errno_saver (= 1.20240116.2)
- - abseil/base/fast_type_id (= 1.20240116.2)
- - abseil/base/log_severity (= 1.20240116.2)
- - abseil/base/malloc_internal (= 1.20240116.2)
- - abseil/base/no_destructor (= 1.20240116.2)
- - abseil/base/nullability (= 1.20240116.2)
- - abseil/base/prefetch (= 1.20240116.2)
- - abseil/base/pretty_function (= 1.20240116.2)
- - abseil/base/raw_logging_internal (= 1.20240116.2)
- - abseil/base/spinlock_wait (= 1.20240116.2)
- - abseil/base/strerror (= 1.20240116.2)
- - abseil/base/throw_delegate (= 1.20240116.2)
- - abseil/base/atomic_hook (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/base/base (1.20240116.2):
- - abseil/base/atomic_hook
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/cycleclock_internal
- - abseil/base/dynamic_annotations
- - abseil/base/log_severity
- - abseil/base/nullability
- - abseil/base/raw_logging_internal
- - abseil/base/spinlock_wait
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/base/base_internal (1.20240116.2):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/base/config (1.20240116.2):
- - abseil/xcprivacy
- - abseil/base/core_headers (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/base/cycleclock_internal (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/base/dynamic_annotations (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/base/endian (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/xcprivacy
- - abseil/base/errno_saver (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/base/fast_type_id (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/base/log_severity (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/base/malloc_internal (1.20240116.2):
- - abseil/base/base
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/base/no_destructor (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/base/nullability (1.20240116.2):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/base/prefetch (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/base/pretty_function (1.20240116.2):
- - abseil/xcprivacy
- - abseil/base/raw_logging_internal (1.20240116.2):
- - abseil/base/atomic_hook
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/errno_saver
- - abseil/base/log_severity
- - abseil/xcprivacy
- - abseil/base/spinlock_wait (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/core_headers
- - abseil/base/errno_saver
- - abseil/xcprivacy
- - abseil/base/strerror (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/errno_saver
- - abseil/xcprivacy
- - abseil/base/throw_delegate (1.20240116.2):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/cleanup/cleanup (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/cleanup/cleanup_internal
- - abseil/xcprivacy
- - abseil/cleanup/cleanup_internal (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/core_headers
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/container/common (1.20240116.2):
- - abseil/meta/type_traits
- - abseil/types/optional
- - abseil/xcprivacy
- - abseil/container/common_policy_traits (1.20240116.2):
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/container/compressed_tuple (1.20240116.2):
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/container/container_memory (1.20240116.2):
- - abseil/base/config
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/container/fixed_array (1.20240116.2):
- - abseil/algorithm/algorithm
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/throw_delegate
- - abseil/container/compressed_tuple
- - abseil/memory/memory
- - abseil/xcprivacy
- - abseil/container/flat_hash_map (1.20240116.2):
- - abseil/algorithm/container
- - abseil/base/core_headers
- - abseil/container/container_memory
- - abseil/container/hash_function_defaults
- - abseil/container/raw_hash_map
- - abseil/memory/memory
- - abseil/xcprivacy
- - abseil/container/flat_hash_set (1.20240116.2):
- - abseil/algorithm/container
- - abseil/base/core_headers
- - abseil/container/container_memory
- - abseil/container/hash_function_defaults
- - abseil/container/raw_hash_set
- - abseil/memory/memory
- - abseil/xcprivacy
- - abseil/container/hash_function_defaults (1.20240116.2):
- - abseil/base/config
- - abseil/hash/hash
- - abseil/strings/cord
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/container/hash_policy_traits (1.20240116.2):
- - abseil/container/common_policy_traits
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/container/hashtable_debug_hooks (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/container/hashtablez_sampler (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/debugging/stacktrace
- - abseil/memory/memory
- - abseil/profiling/exponential_biased
- - abseil/profiling/sample_recorder
- - abseil/synchronization/synchronization
- - abseil/time/time
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/container/inlined_vector (1.20240116.2):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/container/inlined_vector_internal
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/container/inlined_vector_internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/container/compressed_tuple
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/container/layout (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/debugging/demangle_internal
- - abseil/meta/type_traits
- - abseil/strings/strings
- - abseil/types/span
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/container/raw_hash_map (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/container/container_memory
- - abseil/container/raw_hash_set
- - abseil/xcprivacy
- - abseil/container/raw_hash_set (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/endian
- - abseil/base/prefetch
- - abseil/base/raw_logging_internal
- - abseil/container/common
- - abseil/container/compressed_tuple
- - abseil/container/container_memory
- - abseil/container/hash_policy_traits
- - abseil/container/hashtable_debug_hooks
- - abseil/container/hashtablez_sampler
- - abseil/hash/hash
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/crc/cpu_detect (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/crc/crc32c (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/prefetch
- - abseil/crc/cpu_detect
- - abseil/crc/crc_internal
- - abseil/crc/non_temporal_memcpy
- - abseil/strings/str_format
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/crc/crc_cord_state (1.20240116.2):
- - abseil/base/config
- - abseil/crc/crc32c
- - abseil/numeric/bits
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/crc/crc_internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/prefetch
- - abseil/base/raw_logging_internal
- - abseil/crc/cpu_detect
- - abseil/memory/memory
- - abseil/numeric/bits
- - abseil/xcprivacy
- - abseil/crc/non_temporal_arm_intrinsics (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/crc/non_temporal_memcpy (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/crc/non_temporal_arm_intrinsics
- - abseil/xcprivacy
- - abseil/debugging/debugging_internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/errno_saver
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/debugging/demangle_internal (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/debugging/stacktrace (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/raw_logging_internal
- - abseil/debugging/debugging_internal
- - abseil/xcprivacy
- - abseil/debugging/symbolize (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/malloc_internal
- - abseil/base/raw_logging_internal
- - abseil/debugging/debugging_internal
- - abseil/debugging/demangle_internal
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/flags/commandlineflag (1.20240116.2):
- - abseil/base/config
- - abseil/base/fast_type_id
- - abseil/flags/commandlineflag_internal
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/xcprivacy
- - abseil/flags/commandlineflag_internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/fast_type_id
- - abseil/xcprivacy
- - abseil/flags/config (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/flags/path_util
- - abseil/flags/program_name
- - abseil/strings/strings
- - abseil/synchronization/synchronization
- - abseil/xcprivacy
- - abseil/flags/flag (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/flags/config
- - abseil/flags/flag_internal
- - abseil/flags/reflection
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/flags/flag_internal (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/flags/commandlineflag
- - abseil/flags/commandlineflag_internal
- - abseil/flags/config
- - abseil/flags/marshalling
- - abseil/flags/reflection
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/strings/strings
- - abseil/synchronization/synchronization
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/flags/marshalling (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/log_severity
- - abseil/numeric/int128
- - abseil/strings/str_format
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/xcprivacy
- - abseil/flags/path_util (1.20240116.2):
- - abseil/base/config
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/flags/private_handle_accessor (1.20240116.2):
- - abseil/base/config
- - abseil/flags/commandlineflag
- - abseil/flags/commandlineflag_internal
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/flags/program_name (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/flags/path_util
- - abseil/strings/strings
- - abseil/synchronization/synchronization
- - abseil/xcprivacy
- - abseil/flags/reflection (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/no_destructor
- - abseil/container/flat_hash_map
- - abseil/flags/commandlineflag
- - abseil/flags/commandlineflag_internal
- - abseil/flags/config
- - abseil/flags/private_handle_accessor
- - abseil/strings/strings
- - abseil/synchronization/synchronization
- - abseil/xcprivacy
- - abseil/functional/any_invocable (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/functional/bind_front (1.20240116.2):
- - abseil/base/base_internal
- - abseil/container/compressed_tuple
- - abseil/meta/type_traits
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/functional/function_ref (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/core_headers
- - abseil/functional/any_invocable
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/hash/city (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/xcprivacy
- - abseil/hash/hash (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/container/fixed_array
- - abseil/functional/function_ref
- - abseil/hash/city
- - abseil/hash/low_level_hash
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/types/variant
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/hash/low_level_hash (1.20240116.2):
- - abseil/base/config
- - abseil/base/endian
- - abseil/base/prefetch
- - abseil/numeric/int128
- - abseil/xcprivacy
- - abseil/memory (1.20240116.2):
- - abseil/memory/memory (= 1.20240116.2)
- - abseil/memory/memory (1.20240116.2):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/meta (1.20240116.2):
- - abseil/meta/type_traits (= 1.20240116.2)
- - abseil/meta/type_traits (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/numeric/bits (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/numeric/int128 (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/numeric/bits
- - abseil/xcprivacy
- - abseil/numeric/representation (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/profiling/exponential_biased (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/xcprivacy
- - abseil/profiling/sample_recorder (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/synchronization/synchronization
- - abseil/time/time
- - abseil/xcprivacy
- - abseil/random/bit_gen_ref (1.20240116.2):
- - abseil/base/core_headers
- - abseil/base/fast_type_id
- - abseil/meta/type_traits
- - abseil/random/internal/distribution_caller
- - abseil/random/internal/fast_uniform_bits
- - abseil/random/random
- - abseil/xcprivacy
- - abseil/random/distributions (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/random/internal/distribution_caller
- - abseil/random/internal/fast_uniform_bits
- - abseil/random/internal/fastmath
- - abseil/random/internal/generate_real
- - abseil/random/internal/iostream_state_saver
- - abseil/random/internal/traits
- - abseil/random/internal/uniform_helper
- - abseil/random/internal/wide_multiply
- - abseil/strings/strings
- - abseil/xcprivacy
- - abseil/random/internal/distribution_caller (1.20240116.2):
- - abseil/base/config
- - abseil/base/fast_type_id
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/random/internal/fast_uniform_bits (1.20240116.2):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/random/internal/traits
- - abseil/xcprivacy
- - abseil/random/internal/fastmath (1.20240116.2):
- - abseil/numeric/bits
- - abseil/xcprivacy
- - abseil/random/internal/generate_real (1.20240116.2):
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/random/internal/fastmath
- - abseil/random/internal/traits
- - abseil/xcprivacy
- - abseil/random/internal/iostream_state_saver (1.20240116.2):
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/xcprivacy
- - abseil/random/internal/nonsecure_base (1.20240116.2):
- - abseil/base/core_headers
- - abseil/container/inlined_vector
- - abseil/meta/type_traits
- - abseil/random/internal/pool_urbg
- - abseil/random/internal/salted_seed_seq
- - abseil/random/internal/seed_material
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/random/internal/pcg_engine (1.20240116.2):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/random/internal/fastmath
- - abseil/random/internal/iostream_state_saver
- - abseil/xcprivacy
- - abseil/random/internal/platform (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/random/internal/pool_urbg (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/random/internal/randen
- - abseil/random/internal/seed_material
- - abseil/random/internal/traits
- - abseil/random/seed_gen_exception
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/random/internal/randen (1.20240116.2):
- - abseil/base/raw_logging_internal
- - abseil/random/internal/platform
- - abseil/random/internal/randen_hwaes
- - abseil/random/internal/randen_slow
- - abseil/xcprivacy
- - abseil/random/internal/randen_engine (1.20240116.2):
- - abseil/base/endian
- - abseil/meta/type_traits
- - abseil/random/internal/iostream_state_saver
- - abseil/random/internal/randen
- - abseil/xcprivacy
- - abseil/random/internal/randen_hwaes (1.20240116.2):
- - abseil/base/config
- - abseil/random/internal/platform
- - abseil/random/internal/randen_hwaes_impl
- - abseil/xcprivacy
- - abseil/random/internal/randen_hwaes_impl (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/numeric/int128
- - abseil/random/internal/platform
- - abseil/xcprivacy
- - abseil/random/internal/randen_slow (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/numeric/int128
- - abseil/random/internal/platform
- - abseil/xcprivacy
- - abseil/random/internal/salted_seed_seq (1.20240116.2):
- - abseil/container/inlined_vector
- - abseil/meta/type_traits
- - abseil/random/internal/seed_material
- - abseil/types/optional
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/random/internal/seed_material (1.20240116.2):
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/raw_logging_internal
- - abseil/random/internal/fast_uniform_bits
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/random/internal/traits (1.20240116.2):
- - abseil/base/config
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/xcprivacy
- - abseil/random/internal/uniform_helper (1.20240116.2):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/random/internal/traits
- - abseil/xcprivacy
- - abseil/random/internal/wide_multiply (1.20240116.2):
- - abseil/base/config
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/random/internal/traits
- - abseil/xcprivacy
- - abseil/random/random (1.20240116.2):
- - abseil/random/distributions
- - abseil/random/internal/nonsecure_base
- - abseil/random/internal/pcg_engine
- - abseil/random/internal/pool_urbg
- - abseil/random/internal/randen_engine
- - abseil/random/seed_sequences
- - abseil/xcprivacy
- - abseil/random/seed_gen_exception (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/random/seed_sequences (1.20240116.2):
- - abseil/base/config
- - abseil/random/internal/pool_urbg
- - abseil/random/internal/salted_seed_seq
- - abseil/random/internal/seed_material
- - abseil/random/seed_gen_exception
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/status/status (1.20240116.2):
- - abseil/base/atomic_hook
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/no_destructor
- - abseil/base/nullability
- - abseil/base/raw_logging_internal
- - abseil/base/strerror
- - abseil/container/inlined_vector
- - abseil/debugging/stacktrace
- - abseil/debugging/symbolize
- - abseil/functional/function_ref
- - abseil/memory/memory
- - abseil/strings/cord
- - abseil/strings/str_format
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/status/statusor (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/base/raw_logging_internal
- - abseil/meta/type_traits
- - abseil/status/status
- - abseil/strings/has_ostream_operator
- - abseil/strings/str_format
- - abseil/strings/strings
- - abseil/types/variant
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/strings/charset (1.20240116.2):
- - abseil/base/core_headers
- - abseil/strings/string_view
- - abseil/xcprivacy
- - abseil/strings/cord (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/nullability
- - abseil/base/raw_logging_internal
- - abseil/container/inlined_vector
- - abseil/crc/crc32c
- - abseil/crc/crc_cord_state
- - abseil/functional/function_ref
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/strings/cord_internal
- - abseil/strings/cordz_functions
- - abseil/strings/cordz_info
- - abseil/strings/cordz_statistics
- - abseil/strings/cordz_update_scope
- - abseil/strings/cordz_update_tracker
- - abseil/strings/internal
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/strings/cord_internal (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/base/throw_delegate
- - abseil/container/compressed_tuple
- - abseil/container/container_memory
- - abseil/container/inlined_vector
- - abseil/container/layout
- - abseil/crc/crc_cord_state
- - abseil/functional/function_ref
- - abseil/meta/type_traits
- - abseil/strings/strings
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/strings/cordz_functions (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/profiling/exponential_biased
- - abseil/xcprivacy
- - abseil/strings/cordz_handle (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/synchronization/synchronization
- - abseil/xcprivacy
- - abseil/strings/cordz_info (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/container/inlined_vector
- - abseil/debugging/stacktrace
- - abseil/strings/cord_internal
- - abseil/strings/cordz_functions
- - abseil/strings/cordz_handle
- - abseil/strings/cordz_statistics
- - abseil/strings/cordz_update_tracker
- - abseil/synchronization/synchronization
- - abseil/time/time
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/strings/cordz_statistics (1.20240116.2):
- - abseil/base/config
- - abseil/strings/cordz_update_tracker
- - abseil/xcprivacy
- - abseil/strings/cordz_update_scope (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/strings/cord_internal
- - abseil/strings/cordz_info
- - abseil/strings/cordz_update_tracker
- - abseil/xcprivacy
- - abseil/strings/cordz_update_tracker (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/strings/has_ostream_operator (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/strings/internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/strings/str_format (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/strings/str_format_internal
- - abseil/strings/string_view
- - abseil/types/span
- - abseil/xcprivacy
- - abseil/strings/str_format_internal (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/container/fixed_array
- - abseil/container/inlined_vector
- - abseil/functional/function_ref
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/numeric/representation
- - abseil/strings/strings
- - abseil/types/optional
- - abseil/types/span
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/strings/string_view (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/base/throw_delegate
- - abseil/xcprivacy
- - abseil/strings/strings (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/nullability
- - abseil/base/raw_logging_internal
- - abseil/base/throw_delegate
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/numeric/bits
- - abseil/numeric/int128
- - abseil/strings/charset
- - abseil/strings/internal
- - abseil/strings/string_view
- - abseil/xcprivacy
- - abseil/synchronization/graphcycles_internal (1.20240116.2):
- - abseil/base/base
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/malloc_internal
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/synchronization/kernel_timeout_internal (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/time/time
- - abseil/xcprivacy
- - abseil/synchronization/synchronization (1.20240116.2):
- - abseil/base/atomic_hook
- - abseil/base/base
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/malloc_internal
- - abseil/base/raw_logging_internal
- - abseil/debugging/stacktrace
- - abseil/debugging/symbolize
- - abseil/synchronization/graphcycles_internal
- - abseil/synchronization/kernel_timeout_internal
- - abseil/time/time
- - abseil/xcprivacy
- - abseil/time (1.20240116.2):
- - abseil/time/internal (= 1.20240116.2)
- - abseil/time/time (= 1.20240116.2)
- - abseil/time/internal (1.20240116.2):
- - abseil/time/internal/cctz (= 1.20240116.2)
- - abseil/time/internal/cctz (1.20240116.2):
- - abseil/time/internal/cctz/civil_time (= 1.20240116.2)
- - abseil/time/internal/cctz/time_zone (= 1.20240116.2)
- - abseil/time/internal/cctz/civil_time (1.20240116.2):
- - abseil/base/config
- - abseil/xcprivacy
- - abseil/time/internal/cctz/time_zone (1.20240116.2):
- - abseil/base/config
- - abseil/time/internal/cctz/civil_time
- - abseil/xcprivacy
- - abseil/time/time (1.20240116.2):
- - abseil/base/base
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/time/internal/cctz/civil_time
- - abseil/time/internal/cctz/time_zone
- - abseil/types/optional
- - abseil/xcprivacy
- - abseil/types (1.20240116.2):
- - abseil/types/any (= 1.20240116.2)
- - abseil/types/bad_any_cast (= 1.20240116.2)
- - abseil/types/bad_any_cast_impl (= 1.20240116.2)
- - abseil/types/bad_optional_access (= 1.20240116.2)
- - abseil/types/bad_variant_access (= 1.20240116.2)
- - abseil/types/compare (= 1.20240116.2)
- - abseil/types/optional (= 1.20240116.2)
- - abseil/types/span (= 1.20240116.2)
- - abseil/types/variant (= 1.20240116.2)
- - abseil/types/any (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/fast_type_id
- - abseil/meta/type_traits
- - abseil/types/bad_any_cast
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/types/bad_any_cast (1.20240116.2):
- - abseil/base/config
- - abseil/types/bad_any_cast_impl
- - abseil/xcprivacy
- - abseil/types/bad_any_cast_impl (1.20240116.2):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/types/bad_optional_access (1.20240116.2):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/types/bad_variant_access (1.20240116.2):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/xcprivacy
- - abseil/types/compare (1.20240116.2):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/types/optional (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/bad_optional_access
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/types/span (1.20240116.2):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/nullability
- - abseil/base/throw_delegate
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/types/variant (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/bad_variant_access
- - abseil/utility/utility
- - abseil/xcprivacy
- - abseil/utility/utility (1.20240116.2):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/xcprivacy
- - abseil/xcprivacy (1.20240116.2)
- - AppAuth (1.7.5):
- - AppAuth/Core (= 1.7.5)
- - AppAuth/ExternalUserAgent (= 1.7.5)
- - AppAuth/Core (1.7.5)
- - AppAuth/ExternalUserAgent (1.7.5):
- - AppAuth/Core
- - AppMetrica_FMDB (5.2.0)
- - AppMetrica_Protobuf (5.2.0)
- - AppMetricaAdSupport (5.2.0):
- - AppMetricaCore (= 5.2.0)
- - AppMetricaCoreExtension (= 5.2.0)
- - AppMetricaAnalytics (5.2.0):
- - AppMetricaAdSupport (= 5.2.0)
- - AppMetricaCore (= 5.2.0)
- - AppMetricaCrashes (= 5.2.0)
- - AppMetricaWebKit (= 5.2.0)
- - AppMetricaCore (5.2.0):
- - AppMetrica_FMDB (= 5.2.0)
- - AppMetrica_Protobuf (= 5.2.0)
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaEncodingUtils (= 5.2.0)
- - AppMetricaHostState (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaNetwork (= 5.2.0)
- - AppMetricaPlatform (= 5.2.0)
- - AppMetricaProtobufUtils (= 5.2.0)
- - AppMetricaStorageUtils (= 5.2.0)
- - AppMetricaCoreExtension (5.2.0):
- - AppMetricaCore (= 5.2.0)
- - AppMetricaStorageUtils (= 5.2.0)
- - AppMetricaCoreUtils (5.2.0):
- - AppMetricaLog (= 5.2.0)
- - AppMetricaCrashes (5.2.0):
- - AppMetricaCore (= 5.2.0)
- - AppMetricaCoreExtension (= 5.2.0)
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaEncodingUtils (= 5.2.0)
- - AppMetricaHostState (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaPlatform (= 5.2.0)
- - AppMetricaProtobufUtils (= 5.2.0)
- - AppMetricaStorageUtils (= 5.2.0)
- - KSCrash/Recording (= 1.17.0)
- - KSCrash/Recording/Tools
- - AppMetricaEncodingUtils (5.2.0):
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaPlatform (= 5.2.0)
- - AppMetricaHostState (5.2.0):
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaLog (5.2.0)
- - AppMetricaNetwork (5.2.0):
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaPlatform (= 5.2.0)
- - AppMetricaPlatform (5.2.0):
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaProtobufUtils (5.2.0):
- - AppMetrica_Protobuf (= 5.2.0)
- - AppMetricaStorageUtils (5.2.0):
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - AppMetricaWebKit (5.2.0):
- - AppMetricaCore (= 5.2.0)
- - AppMetricaCoreUtils (= 5.2.0)
- - AppMetricaLog (= 5.2.0)
- - BoringSSL-GRPC (0.0.32):
- - BoringSSL-GRPC/Implementation (= 0.0.32)
- - BoringSSL-GRPC/Interface (= 0.0.32)
- - BoringSSL-GRPC/Implementation (0.0.32):
- - BoringSSL-GRPC/Interface (= 0.0.32)
- - BoringSSL-GRPC/Interface (0.0.32)
- - cloud_firestore (4.17.2):
- - Firebase/Firestore (= 10.24.0)
- - firebase_core
- - Flutter
- - device_info_plus (0.0.1):
- - Flutter
- - DivKit (28.13.0):
- - DivKit_LayoutKit (= 28.13.0)
- - DivKit_Serialization (= 28.13.0)
- - VGSLCommonCore (~> 2.4)
- - VGSLNetworking (~> 2.4)
- - DivKit_LayoutKit (28.13.0):
- - DivKit_LayoutKitInterface (= 28.13.0)
- - VGSLCommonCore (~> 2.4)
- - DivKit_LayoutKitInterface (28.13.0):
- - VGSLBase (~> 2.4)
- - VGSLBaseTiny (~> 2.4)
- - VGSLBaseUI (~> 2.4)
- - DivKit_Serialization (28.13.0):
- - VGSLCommonCore (~> 2.4)
- - DKImagePickerController/Core (4.3.9):
- - DKImagePickerController/ImageDataManager
- - DKImagePickerController/Resource
- - DKImagePickerController/ImageDataManager (4.3.9)
- - DKImagePickerController/PhotoGallery (4.3.9):
- - DKImagePickerController/Core
- - DKPhotoGallery
- - DKImagePickerController/Resource (4.3.9)
- - DKPhotoGallery (0.0.19):
- - DKPhotoGallery/Core (= 0.0.19)
- - DKPhotoGallery/Model (= 0.0.19)
- - DKPhotoGallery/Preview (= 0.0.19)
- - DKPhotoGallery/Resource (= 0.0.19)
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Core (0.0.19):
- - DKPhotoGallery/Model
- - DKPhotoGallery/Preview
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Model (0.0.19):
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Preview (0.0.19):
- - DKPhotoGallery/Model
- - DKPhotoGallery/Resource
- - SDWebImage
- - SwiftyGif
- - DKPhotoGallery/Resource (0.0.19):
- - SDWebImage
- - SwiftyGif
- - file_picker (0.0.1):
- - DKImagePickerController/PhotoGallery
- - Flutter
- - Firebase/CoreOnly (10.24.0):
- - FirebaseCore (= 10.24.0)
- - Firebase/Firestore (10.24.0):
- - Firebase/CoreOnly
- - FirebaseFirestore (~> 10.24.0)
- - firebase_core (2.30.1):
- - Firebase/CoreOnly (= 10.24.0)
- - Flutter
- - FirebaseAppCheckInterop (10.25.0)
- - FirebaseCore (10.24.0):
- - FirebaseCoreInternal (~> 10.0)
- - GoogleUtilities/Environment (~> 7.12)
- - GoogleUtilities/Logger (~> 7.12)
- - FirebaseCoreExtension (10.25.0):
- - FirebaseCore (~> 10.0)
- - FirebaseCoreInternal (10.25.0):
- - "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseFirestore (10.24.0):
- - FirebaseCore (~> 10.0)
- - FirebaseCoreExtension (~> 10.0)
- - FirebaseFirestoreInternal (= 10.24.0)
- - FirebaseSharedSwift (~> 10.0)
- - FirebaseFirestoreInternal (10.24.0):
- - abseil/algorithm (~> 1.20240116.1)
- - abseil/base (~> 1.20240116.1)
- - abseil/container/flat_hash_map (~> 1.20240116.1)
- - abseil/memory (~> 1.20240116.1)
- - abseil/meta (~> 1.20240116.1)
- - abseil/strings/strings (~> 1.20240116.1)
- - abseil/time (~> 1.20240116.1)
- - abseil/types (~> 1.20240116.1)
- - FirebaseAppCheckInterop (~> 10.17)
- - FirebaseCore (~> 10.0)
- - "gRPC-C++ (~> 1.62.0)"
- - gRPC-Core (~> 1.62.0)
- - leveldb-library (~> 1.22)
- - nanopb (< 2.30911.0, >= 2.30908.0)
- - FirebaseSharedSwift (10.25.0)
- - Flutter (1.0.0)
- - flutter_tts (0.0.1):
- - Flutter
- - FMobileSdk (2.0.0.1230)
- - FunctionalSwift (2.0.7)
- - google_sign_in_ios (0.0.1):
- - AppAuth (>= 1.7.4)
- - Flutter
- - FlutterMacOS
- - GoogleSignIn (~> 7.1)
- - GTMSessionFetcher (>= 3.4.0)
- - GoogleSignIn (7.1.0):
- - AppAuth (< 2.0, >= 1.7.3)
- - GTMAppAuth (< 5.0, >= 4.1.1)
- - GTMSessionFetcher/Core (~> 3.3)
- - GoogleUtilities/Environment (7.13.2):
- - GoogleUtilities/Privacy
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Logger (7.13.2):
- - GoogleUtilities/Environment
- - GoogleUtilities/Privacy
- - "GoogleUtilities/NSData+zlib (7.13.2)":
- - GoogleUtilities/Privacy
- - GoogleUtilities/Privacy (7.13.2)
- - "gRPC-C++ (1.62.5)":
- - "gRPC-C++/Implementation (= 1.62.5)"
- - "gRPC-C++/Interface (= 1.62.5)"
- - "gRPC-C++/Implementation (1.62.5)":
- - abseil/algorithm/container (~> 1.20240116.2)
- - abseil/base/base (~> 1.20240116.2)
- - abseil/base/config (~> 1.20240116.2)
- - abseil/base/core_headers (~> 1.20240116.2)
- - abseil/cleanup/cleanup (~> 1.20240116.2)
- - abseil/container/flat_hash_map (~> 1.20240116.2)
- - abseil/container/flat_hash_set (~> 1.20240116.2)
- - abseil/container/inlined_vector (~> 1.20240116.2)
- - abseil/flags/flag (~> 1.20240116.2)
- - abseil/flags/marshalling (~> 1.20240116.2)
- - abseil/functional/any_invocable (~> 1.20240116.2)
- - abseil/functional/bind_front (~> 1.20240116.2)
- - abseil/functional/function_ref (~> 1.20240116.2)
- - abseil/hash/hash (~> 1.20240116.2)
- - abseil/memory/memory (~> 1.20240116.2)
- - abseil/meta/type_traits (~> 1.20240116.2)
- - abseil/random/bit_gen_ref (~> 1.20240116.2)
- - abseil/random/distributions (~> 1.20240116.2)
- - abseil/random/random (~> 1.20240116.2)
- - abseil/status/status (~> 1.20240116.2)
- - abseil/status/statusor (~> 1.20240116.2)
- - abseil/strings/cord (~> 1.20240116.2)
- - abseil/strings/str_format (~> 1.20240116.2)
- - abseil/strings/strings (~> 1.20240116.2)
- - abseil/synchronization/synchronization (~> 1.20240116.2)
- - abseil/time/time (~> 1.20240116.2)
- - abseil/types/optional (~> 1.20240116.2)
- - abseil/types/span (~> 1.20240116.2)
- - abseil/types/variant (~> 1.20240116.2)
- - abseil/utility/utility (~> 1.20240116.2)
- - "gRPC-C++/Interface (= 1.62.5)"
- - "gRPC-C++/Privacy (= 1.62.5)"
- - gRPC-Core (= 1.62.5)
- - "gRPC-C++/Interface (1.62.5)"
- - "gRPC-C++/Privacy (1.62.5)"
- - gRPC-Core (1.62.5):
- - gRPC-Core/Implementation (= 1.62.5)
- - gRPC-Core/Interface (= 1.62.5)
- - gRPC-Core/Implementation (1.62.5):
- - abseil/algorithm/container (~> 1.20240116.2)
- - abseil/base/base (~> 1.20240116.2)
- - abseil/base/config (~> 1.20240116.2)
- - abseil/base/core_headers (~> 1.20240116.2)
- - abseil/cleanup/cleanup (~> 1.20240116.2)
- - abseil/container/flat_hash_map (~> 1.20240116.2)
- - abseil/container/flat_hash_set (~> 1.20240116.2)
- - abseil/container/inlined_vector (~> 1.20240116.2)
- - abseil/flags/flag (~> 1.20240116.2)
- - abseil/flags/marshalling (~> 1.20240116.2)
- - abseil/functional/any_invocable (~> 1.20240116.2)
- - abseil/functional/bind_front (~> 1.20240116.2)
- - abseil/functional/function_ref (~> 1.20240116.2)
- - abseil/hash/hash (~> 1.20240116.2)
- - abseil/memory/memory (~> 1.20240116.2)
- - abseil/meta/type_traits (~> 1.20240116.2)
- - abseil/random/bit_gen_ref (~> 1.20240116.2)
- - abseil/random/distributions (~> 1.20240116.2)
- - abseil/random/random (~> 1.20240116.2)
- - abseil/status/status (~> 1.20240116.2)
- - abseil/status/statusor (~> 1.20240116.2)
- - abseil/strings/cord (~> 1.20240116.2)
- - abseil/strings/str_format (~> 1.20240116.2)
- - abseil/strings/strings (~> 1.20240116.2)
- - abseil/synchronization/synchronization (~> 1.20240116.2)
- - abseil/time/time (~> 1.20240116.2)
- - abseil/types/optional (~> 1.20240116.2)
- - abseil/types/span (~> 1.20240116.2)
- - abseil/types/variant (~> 1.20240116.2)
- - abseil/utility/utility (~> 1.20240116.2)
- - BoringSSL-GRPC (= 0.0.32)
- - gRPC-Core/Interface (= 1.62.5)
- - gRPC-Core/Privacy (= 1.62.5)
- - gRPC-Core/Interface (1.62.5)
- - gRPC-Core/Privacy (1.62.5)
- - GTMAppAuth (4.1.1):
- - AppAuth/Core (~> 1.7)
- - GTMSessionFetcher/Core (< 4.0, >= 3.3)
- - GTMSessionFetcher (3.4.1):
- - GTMSessionFetcher/Full (= 3.4.1)
- - GTMSessionFetcher/Core (3.4.1)
- - GTMSessionFetcher/Full (3.4.1):
- - GTMSessionFetcher/Core
- - in_app_purchase_storekit (0.0.1):
- - Flutter
- - FlutterMacOS
- - KSCrash/Recording (1.17.0):
- - KSCrash/Recording/Tools (= 1.17.0)
- - KSCrash/Recording/Tools (1.17.0)
- - leveldb-library (1.22.5)
- - MoneyAuth (10.13.1):
- - FMobileSdk
- - FunctionalSwift (~> 2.0)
- - YooMoneyCoreApi (~> 3.1)
- - YooMoneySessionProfiler (~> 5.0)
- - YooMoneyUI (~> 7.7)
- - nanopb (2.30910.0):
- - nanopb/decode (= 2.30910.0)
- - nanopb/encode (= 2.30910.0)
- - nanopb/decode (2.30910.0)
- - nanopb/encode (2.30910.0)
- - package_info_plus (0.4.5):
- - Flutter
- - path_provider_foundation (0.0.1):
- - Flutter
- - FlutterMacOS
- - PromisesObjC (2.4.0)
- - SDWebImage (5.19.1):
- - SDWebImage/Core (= 5.19.1)
- - SDWebImage/Core (5.19.1)
- - shared_preferences_foundation (0.0.1):
- - Flutter
- - FlutterMacOS
- - SPaySDK (1.0.9)
- - SwiftyGif (5.4.5)
- - VGSL_Fundamentals (2.4.1):
- - VGSL_Fundamentals_Tiny (= 2.4.1)
- - VGSL_Fundamentals_Tiny (2.4.1)
- - VGSLBase (2.4.1):
- - VGSL_Fundamentals (= 2.4.1)
- - VGSLBaseTiny (= 2.4.1)
- - VGSLBaseUI (= 2.4.1)
- - VGSLBaseTiny (2.4.1):
- - VGSL_Fundamentals_Tiny (= 2.4.1)
- - VGSLBaseUI (2.4.1):
- - VGSLBaseTiny (= 2.4.1)
- - VGSLCommonCore (2.4.1):
- - VGSLBase (= 2.4.1)
- - VGSLNetworking (2.4.1):
- - VGSLBase (= 2.4.1)
- - yandex_mobileads (6.3.0):
- - Flutter
- - YandexMobileAds (~> 6.4.0)
- - YandexMobileAds (6.4.1):
- - DivKit (= 28.13.0)
- - YandexMobileMetrica (< 5.0.0, >= 4.0.0)
- - YandexMobileMetrica (4.5.2):
- - YandexMobileMetrica/Static (= 4.5.2)
- - YandexMobileMetrica/Static (4.5.2):
- - YandexMobileMetrica/Static/Core (= 4.5.2)
- - YandexMobileMetrica/Static/Crashes (= 4.5.2)
- - YandexMobileMetrica/Static/Core (4.5.2)
- - YandexMobileMetrica/Static/Crashes (4.5.2):
- - YandexMobileMetrica/Static/Core
- - yookassa_payments_flutter (1.3.1):
- - Flutter
- - YooKassaPayments (= 6.16.0)
- - YooKassaPayments (6.16.0):
- - AppMetricaAnalytics (~> 5.2.0)
- - MoneyAuth (~> 10.13.0)
- - SPaySDK (~> 1.0.8)
- - YooKassaPaymentsApi (~> 2.22.0)
- - YooKassaWalletApi (~> 2.6.0)
- - YooMoneyCoreApi (~> 3.1)
- - YooMoneySessionProfiler (~> 5.0.4)
- - YooMoneyUI (~> 7.7)
- - YooKassaPaymentsApi (2.22.0):
- - FunctionalSwift
- - YooMoneyCoreApi (~> 3.1.1)
- - YooKassaWalletApi (2.6.0):
- - FunctionalSwift
- - YooMoneyCoreApi
- - YooMoneyCoreApi (3.1.1):
- - FunctionalSwift (~> 2.0)
- - YooMoneySessionProfiler (5.0.4):
- - FMobileSdk
- - YooMoneyUI (7.7.6):
- - FunctionalSwift
-
-DEPENDENCIES:
- - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- - file_picker (from `.symlinks/plugins/file_picker/ios`)
- - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- - Flutter (from `Flutter`)
- - flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
- - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`)
- - in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
- - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- - yandex_mobileads (from `.symlinks/plugins/yandex_mobileads/ios`)
- - yookassa_payments_flutter (from `.symlinks/plugins/yookassa_payments_flutter/ios`)
-
-SPEC REPOS:
- https://git.yoomoney.ru/scm/sdk/cocoa-pod-specs.git:
- - FMobileSdk
- - FunctionalSwift
- - MoneyAuth
- - YooKassaPayments
- - YooKassaPaymentsApi
- - YooKassaWalletApi
- - YooMoneyCoreApi
- - YooMoneySessionProfiler
- - YooMoneyUI
- https://github.com/CocoaPods/Specs.git:
- - abseil
- - AppAuth
- - AppMetrica_FMDB
- - AppMetrica_Protobuf
- - AppMetricaAdSupport
- - AppMetricaAnalytics
- - AppMetricaCore
- - AppMetricaCoreExtension
- - AppMetricaCoreUtils
- - AppMetricaCrashes
- - AppMetricaEncodingUtils
- - AppMetricaHostState
- - AppMetricaLog
- - AppMetricaNetwork
- - AppMetricaPlatform
- - AppMetricaProtobufUtils
- - AppMetricaStorageUtils
- - AppMetricaWebKit
- - BoringSSL-GRPC
- - DivKit
- - DivKit_LayoutKit
- - DivKit_LayoutKitInterface
- - DivKit_Serialization
- - DKImagePickerController
- - DKPhotoGallery
- - Firebase
- - FirebaseAppCheckInterop
- - FirebaseCore
- - FirebaseCoreExtension
- - FirebaseCoreInternal
- - FirebaseFirestore
- - FirebaseFirestoreInternal
- - FirebaseSharedSwift
- - GoogleSignIn
- - GoogleUtilities
- - "gRPC-C++"
- - gRPC-Core
- - GTMAppAuth
- - GTMSessionFetcher
- - KSCrash
- - leveldb-library
- - nanopb
- - PromisesObjC
- - SDWebImage
- - SPaySDK
- - SwiftyGif
- - VGSL_Fundamentals
- - VGSL_Fundamentals_Tiny
- - VGSLBase
- - VGSLBaseTiny
- - VGSLBaseUI
- - VGSLCommonCore
- - VGSLNetworking
- - YandexMobileAds
- - YandexMobileMetrica
-
-EXTERNAL SOURCES:
- cloud_firestore:
- :path: ".symlinks/plugins/cloud_firestore/ios"
- device_info_plus:
- :path: ".symlinks/plugins/device_info_plus/ios"
- file_picker:
- :path: ".symlinks/plugins/file_picker/ios"
- firebase_core:
- :path: ".symlinks/plugins/firebase_core/ios"
- Flutter:
- :path: Flutter
- flutter_tts:
- :path: ".symlinks/plugins/flutter_tts/ios"
- google_sign_in_ios:
- :path: ".symlinks/plugins/google_sign_in_ios/darwin"
- in_app_purchase_storekit:
- :path: ".symlinks/plugins/in_app_purchase_storekit/darwin"
- package_info_plus:
- :path: ".symlinks/plugins/package_info_plus/ios"
- path_provider_foundation:
- :path: ".symlinks/plugins/path_provider_foundation/darwin"
- shared_preferences_foundation:
- :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
- yandex_mobileads:
- :path: ".symlinks/plugins/yandex_mobileads/ios"
- yookassa_payments_flutter:
- :path: ".symlinks/plugins/yookassa_payments_flutter/ios"
-
-SPEC CHECKSUMS:
- abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3
- AppAuth: 501c04eda8a8d11f179dbe8637b7a91bb7e5d2fa
- AppMetrica_FMDB: 86a7247cecf4b315735b119f8547779bffca535a
- AppMetrica_Protobuf: 326de64e6b52ab2cddce121c780461ac9eedb6c4
- AppMetricaAdSupport: 1ebdf7d6f4555675aa776fb7fee5bd96ebef1dcf
- AppMetricaAnalytics: bebf8c4f75c5015937b3e51f878b30693d293944
- AppMetricaCore: 647efed7efaa8fad9e38aa417d95aeccaf8b0926
- AppMetricaCoreExtension: 2b93264b869438d890df5bf6a69407fce5542e1c
- AppMetricaCoreUtils: f6b3cfde963e1027e3044630e2fd7e1007422c1b
- AppMetricaCrashes: f096e2cee83a46769685b850df846f5822c81b24
- AppMetricaEncodingUtils: 3b7d0aafefbc9a0ae84515a4b381d0a576f944f2
- AppMetricaHostState: 280370ecaf3096d4ff313bb7c13fb13252ae99e7
- AppMetricaLog: 7f5b21edad9e93e12d5d8e2aeafd17cbc2befb2b
- AppMetricaNetwork: 070f7ce9fcad0e97d762d76ed7616236f9c73417
- AppMetricaPlatform: 36742fdd5e4290ab923cf5ede28612dae96a6671
- AppMetricaProtobufUtils: 37f172ca2fffacba2f0d564308c873bba4726b88
- AppMetricaStorageUtils: 4de179f2354946734cc7c407322398f5276e3305
- AppMetricaWebKit: 271bdf19ac5473df925213ec80d330805ed96818
- BoringSSL-GRPC: 1e2348957acdbcad360b80a264a90799984b2ba6
- cloud_firestore: a291c7ca0e498f9b08bbabd47a2499a5ae02c152
- device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
- DivKit: 65af423ea03c32b6ecaa63a64d4a2ea26c217f3b
- DivKit_LayoutKit: 3f88fab9edefb4938b9ccb5359ecbce4e1eeba69
- DivKit_LayoutKitInterface: 90449756ba956a7fbf3b168c01f7a0b7fc6a9de0
- DivKit_Serialization: 1b536e30c49163548bb62120320097c8ab41936d
- DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
- DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
- file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
- Firebase: 91fefd38712feb9186ea8996af6cbdef41473442
- firebase_core: 7f1e1156934d0da3be260174812842df9420e4ab
- FirebaseAppCheckInterop: 5da5ce93e8797a215e3f677fb0654b74e736c8b8
- FirebaseCore: 11dc8a16dfb7c5e3c3f45ba0e191a33ac4f50894
- FirebaseCoreExtension: 8a47811d0b155501559ef05d089518152a0a1677
- FirebaseCoreInternal: 910a81992c33715fec9263ca7381d59ab3a750b7
- FirebaseFirestore: 6df1bc70a56c15921286ff2a3096fa2d350b8823
- FirebaseFirestoreInternal: d9a6e08e9bb4016ce7c0b3544f1cf7abcd7cf26f
- FirebaseSharedSwift: 0274086954b1b2d5fd7e829eccc587044d72a4ba
- Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
- flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
- FMobileSdk: 8c49b5c8207eb4b92df761bbf16486f03bdac6ac
- FunctionalSwift: 89f68db7d8cf103a4dc0878fbaa007a2a5532485
- google_sign_in_ios: 07375bfbf2620bc93a602c0e27160d6afc6ead38
- GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db
- GoogleUtilities: c56430aef51a1aa57b25da78c3f8397e522c67b7
- "gRPC-C++": e725ef63c4475d7cdb7e2cf16eb0fde84bd9ee51
- gRPC-Core: eee4be35df218649fe66d721a05a7f27a28f069b
- GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de
- GTMSessionFetcher: 8000756fc1c19d2e5697b90311f7832d2e33f6cd
- in_app_purchase_storekit: 0e4b3c2e43ba1e1281f4f46dd71b0593ce529892
- KSCrash: 593ec373759e4c1bce381421a627326a20d2dc66
- leveldb-library: e8eadf9008a61f9e1dde3978c086d2b6d9b9dc28
- MoneyAuth: e577da32ec35b502043c3766daf99a0054ec86eb
- nanopb: 438bc412db1928dac798aa6fd75726007be04262
- package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
- path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
- PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
- SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb
- shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
- SPaySDK: 1015f868b6e9255457704cd6a3d051829263661a
- SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
- VGSL_Fundamentals: 4a965a687c76a5a435d7aaeb6b7182e82408bf4c
- VGSL_Fundamentals_Tiny: feab274b20c5838fbe09b887db0f6cfa28e26a1c
- VGSLBase: 37b95dd4ea137f73e8f9a8bd8ec474d8b4d75a68
- VGSLBaseTiny: 0a0a4992a348184e8580cf73efa8eb373d750f6b
- VGSLBaseUI: 62f147155e7b7049a32a30ac87b5bd8b83e636c5
- VGSLCommonCore: dd33088af6633d1c09f0c9bb8027920b99e2e0c8
- VGSLNetworking: e12d616b447522bf524c689d28f55cfbb20473cd
- yandex_mobileads: 410b1d02d86e07cb38d1c9eb2fbf9384410f9619
- YandexMobileAds: ed587c669f2deb078f39a070ee2466cc40eca5a9
- YandexMobileMetrica: f5368ee93f286c793d73b58da00929babfc897c1
- yookassa_payments_flutter: f36a2380714a41ecd238667db3768052ab1c2240
- YooKassaPayments: 1f1e5daab12dd05b11e56fe568c71b5a43b77b14
- YooKassaPaymentsApi: 88ecca54eaf785787eeb1682f352016757ec0cdc
- YooKassaWalletApi: 034a9d4f122557377ae3b9284e6292603fb38e6b
- YooMoneyCoreApi: f53a22898878aab2f07449351a8a08f4918a6100
- YooMoneySessionProfiler: f4ac772cb6675f1200efbde75d69126eb4c867e6
- YooMoneyUI: 7332c851831398441dc841bb6474322ee5b8883d
-
-PODFILE CHECKSUM: 84385eb1972ae5f3226ffd3e0f88ab4954cec863
-
-COCOAPODS: 1.14.3
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
deleted file mode 100644
index 76634b0..0000000
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,766 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 54;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
- 88925E0304DA934B99CF07B5 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 039AEB256EC09C6DAD0D33F6 /* GoogleService-Info.plist */; };
- 92F786B29EF12520764C9B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88D363FEAADB3317B3E14A0A /* Pods_Runner.framework */; };
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
- CF53E9FF8298D562D675E324 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F30B1603BBE3F803AFE2385E /* Pods_RunnerTests.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 97C146E61CF9000F007C117D /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 97C146ED1CF9000F007C117D;
- remoteInfo = Runner;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 039AEB256EC09C6DAD0D33F6 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
- 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 4CC79C7D41E157D878D889F0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
- 5B971DEAC48A015D192A8EAB /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 5DA2E070BDB961F389CD961D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
- 5EFDFD0076C43FC4B256A2F9 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 88D363FEAADB3317B3E14A0A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
- 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
- 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- D56245B45AA4EC506A74FF4E /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
- F30B1603BBE3F803AFE2385E /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- F34F38B9F662A96F77B6E782 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 7F8493084A5D32479BB9EA15 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- CF53E9FF8298D562D675E324 /* Pods_RunnerTests.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EB1CF9000F007C117D /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 92F786B29EF12520764C9B34 /* Pods_Runner.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 331C8082294A63A400263BE5 /* RunnerTests */ = {
- isa = PBXGroup;
- children = (
- 331C807B294A618700263BE5 /* RunnerTests.swift */,
- );
- path = RunnerTests;
- sourceTree = "";
- };
- 70EAEEDC0F0D76C181949289 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 88D363FEAADB3317B3E14A0A /* Pods_Runner.framework */,
- F30B1603BBE3F803AFE2385E /* Pods_RunnerTests.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 9740EEB11CF90186004384FC /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 9740EEB31CF90195004384FC /* Generated.xcconfig */,
- );
- name = Flutter;
- sourceTree = "";
- };
- 97C146E51CF9000F007C117D = {
- isa = PBXGroup;
- children = (
- 9740EEB11CF90186004384FC /* Flutter */,
- 97C146F01CF9000F007C117D /* Runner */,
- 97C146EF1CF9000F007C117D /* Products */,
- 331C8082294A63A400263BE5 /* RunnerTests */,
- 9BC5FF8B20D1CEE670C66ACD /* Pods */,
- 70EAEEDC0F0D76C181949289 /* Frameworks */,
- 039AEB256EC09C6DAD0D33F6 /* GoogleService-Info.plist */,
- );
- sourceTree = "";
- };
- 97C146EF1CF9000F007C117D /* Products */ = {
- isa = PBXGroup;
- children = (
- 97C146EE1CF9000F007C117D /* Runner.app */,
- 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- 97C146F01CF9000F007C117D /* Runner */ = {
- isa = PBXGroup;
- children = (
- 97C146FA1CF9000F007C117D /* Main.storyboard */,
- 97C146FD1CF9000F007C117D /* Assets.xcassets */,
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
- 97C147021CF9000F007C117D /* Info.plist */,
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
- );
- path = Runner;
- sourceTree = "";
- };
- 9BC5FF8B20D1CEE670C66ACD /* Pods */ = {
- isa = PBXGroup;
- children = (
- 4CC79C7D41E157D878D889F0 /* Pods-Runner.debug.xcconfig */,
- 5B971DEAC48A015D192A8EAB /* Pods-Runner.release.xcconfig */,
- 5DA2E070BDB961F389CD961D /* Pods-Runner.profile.xcconfig */,
- 5EFDFD0076C43FC4B256A2F9 /* Pods-RunnerTests.debug.xcconfig */,
- F34F38B9F662A96F77B6E782 /* Pods-RunnerTests.release.xcconfig */,
- D56245B45AA4EC506A74FF4E /* Pods-RunnerTests.profile.xcconfig */,
- );
- name = Pods;
- path = Pods;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 331C8080294A63A400263BE5 /* RunnerTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
- buildPhases = (
- FD56395D2DB589B058B3AF52 /* [CP] Check Pods Manifest.lock */,
- 331C807D294A63A400263BE5 /* Sources */,
- 331C807F294A63A400263BE5 /* Resources */,
- 7F8493084A5D32479BB9EA15 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- 331C8086294A63A400263BE5 /* PBXTargetDependency */,
- );
- name = RunnerTests;
- productName = RunnerTests;
- productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 97C146ED1CF9000F007C117D /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- 11939B8737D0761B1D52BA09 /* [CP] Check Pods Manifest.lock */,
- 9740EEB61CF901F6004384FC /* Run Script */,
- 97C146EA1CF9000F007C117D /* Sources */,
- 97C146EB1CF9000F007C117D /* Frameworks */,
- 97C146EC1CF9000F007C117D /* Resources */,
- 9705A1C41CF9048500538489 /* Embed Frameworks */,
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 10510DEBDDA8DED725BA2250 /* [CP] Copy Pods Resources */,
- EAA1E3F7E6B26606E42D1048 /* [CP] Embed Pods Frameworks */,
- 8D11678BA08A0DD0DA55F454 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Runner;
- productName = Runner;
- productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 97C146E61CF9000F007C117D /* Project object */ = {
- isa = PBXProject;
- attributes = {
- BuildIndependentTargetsInParallel = YES;
- LastUpgradeCheck = 1510;
- ORGANIZATIONNAME = "";
- TargetAttributes = {
- 331C8080294A63A400263BE5 = {
- CreatedOnToolsVersion = 14.0;
- TestTargetID = 97C146ED1CF9000F007C117D;
- };
- 97C146ED1CF9000F007C117D = {
- CreatedOnToolsVersion = 7.3.1;
- LastSwiftMigration = 1100;
- };
- };
- };
- buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 97C146E51CF9000F007C117D;
- productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 97C146ED1CF9000F007C117D /* Runner */,
- 331C8080294A63A400263BE5 /* RunnerTests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 331C807F294A63A400263BE5 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EC1CF9000F007C117D /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
- 88925E0304DA934B99CF07B5 /* GoogleService-Info.plist in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 10510DEBDDA8DED725BA2250 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 11939B8737D0761B1D52BA09 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
- );
- name = "Thin Binary";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
- };
- 8D11678BA08A0DD0DA55F454 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n";
- };
- 9740EEB61CF901F6004384FC /* Run Script */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
- };
- EAA1E3F7E6B26606E42D1048 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- FD56395D2DB589B058B3AF52 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 331C807D294A63A400263BE5 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EA1CF9000F007C117D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 97C146ED1CF9000F007C117D /* Runner */;
- targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C146FB1CF9000F007C117D /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C147001CF9000F007C117D /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 249021D3217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Profile;
- };
- 249021D4217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = 6ZNY923QXG;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Profile;
- };
- 331C8088294A63A400263BE5 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5EFDFD0076C43FC4B256A2F9 /* Pods-RunnerTests.debug.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Debug;
- };
- 331C8089294A63A400263BE5 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = F34F38B9F662A96F77B6E782 /* Pods-RunnerTests.release.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Release;
- };
- 331C808A294A63A400263BE5 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = D56245B45AA4EC506A74FF4E /* Pods-RunnerTests.profile.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Profile;
- };
- 97C147031CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 97C147041CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 14.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 97C147061CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = 6ZNY923QXG;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 97C147071CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = 6ZNY923QXG;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.cinnabarflower.mnemoCards;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 331C8088294A63A400263BE5 /* Debug */,
- 331C8089294A63A400263BE5 /* Release */,
- 331C808A294A63A400263BE5 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147031CF9000F007C117D /* Debug */,
- 97C147041CF9000F007C117D /* Release */,
- 249021D3217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147061CF9000F007C117D /* Debug */,
- 97C147071CF9000F007C117D /* Release */,
- 249021D4217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 97C146E61CF9000F007C117D /* Project object */;
-}
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 919434a..0000000
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index 8e3ca5d..0000000
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 21a3cc1..0000000
--- a/ios/Runner.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
deleted file mode 100644
index 70693e4..0000000
--- a/ios/Runner/AppDelegate.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-import UIKit
-import Flutter
-
-@UIApplicationMain
-@objc class AppDelegate: FlutterAppDelegate {
- override func application(
- _ application: UIApplication,
- didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
- ) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
-}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index d36b1fa..0000000
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "images" : [
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "Icon-App-83.5x83.5@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "filename" : "Icon-App-1024x1024@1x.png",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index 8efca3a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index 226e320..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index 9b3f66b..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index 03475e4..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index e576db3..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index 5c19bdc..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index 9d26dc7..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index 9b3f66b..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index 5fd1173..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index 88a0f0a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
deleted file mode 100644
index 1d65fd8..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
deleted file mode 100644
index 39f354c..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
deleted file mode 100644
index df61d9a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
deleted file mode 100644
index a2b6962..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index 88a0f0a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index 585e88e..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
deleted file mode 100644
index 6f591a2..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
deleted file mode 100644
index e15861a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index 8ed25e7..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 2aa1201..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index e8ceae7..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
deleted file mode 100644
index 9f447e1..0000000
--- a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
+++ /dev/null
@@ -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
- }
-}
diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
deleted file mode 100644
index 3107d37..0000000
Binary files a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
deleted file mode 100644
index 00cabce..0000000
--- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "filename" : "LaunchImage.png",
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "filename" : "LaunchImage@2x.png",
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "filename" : "LaunchImage@3x.png",
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
deleted file mode 100644
index b8e69a5..0000000
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
deleted file mode 100644
index aa97e95..0000000
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
deleted file mode 100644
index 1d18d62..0000000
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
deleted file mode 100644
index 89c2725..0000000
--- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Launch Screen Assets
-
-You can customize the launch screen with your own desired assets by replacing the image files in this directory.
-
-You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index 8d2b7d5..0000000
--- a/ios/Runner/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
deleted file mode 100644
index f3c2851..0000000
--- a/ios/Runner/Base.lproj/Main.storyboard
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
deleted file mode 100644
index 813a0db..0000000
--- a/ios/Runner/GoogleService-Info.plist
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- CLIENT_ID
- 701767851968-8dqcmk706p08gujqbl2m9s4sq1aljibs.apps.googleusercontent.com
- REVERSED_CLIENT_ID
- com.googleusercontent.apps.701767851968-8dqcmk706p08gujqbl2m9s4sq1aljibs
- ANDROID_CLIENT_ID
- 701767851968-3jgootslus3ie76t682j4v7glletloud.apps.googleusercontent.com
- API_KEY
- AIzaSyAodY8s0ntALNeeGiUiTx6eg4g2Ar6C1to
- GCM_SENDER_ID
- 701767851968
- PLIST_VERSION
- 1
- BUNDLE_ID
- com.cinnabarflower.mnemoCards
- PROJECT_ID
- mnemo-cards
- STORAGE_BUCKET
- mnemo-cards.appspot.com
- IS_ADS_ENABLED
-
- IS_ANALYTICS_ENABLED
-
- IS_APPINVITE_ENABLED
-
- IS_GCM_ENABLED
-
- IS_SIGNIN_ENABLED
-
- GOOGLE_APP_ID
- 1:701767851968:ios:5c9040634eac8c152f7225
-
-
\ No newline at end of file
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
deleted file mode 100644
index b32e312..0000000
--- a/ios/Runner/Info.plist
+++ /dev/null
@@ -1,967 +0,0 @@
-
-
-
-
- CFBundleURLTypes
-
-
- CFBundleTypeRole
- Editor
- CFBundleURLSchemes
-
- yookassapaymentsflutter
-
-
-
- LSApplicationQueriesSchemes
-
- yoomoneyauth
- sberpay
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleDisplayName
- Mnemo Cards
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- mnemo_cards
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleSignature
- ????
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
- SKAdNetworkItems
-
-
-
- SKAdNetworkIdentifier
- zq492l623r.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- cstr6suwn9.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- n9x2a789qt.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- r26jy69rpl.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- 5l3tpt7t6e.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- 4dzt52r2t5.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- su67r6k2v3.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- ludvb6z3bs.skadnetwork
-
-
-
- SKAdNetworkIdentifier
- kbd757ywx3.skadnetwork
-
-
- SKAdNetworkIdentifier
- 633vhxswh4.skadnetwork
-
-
- SKAdNetworkIdentifier
- tmhh9296z4.skadnetwork
-
-
- SKAdNetworkIdentifier
- vcra2ehyfk.skadnetwork
-
-
- SKAdNetworkIdentifier
- zh3b7bxvad.skadnetwork
-
-
- SKAdNetworkIdentifier
- xmn954pzmp.skadnetwork
-
-
- SKAdNetworkIdentifier
- 79w64w269u.skadnetwork
-
-
- SKAdNetworkIdentifier
- 488r3q3dtq.skadnetwork
-
-
- SKAdNetworkIdentifier
- d7g9azk84q.skadnetwork
-
-
- SKAdNetworkIdentifier
- nzq8sh4pbs.skadnetwork
-
-
- SKAdNetworkIdentifier
- 866k9ut3g3.skadnetwork
-
-
- SKAdNetworkIdentifier
- 2q884k2j68.skadnetwork
-
-
- SKAdNetworkIdentifier
- x8jxxk4ff5.skadnetwork
-
-
- SKAdNetworkIdentifier
- gfat3222tu.skadnetwork
-
-
- SKAdNetworkIdentifier
- pd25vrrwzn.skadnetwork
-
-
- SKAdNetworkIdentifier
- lr83yxwka7.skadnetwork
-
-
- SKAdNetworkIdentifier
- cp8zw746q7.skadnetwork
-
-
- SKAdNetworkIdentifier
- pwdxu55a5a.skadnetwork
-
-
- SKAdNetworkIdentifier
- c6k4g5qg8m.skadnetwork
-
-
- SKAdNetworkIdentifier
- s39g8k73mm.skadnetwork
-
-
- SKAdNetworkIdentifier
- wg4vff78zm.skadnetwork
-
-
- SKAdNetworkIdentifier
- g28c52eehv.skadnetwork
-
-
- SKAdNetworkIdentifier
- 523jb4fst2.skadnetwork
-
-
- SKAdNetworkIdentifier
- 294l99pt4k.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3qy4746246.skadnetwork
-
-
- SKAdNetworkIdentifier
- a8cz6cu7e5.skadnetwork
-
-
- SKAdNetworkIdentifier
- ggvn48r87g.skadnetwork
-
-
- SKAdNetworkIdentifier
- y755zyxw56.skadnetwork
-
-
- SKAdNetworkIdentifier
- qlbq5gtkt8.skadnetwork
-
-
- SKAdNetworkIdentifier
- mls7yz5dvl.skadnetwork
-
-
- SKAdNetworkIdentifier
- 67369282zy.skadnetwork
-
-
- SKAdNetworkIdentifier
- 899vrgt9g8.skadnetwork
-
-
- SKAdNetworkIdentifier
- mj797d8u6f.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3sh42y64q3.skadnetwork
-
-
- SKAdNetworkIdentifier
- f38h382jlk.skadnetwork
-
-
- SKAdNetworkIdentifier
- 24t9a8vw3c.skadnetwork
-
-
- SKAdNetworkIdentifier
- mp6xlyr22a.skadnetwork
-
-
- SKAdNetworkIdentifier
- x44k69ngh6.skadnetwork
-
-
- SKAdNetworkIdentifier
- 88k8774x49.skadnetwork
-
-
- SKAdNetworkIdentifier
- hs6bdukanm.skadnetwork
-
-
- SKAdNetworkIdentifier
- t3b3f7n3x8.skadnetwork
-
-
- SKAdNetworkIdentifier
- prcb7njmu6.skadnetwork
-
-
- SKAdNetworkIdentifier
- c7g47wypnu.skadnetwork
-
-
- SKAdNetworkIdentifier
- 52fl2v3hgk.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9vvzujtq5s.skadnetwork
-
-
- SKAdNetworkIdentifier
- m8dbw4sv7c.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9g2aggbj52.skadnetwork
-
-
- SKAdNetworkIdentifier
- m5mvw97r93.skadnetwork
-
-
- SKAdNetworkIdentifier
- z5b3gh5ugf.skadnetwork
-
-
- SKAdNetworkIdentifier
- dd3a75yxkv.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9nlqeag3gk.skadnetwork
-
-
- SKAdNetworkIdentifier
- cj5566h2ga.skadnetwork
-
-
- SKAdNetworkIdentifier
- h5jmj969g5.skadnetwork
-
-
- SKAdNetworkIdentifier
- dr774724x4.skadnetwork
-
-
- SKAdNetworkIdentifier
- t7ky8fmwkd.skadnetwork
-
-
- SKAdNetworkIdentifier
- fz2k2k5tej.skadnetwork
-
-
- SKAdNetworkIdentifier
- u679fj5vs4.skadnetwork
-
-
- SKAdNetworkIdentifier
- cs644xg564.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9b89h5y424.skadnetwork
-
-
- SKAdNetworkIdentifier
- w28pnjg2k4.skadnetwork
-
-
- SKAdNetworkIdentifier
- 2rq3zucswp.skadnetwork
-
-
- SKAdNetworkIdentifier
- a7xqa6mtl2.skadnetwork
-
-
- SKAdNetworkIdentifier
- g2y4y55b64.skadnetwork
-
-
- SKAdNetworkIdentifier
- vc83br9sjg.skadnetwork
-
-
- SKAdNetworkIdentifier
- eqhxz8m8av.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7k3cvf297u.skadnetwork
-
-
- SKAdNetworkIdentifier
- w9q455wk68.skadnetwork
-
-
- SKAdNetworkIdentifier
- nu4557a4je.skadnetwork
-
-
- SKAdNetworkIdentifier
- v4nxqhlyqp.skadnetwork
-
-
- SKAdNetworkIdentifier
- wzmmz9fp6w.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7fmhfwg9en.skadnetwork
-
-
- SKAdNetworkIdentifier
- yclnxrl5pm.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7tnzynbdc7.skadnetwork
-
-
- SKAdNetworkIdentifier
- l6nv3x923s.skadnetwork
-
-
- SKAdNetworkIdentifier
- h8vml93bkz.skadnetwork
-
-
- SKAdNetworkIdentifier
- uzqba5354d.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8qiegk9qfv.skadnetwork
-
-
- SKAdNetworkIdentifier
- v79kvwwj4g.skadnetwork
-
-
- SKAdNetworkIdentifier
- xx9sdjej2w.skadnetwork
-
-
- SKAdNetworkIdentifier
- au67k4efj4.skadnetwork
-
-
- SKAdNetworkIdentifier
- t38b2kh725.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7ug5zh24hu.skadnetwork
-
-
- SKAdNetworkIdentifier
- rx5hdcabgc.skadnetwork
-
-
- SKAdNetworkIdentifier
- 5lm9lj6jb7.skadnetwork
-
-
- SKAdNetworkIdentifier
- qqp299437r.skadnetwork
-
-
- SKAdNetworkIdentifier
- zmvfpc5aq8.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9rd848q2bz.skadnetwork
-
-
- SKAdNetworkIdentifier
- 79pbpufp6p.skadnetwork
-
-
- SKAdNetworkIdentifier
- dmv22haz9p.skadnetwork
-
-
- SKAdNetworkIdentifier
- y5ghdn5j9k.skadnetwork
-
-
- SKAdNetworkIdentifier
- n6fk4nfna4.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7rz58n8ntl.skadnetwork
-
-
- SKAdNetworkIdentifier
- v9wttpbfk9.skadnetwork
-
-
- SKAdNetworkIdentifier
- n38lu8286q.skadnetwork
-
-
- SKAdNetworkIdentifier
- feyaarzu9v.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7fbxrn65az.skadnetwork
-
-
- SKAdNetworkIdentifier
- 47vhws6wlr.skadnetwork
-
-
- SKAdNetworkIdentifier
- ejvt5qm6ak.skadnetwork
-
-
- SKAdNetworkIdentifier
- b55w3d8y8z.skadnetwork
-
-
- SKAdNetworkIdentifier
- v7896pgt74.skadnetwork
-
-
- SKAdNetworkIdentifier
- 5ghnmfs3dh.skadnetwork
-
-
- SKAdNetworkIdentifier
- 275upjj5gd.skadnetwork
-
-
- SKAdNetworkIdentifier
- 627r9wr2y5.skadnetwork
-
-
- SKAdNetworkIdentifier
- sczv5946wb.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8w3np9l82g.skadnetwork
-
-
- SKAdNetworkIdentifier
- hb56zgv37p.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9t245vhmpl.skadnetwork
-
-
- SKAdNetworkIdentifier
- nrt9jy4kw9.skadnetwork
-
-
- SKAdNetworkIdentifier
- 7953jerfzd.skadnetwork
-
-
- SKAdNetworkIdentifier
- dn942472g5.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6v7lgmsu45.skadnetwork
-
-
- SKAdNetworkIdentifier
- cad8qz2s3j.skadnetwork
-
-
- SKAdNetworkIdentifier
- eh6m2bh4zr.skadnetwork
-
-
- SKAdNetworkIdentifier
- jb7bn6koa5.skadnetwork
-
-
- SKAdNetworkIdentifier
- fkak3gfpt6.skadnetwork
-
-
- SKAdNetworkIdentifier
- a2p9lx4jpn.skadnetwork
-
-
- SKAdNetworkIdentifier
- 97r2b46745.skadnetwork
-
-
- SKAdNetworkIdentifier
- 22mmun2rn5.skadnetwork
-
-
- SKAdNetworkIdentifier
- 238da6jt44.skadnetwork
-
-
- SKAdNetworkIdentifier
- 44jx6755aq.skadnetwork
-
-
- SKAdNetworkIdentifier
- b9bk5wbcq9.skadnetwork
-
-
- SKAdNetworkIdentifier
- k674qkevps.skadnetwork
-
-
- SKAdNetworkIdentifier
- tl55sbb4fm.skadnetwork
-
-
- SKAdNetworkIdentifier
- 24zw6aqk47.skadnetwork
-
-
- SKAdNetworkIdentifier
- 4468km3ulz.skadnetwork
-
-
- SKAdNetworkIdentifier
- 2tdux39lx8.skadnetwork
-
-
- SKAdNetworkIdentifier
- 2u9pt9hc89.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8s468mfl3y.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3cgn6rq224.skadnetwork
-
-
- SKAdNetworkIdentifier
- glqzh8vgby.skadnetwork
-
-
- SKAdNetworkIdentifier
- av6w8kgt66.skadnetwork
-
-
- SKAdNetworkIdentifier
- klf5c3l5u5.skadnetwork
-
-
- SKAdNetworkIdentifier
- nfqy3847ph.skadnetwork
-
-
- SKAdNetworkIdentifier
- dticjx1a9i.skadnetwork
-
-
- SKAdNetworkIdentifier
- ppxm28t8ap.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9wsyqb3ku7.skadnetwork
-
-
- SKAdNetworkIdentifier
- 74b6s63p6l.skadnetwork
-
-
- SKAdNetworkIdentifier
- xy9t38ct57.skadnetwork
-
-
- SKAdNetworkIdentifier
- 424m5254lk.skadnetwork
-
-
- SKAdNetworkIdentifier
- qu637u8glc.skadnetwork
-
-
- SKAdNetworkIdentifier
- f73kdq92p3.skadnetwork
-
-
- SKAdNetworkIdentifier
- 44n7hlldy6.skadnetwork
-
-
- SKAdNetworkIdentifier
- kbmxgpxpgc.skadnetwork
-
-
- SKAdNetworkIdentifier
- ecpz2srf59.skadnetwork
-
-
- SKAdNetworkIdentifier
- x5854y7y24.skadnetwork
-
-
- SKAdNetworkIdentifier
- f7s53z58qe.skadnetwork
-
-
- SKAdNetworkIdentifier
- x8uqf25wch.skadnetwork
-
-
- SKAdNetworkIdentifier
- uw77j35x4d.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6964rsfnh4.skadnetwork
-
-
- SKAdNetworkIdentifier
- gvmwg8q7h5.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6yxyv74ff7.skadnetwork
-
-
- SKAdNetworkIdentifier
- 84993kbrcf.skadnetwork
-
-
- SKAdNetworkIdentifier
- 54nzkqm89y.skadnetwork
-
-
- SKAdNetworkIdentifier
- pwa73g5rt2.skadnetwork
-
-
- SKAdNetworkIdentifier
- mlmmfzh3r3.skadnetwork
-
-
- SKAdNetworkIdentifier
- 9yg77x724h.skadnetwork
-
-
- SKAdNetworkIdentifier
- n66cz3y3bx.skadnetwork
-
-
- SKAdNetworkIdentifier
- 578prtvx9j.skadnetwork
-
-
- SKAdNetworkIdentifier
- bvpn9ufa9b.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6qx585k4p6.skadnetwork
-
-
- SKAdNetworkIdentifier
- mtkv5xtk9e.skadnetwork
-
-
- SKAdNetworkIdentifier
- l93v5h6a4m.skadnetwork
-
-
- SKAdNetworkIdentifier
- rvh3l7un93.skadnetwork
-
-
- SKAdNetworkIdentifier
- gta9lk7p23.skadnetwork
-
-
- SKAdNetworkIdentifier
- 5tjdwbrq8w.skadnetwork
-
-
- SKAdNetworkIdentifier
- r45fhb6rf7.skadnetwork
-
-
- SKAdNetworkIdentifier
- 32z4fx6l9h.skadnetwork
-
-
- SKAdNetworkIdentifier
- e5fvkxwrpn.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8c4e2ghe7u.skadnetwork
-
-
- SKAdNetworkIdentifier
- axh5283zss.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3rd42ekr43.skadnetwork
-
-
- SKAdNetworkIdentifier
- 5mv394q32t.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3qcr597p9d.skadnetwork
-
-
- SKAdNetworkIdentifier
- v72qych5uu.skadnetwork
-
-
- SKAdNetworkIdentifier
- ydx93a7ass.skadnetwork
-
-
- SKAdNetworkIdentifier
- 4pfyvq9l8r.skadnetwork
-
-
- SKAdNetworkIdentifier
- 5a6flpkh64.skadnetwork
-
-
- SKAdNetworkIdentifier
- 4fzdc2evr5.skadnetwork
-
-
- SKAdNetworkIdentifier
- 4w7y6s5ca2.skadnetwork
-
-
- SKAdNetworkIdentifier
- 252b5q8x7y.skadnetwork
-
-
- SKAdNetworkIdentifier
- 2fnua5tdw4.skadnetwork
-
-
- SKAdNetworkIdentifier
- 3l6bd9hu43.skadnetwork
-
-
- SKAdNetworkIdentifier
- 4mn522wn87.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6g9af3uyq4.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6p4ks3rnbw.skadnetwork
-
-
- SKAdNetworkIdentifier
- 6xzpu9s2p8.skadnetwork
-
-
- SKAdNetworkIdentifier
- 737z793b9f.skadnetwork
-
-
- SKAdNetworkIdentifier
- 89z7zv988g.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8m87ys6875.skadnetwork
-
-
- SKAdNetworkIdentifier
- 8r8llnkz5a.skadnetwork
-
-
- SKAdNetworkIdentifier
- bxvub5ada5.skadnetwork
-
-
- SKAdNetworkIdentifier
- c3frkrj4fj.skadnetwork
-
-
- SKAdNetworkIdentifier
- cg4yq2srnc.skadnetwork
-
-
- SKAdNetworkIdentifier
- dbu4b84rxf.skadnetwork
-
-
- SKAdNetworkIdentifier
- dkc879ngq3.skadnetwork
-
-
- SKAdNetworkIdentifier
- dzg6xy7pwj.skadnetwork
-
-
- SKAdNetworkIdentifier
- gta8lk7p23.skadnetwork
-
-
- SKAdNetworkIdentifier
- hdw39hrw9y.skadnetwork
-
-
- SKAdNetworkIdentifier
- hjevpa356n.skadnetwork
-
-
- SKAdNetworkIdentifier
- krvm3zuq6h.skadnetwork
-
-
- SKAdNetworkIdentifier
- ln5gz23vtd.skadnetwork
-
-
- SKAdNetworkIdentifier
- m297p6643m.skadnetwork
-
-
- SKAdNetworkIdentifier
- p78axxw29g.skadnetwork
-
-
- SKAdNetworkIdentifier
- pu4na253f3.skadnetwork
-
-
- SKAdNetworkIdentifier
- s69wq72ugq.skadnetwork
-
-
- SKAdNetworkIdentifier
- t6d3zquu66.skadnetwork
-
-
- SKAdNetworkIdentifier
- vutu7akeur.skadnetwork
-
-
- SKAdNetworkIdentifier
- x2jnk7ly8j.skadnetwork
-
-
- SKAdNetworkIdentifier
- x5l83yy675.skadnetwork
-
-
- SKAdNetworkIdentifier
- y45688jllp.skadnetwork
-
-
- SKAdNetworkIdentifier
- yrqqpx2mcb.skadnetwork
-
-
- SKAdNetworkIdentifier
- z4gj7hsk7h.skadnetwork
-
-
- SKAdNetworkIdentifier
- 33r6p7g8nc.skadnetwork
-
-
- SKAdNetworkIdentifier
- g69uk9uh2b.skadnetwork
-
-
- UIStatusBarHidden
-
-
-
diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h
deleted file mode 100644
index 308a2a5..0000000
--- a/ios/Runner/Runner-Bridging-Header.h
+++ /dev/null
@@ -1 +0,0 @@
-#import "GeneratedPluginRegistrant.h"
diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift
deleted file mode 100644
index 86a7c3b..0000000
--- a/ios/RunnerTests/RunnerTests.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-import Flutter
-import UIKit
-import XCTest
-
-class RunnerTests: XCTestCase {
-
- func testExample() {
- // If you add code to the Runner application, consider adding tests here.
- // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
- }
-
-}
diff --git a/ios/firebase_app_id_file.json b/ios/firebase_app_id_file.json
deleted file mode 100644
index a81cdf7..0000000
--- a/ios/firebase_app_id_file.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_generated_by": "FlutterFire CLI",
- "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
- "GOOGLE_APP_ID": "1:701767851968:ios:4148f84add5cc6732f7225",
- "FIREBASE_PROJECT_ID": "mnemo-cards",
- "GCM_SENDER_ID": "701767851968"
-}
\ No newline at end of file
diff --git a/lib.zip b/lib.zip
deleted file mode 100644
index 0a685b8..0000000
Binary files a/lib.zip and /dev/null differ
diff --git a/lib/admin/add_card.dart b/lib/admin/add_card.dart
deleted file mode 100644
index e77d0e9..0000000
--- a/lib/admin/add_card.dart
+++ /dev/null
@@ -1,295 +0,0 @@
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-
-import 'package:file_picker/file_picker.dart';
-import 'package:mnemo_cards/admin/admin_api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-import 'package:mnemo_cards_frontend_common/mnemo_cards_frontend_common.dart';
-
-import '../main.dart';
-
-class EditCard {
- GameCardDto gameCardDto;
- AdminApi adminApi;
- bool imageChanged = false;
-
- EditCard(GameCardDto? cardDto, this.adminApi)
- : gameCardDto = cardDto ??
- const GameCardDto(
- id: -1,
- image: null,
- mnemo: null,
- original: null,
- translation: null,
- transcription: null,
- transcriptionMnemo: null,
- imageBack: null,
- back: null,
- );
-
- void _saveCard() async {
- final dto = imageChanged ? gameCardDto : gameCardDto.copyWith.image(null);
- final result = await adminApi.addCard(dto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void _deleteCard() async {
- final result = await adminApi.deleteCard(gameCardDto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void addCard(BuildContext context) {
- final theme = Theme.of(context).textTheme;
-
- final TextEditingController originalController =
- TextEditingController(text: gameCardDto.original);
- final TextEditingController translationController =
- TextEditingController(text: gameCardDto.translation);
- final TextEditingController transcriptionController =
- TextEditingController(text: gameCardDto.transcription);
- final TextEditingController transcriptionMnemoController =
- TextEditingController(text: gameCardDto.transcriptionMnemo);
- final TextEditingController mnemoController =
- TextEditingController(text: gameCardDto.mnemo);
- final TextEditingController backController =
- TextEditingController(text: gameCardDto.back);
-
- showDialog(
- context: context,
- builder: (c) {
- return Center(
- child: Scaffold(
- body: Material(
- child: ListView(
- children: [
- Header(
- '${gameCardDto.id}',
- hasPopButton: true,
- trail: Row(
- children: [
- IconButton(
- onPressed: _saveCard,
- icon: Icon(Icons.save),
- ),
- if (gameCardDto.id >= 0)
- GestureDetector(
- onLongPress: _deleteCard,
- child: Icon(Icons.delete),
- )
- ],
- ),
- ),
- StatefulBuilder(builder: (context, setState) {
- return Stack(
- alignment: Alignment.center,
- children: [
- Padding(
- padding: EdgeInsets.all(8.0),
- child: Column(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- Column(
- children: [
- TextField(
- controller: originalController,
- onChanged: (v) {
- gameCardDto =
- gameCardDto.copyWith(original: v);
- },
- decoration: InputDecoration(
- hintText: 'Original (cerdo)'),
- maxLines: 1,
- style: theme.displayMedium?.copyWith(
- fontSize:
- theme.displayMedium!.fontSize!,
- ),
- ),
- TextField(
- controller: translationController,
- onChanged: (v) {
- gameCardDto = gameCardDto.copyWith(
- translation: v);
- },
- decoration: InputDecoration(
- hintText: 'Translation (свинья)'),
- maxLines: 1,
- style: theme.headlineSmall?.copyWith(
- color: theme.headlineSmall!.color!
- .withOpacity(0.5),
- fontSize:
- theme.headlineSmall!.fontSize!,
- ),
- ),
- Row(
- children: [
- Flexible(
- child: TextField(
- controller: transcriptionController,
- onChanged: (v) {
- gameCardDto = gameCardDto
- .copyWith(transcription: v);
- },
- decoration: InputDecoration(
- hintText: 'Transcription'),
- maxLines: 1,
- style:
- theme.headlineSmall?.copyWith(
- color:
- theme.headlineSmall!.color!,
- fontSize: theme
- .headlineSmall!.fontSize!,
- ),
- ),
- ),
- SizedBox(
- width: 4.0,
- ),
- Flexible(
- child: TextField(
- controller:
- transcriptionMnemoController,
- onChanged: (v) {
- gameCardDto =
- gameCardDto.copyWith(
- transcriptionMnemo: v);
- },
- decoration: InputDecoration(
- hintText:
- 'Transcription mnemo'),
- maxLines: 1,
- style:
- theme.headlineSmall?.copyWith(
- color:
- theme.headlineSmall!.color!,
- fontSize: theme
- .headlineSmall!.fontSize!,
- ),
- ),
- ),
- ],
- ),
- ],
- ),
- SizedBox(
- width: MediaQuery.of(context).size.width - 20,
- height:
- MediaQuery.of(context).size.width - 20,
- child: GestureDetector(
- onTap: () async {
- FilePickerResult? result =
- await FilePicker.platform.pickFiles();
- if (result != null &&
- result.files.isNotEmpty) {
- imageChanged = true;
- final file = result.files.first;
- final encoded = base64.normalize(
- base64.encode(
- File(file.path!).readAsBytesSync(),
- ),
- );
- gameCardDto = gameCardDto.copyWith(
- image: encoded,
- );
- }
- setState(() {});
- },
- child: gameCardDto.image == null
- ? Container(
- alignment: Alignment.center,
- color: Colors.white,
- child: Icon(
- Icons.image,
- color: Colors.grey,
- ),
- )
- : Stack(
- children: [
- ImageFade(
- key: ValueKey(gameCardDto.id),
- image: MemoryImage(
- base64.decode(
- gameCardDto.image!)),
- fit: BoxFit.contain,
- syncDuration: Duration.zero,
- ),
- Positioned(
- top: 8.0,
- right: 8.0,
- child: IconButton(
- onPressed: () {
- gameCardDto =
- gameCardDto.copyWith(
- image: null,
- );
- setState(() {});
- },
- icon: Icon(Icons.delete)),
- ),
- ],
- ),
- ),
- ),
- TextField(
- controller: mnemoController,
- onChanged: (v) {
- gameCardDto =
- gameCardDto.copyWith(mnemo: v);
- },
- decoration: InputDecoration(
- hintText: 'Mnemo ([свинья] с сердечком)',
- ),
- maxLines: 1,
- style: theme.headlineSmall?.copyWith(
- fontSize: theme.headlineSmall!.fontSize!,
- ),
- ),
- TextField(
- controller: backController,
- onChanged: (v) {
- gameCardDto = gameCardDto.copyWith(
- back: v,
- );
- },
- decoration: InputDecoration(
- hintText: 'Задняя сторона',
- ),
- maxLines: 1,
- style: theme.headlineSmall?.copyWith(
- fontSize: theme.headlineSmall!.fontSize!,
- ),
- ),
- ],
- ),
- ),
- ],
- );
- }),
- ],
- ),
- ),
- ),
- );
- });
- }
-}
diff --git a/lib/admin/add_package.dart b/lib/admin/add_package.dart
deleted file mode 100644
index a3de6bd..0000000
--- a/lib/admin/add_package.dart
+++ /dev/null
@@ -1,298 +0,0 @@
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-import 'package:flutter_colorpicker/flutter_colorpicker.dart';
-import 'package:mnemo_cards/admin/admin_api.dart';
-import 'package:mnemo_cards/managers/repository/api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-import 'package:file_picker/file_picker.dart';
-import 'package:mnemo_cards_frontend_common/mnemo_cards_frontend_common.dart';
-import '../utils/string_helper.dart';
-
-import '../main.dart';
-import 'text_param.dart';
-
-class AddPackage with Api {
- EditCardPackDto cardPackDto;
- AdminApi adminApi;
- bool palleteVisible = false;
-
- AddPackage(EditCardPackDto? cardPackDto, this.adminApi)
- : cardPackDto = cardPackDto ?? EditCardPackDto.fromJson({});
-
- void _deletePack() async {
- final delete = await showDialog(
- context: scaffoldKey.currentContext!,
- builder: (c) => Center(
- child: Container(
- color: Colors.white,
- width: 200,
- child: IconButton(
- icon: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Text('Удалить '),
- Icon(Icons.delete),
- ],
- ),
- onPressed: () {
- Navigator.of(c).pop(true);
- },
- ),
- ),
- ));
- if (!delete) return;
- final result = await adminApi.deletePack(cardPackDto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void _savePack() async {
- final result = await adminApi.editPack(cardPackDto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void addPack(BuildContext context) {
- showDialog(
- context: context,
- builder: (c) {
- return Center(
- child: Card(
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: ListView(
- children: [
- Header(
- '${cardPackDto.id}',
- hasPopButton: true,
- trail: Row(
- children: [
- IconButton(
- onPressed: _savePack,
- icon: Icon(Icons.save),
- ),
- if (cardPackDto.id != null)
- GestureDetector(
- onLongPress: _deletePack,
- child: Icon(Icons.delete),
- )
- ],
- ),
- ),
- TextParam(
- 'Title',
- cardPackDto.title,
- (v) {
- cardPackDto = cardPackDto.copyWith.title(v);
- },
- ),
- TextParam(
- 'Subtitle',
- cardPackDto.subtitle,
- (v) {
- cardPackDto = cardPackDto.copyWith.subtitle(v);
- },
- ),
- TextParam(
- 'Description',
- cardPackDto.description,
- (v) => cardPackDto = cardPackDto.copyWith.description(v),
- ),
- TextParam(
- 'Size',
- cardPackDto.size?.toString(),
- (v) {
- cardPackDto = cardPackDto.copyWith.size(
- int.tryParse(v),
- );
- },
- ),
- TextParam(
- 'Google play id',
- cardPackDto.googlePlayId,
- (v) {
- cardPackDto = cardPackDto.copyWith.googlePlayId(v);
- },
- ),
- TextParam(
- 'Rustore id',
- cardPackDto.rustoreId,
- (v) {
- cardPackDto = cardPackDto.copyWith.rustoreId(v);
- },
- ),
- TextParam(
- 'Appstore id',
- cardPackDto.appStoreId,
- (v) {
- cardPackDto = cardPackDto.copyWith.appStoreId(v);
- },
- ),
- TextParam(
- 'Price',
- cardPackDto.price,
- (v) {
- cardPackDto = cardPackDto.copyWith.price(v);
- },
- ),
- Row(
- children: [
- Expanded(child: Text('Enabled ')),
- StatefulBuilder(builder: (context, setState) {
- return Switch(
- value: cardPackDto.enabled ?? false,
- onChanged: (v) {
- setState(() {
- cardPackDto = cardPackDto.copyWith.enabled(v);
- });
- });
- }),
- ],
- ),
- StatefulBuilder(builder: (context, setState) {
- return Column(
- children: [
- Row(
- children: [
- Expanded(child: Text('Поменять цвет ')),
- Switch(
- value: palleteVisible,
- onChanged: (v) => setState(() {
- palleteVisible = !palleteVisible;
- }),
- ),
- ],
- ),
- if (palleteVisible)
- ColorPicker(
- pickerAreaHeightPercent: 0.5,
- paletteType: PaletteType.hsvWithHue,
- pickerColor: cardPackDto.color?.asColor ??
- Colors.transparent,
- onColorChanged: (color) {
- String? colorString;
- if (color.alpha != 0) {
- colorString = '#${color.toHexString()}';
- }
- cardPackDto =
- cardPackDto.copyWith.color(colorString);
- },
- ),
- ],
- );
- }),
- StatefulBuilder(builder: (context, setState) {
- return SizedBox(
- width: MediaQuery.of(context).size.width - 20,
- height: MediaQuery.of(context).size.width - 20,
- child: GestureDetector(
- onTap: () async {
- FilePickerResult? result =
- await FilePicker.platform.pickFiles();
- if (result != null && result.files.isNotEmpty) {
- final file = result.files.first;
- final encoded = base64.normalize(
- base64.encode(
- File(file.path!).readAsBytesSync(),
- ),
- );
- cardPackDto = cardPackDto.copyWith.cover(
- encoded,
- );
- }
- setState(() {});
- },
- child: cardPackDto.cover == null
- ? Container(
- alignment: Alignment.center,
- color: Colors.white,
- child: Icon(
- Icons.image,
- color: Colors.grey,
- ),
- )
- : Stack(
- children: [
- ImageFade(
- key: ValueKey(cardPackDto.id),
- image: MemoryImage(
- base64.decode(cardPackDto.cover!)),
- fit: BoxFit.contain,
- syncDuration: Duration.zero,
- ),
- Positioned(
- top: 8.0,
- right: 8.0,
- child: IconButton(
- onPressed: () {
- cardPackDto = cardPackDto.copyWith(
- cover: null,
- );
- setState(() {});
- },
- icon: Icon(Icons.delete)),
- ),
- ],
- ),
- ),
- );
- }),
- TextParam(
- 'Preview cards',
- cardPackDto.previewCards?.toString(),
- (v) {
- final cards = v
- .decodeList()
- .map((e) => e.toString())
- .toList();
- cardPackDto = cardPackDto.copyWith.previewCards(cards);
- },
- ),
- TextParam(
- 'Order (lower is higher)',
- cardPackDto.order?.toString(),
- (v) {
- cardPackDto = cardPackDto.copyWith.order(
- int.tryParse(v),
- );
- },
- ),
- TextParam(
- 'Cards order (ids)',
- cardPackDto.cardsOrder?.join(','),
- (v) {
- final ids = v
- .split(',')
- .map((s) => int.tryParse(s.trim()))
- .whereNotNull()
- .toList();
- cardPackDto = cardPackDto.copyWith(cardsOrder: ids);
- },
- ),
- ],
- ),
- ),
- ),
- );
- });
- }
-}
-
diff --git a/lib/admin/add_plan.dart b/lib/admin/add_plan.dart
deleted file mode 100644
index 3ab4166..0000000
--- a/lib/admin/add_plan.dart
+++ /dev/null
@@ -1,389 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'package:mnemo_cards/admin/admin_api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-import 'package:mnemo_cards_frontend_common/mnemo_cards_frontend_common.dart';
-
-import '../di/injector.dart';
-import '../main.dart';
-import 'text_param.dart';
-
-class AddPlan {
- List allPlans = [];
- List selectedFeatures = [];
- late SubscriptionPlanAdminDto planDto;
- late AdminApi adminApi;
-
- final availableFeatures = [
- SubscriptionFeatureEnum.ads,
- SubscriptionFeatureEnum.packs,
- ];
-
- AddPlan() {
- this.adminApi = getIt.get();
- _init(null);
- }
-
- void _init(SubscriptionPlanAdminDto? dto) {
- planDto = dto ??
- const SubscriptionPlanAdminDto(
- ui: SubscriptionPlanUIDto(
- currency: 'руб',
- ),
- price: '123',
- currency: 'руб',
- durationDays: 0,
- features: [
- SubscriptionFeatureEnum.ads,
- SubscriptionFeatureEnum.packs,
- ],
- paymentId: null,
- paymentSystem: PaymentSystem.unknown,
- );
- selectedFeatures = planDto.features.toList();
- }
-
- Future _loadPlans() async {
- final result = await adminApi.getSubscriptionPlans();
- allPlans = result;
- return true;
- }
-
- void _saveSubscriptionPlan() async {
- final result = await adminApi.addSubscriptionPlan(
- planDto.copyWith(
- features: selectedFeatures,
- ),
- );
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void _deletePLan() async {
- if (planDto.id == null) return;
- final result = await adminApi.deleteSubscriptionPlan(planDto.id.toString());
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void addPlan(BuildContext context) {
- showDialog(
- context: context,
- builder: (c) {
- return FutureBuilder(
- future: _loadPlans(),
- builder: (context, snapshot) {
- if (snapshot.data != true) {
- return Center(
- child: Material(
- child: Center(child: CircularProgressIndicator()),
- ),
- );
- }
- return Center(
- child: Scaffold(
- body: Material(
- child: StatefulBuilder(builder: (context, setPlan) {
- return ListView(
- children: [
- Header(
- '${planDto.id}',
- hasPopButton: true,
- trail: Row(
- children: [
- IconButton(
- onPressed: () async {
- await _loadPlans();
- setPlan(() {});
- },
- icon: Icon(Icons.sync),
- ),
- IconButton(
- onPressed: _saveSubscriptionPlan,
- icon: Icon(Icons.save),
- ),
- if (planDto.id != null)
- IconButton(
- onPressed: () async {
- planDto = planDto.copyWith(id: null);
- _saveSubscriptionPlan();
- },
- icon: Icon(Icons.copy),
- ),
- if (planDto.id != null)
- GestureDetector(
- onLongPress: _deletePLan,
- child: Icon(Icons.delete),
- )
- ],
- ),
- ),
- DropdownMenu(
- initialSelection: null,
- onSelected: (String? value) {
- setPlan(() {
- _init(
- allPlans
- .firstWhereOrNull((v) => v.id == value),
- );
- });
- },
- dropdownMenuEntries: [
- ...allPlans,
- null,
- ].map((plan) {
- return DropdownMenuEntry(
- value: plan?.id,
- label: plan == null
- ? 'New'
- : '${plan.ui.titleLead ?? ''} ${plan.ui.title ?? ''} ${plan.paymentSystem.name}',
- );
- }).toList(),
- ),
- StatefulBuilder(builder: (context, setState) {
- return Stack(
- alignment: Alignment.center,
- children: [
- Padding(
- padding: EdgeInsets.all(8.0),
- child: Column(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment:
- MainAxisAlignment.spaceEvenly,
- children: [
- Column(
- children: [
- TextParam(
- 'Currency',
- planDto.currency,
- (v) {
- planDto = planDto.copyWith(
- currency: v);
- },
- ),
- TextParam(
- 'Price',
- planDto.price,
- (v) {
- planDto =
- planDto.copyWith(price: v);
- },
- ),
- TextParam(
- 'Days',
- planDto.durationDays.toString(),
- (v) {
- final days = int.parse(v);
- planDto = planDto.copyWith(
- durationDays: days,
- );
- },
- ),
- Text('Features:'),
- ListView.builder(
- shrinkWrap: true,
- itemCount:
- availableFeatures.length,
- itemBuilder: (context, index) {
- final item =
- availableFeatures[index];
- return ListTile(
- title: Text(item.name),
- onTap: () {
- setState(() {
- if (selectedFeatures
- .contains(item)) {
- selectedFeatures
- .remove(item);
- } else {
- selectedFeatures
- .add(item);
- }
- });
- },
- selected: selectedFeatures
- .contains(item),
- selectedTileColor: Colors.blue
- .withOpacity(0.5),
- );
- },
- ),
- Text('UI:'),
- TextParam(
- 'UI Currency',
- planDto.ui.currency,
- (v) {
- final ui = planDto.ui.copyWith(
- currency: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Title lead',
- planDto.ui.titleLead,
- (v) {
- final ui = planDto.ui.copyWith(
- titleLead: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Title',
- planDto.ui.title,
- (v) {
- final ui = planDto.ui.copyWith(
- title: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Price per month',
- planDto.ui.pricePerMonth,
- (v) {
- final ui = planDto.ui.copyWith(
- pricePerMonth: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Subtitle crossed',
- planDto.ui.subtitleCrossed,
- (v) {
- final ui = planDto.ui.copyWith(
- subtitleCrossed: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Subtitle',
- planDto.ui.subtitle,
- (v) {
- final ui = planDto.ui.copyWith(
- subtitle: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Tip',
- planDto.ui.tip,
- (v) {
- final ui = planDto.ui.copyWith(
- tip: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- TextParam(
- 'UI Tip color',
- planDto.ui.tipColor,
- (v) {
- final ui = planDto.ui.copyWith(
- tipColor: v,
- );
- planDto =
- planDto.copyWith.ui(ui);
- },
- ),
- Padding(
- padding:
- const EdgeInsets.all(8.0),
- child: Row(
- children: [
- Text('Payment type '),
- Expanded(
- child: StatefulBuilder(
- builder: (context,
- setState) {
- return DropdownButton<
- PaymentSystem>(
- value: planDto
- .paymentSystem,
- items:
- PaymentSystem.values
- .map(
- (v) =>
- DropdownMenuItem(
- child: Text(
- v.name),
- value: v,
- ),
- )
- .toList(),
- onChanged: (v) {
- setState(() {
- planDto = planDto
- .copyWith(
- paymentSystem: v ??
- PaymentSystem
- .unknown,
- );
- });
- },
- );
- }),
- ),
- ],
- ),
- ),
- TextParam(
- 'Payment id',
- planDto.paymentId,
- (v) {
- planDto = planDto.copyWith(
- paymentId: v,
- );
- },
- ),
- ],
- ),
- ],
- ),
- ),
- ],
- );
- }),
- ],
- );
- }),
- ),
- ),
- );
- });
- });
- }
-
- Widget uiEditor() {
- return Column(
- children: [],
- );
- }
-}
diff --git a/lib/admin/add_promocode_campaign.dart b/lib/admin/add_promocode_campaign.dart
deleted file mode 100644
index ba94a9b..0000000
--- a/lib/admin/add_promocode_campaign.dart
+++ /dev/null
@@ -1,388 +0,0 @@
-import 'dart:async';
-import 'dart:developer';
-
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-
-import 'package:mnemo_cards/admin/admin_api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-import 'package:mnemo_cards_frontend_common/mnemo_cards_frontend_common.dart';
-
-import '../di/injector.dart';
-import '../main.dart';
-import 'date_param.dart';
-import 'enum_param.dart';
-import 'int_param.dart';
-import 'text_param.dart';
-
-class AddPromocodeCampaign {
- late PromoCodesCampaignDto campaignDto;
- late AdminApi adminApi;
- List _campaigns = [];
-
- final availableStatuses = [
- PromoCodeCampaignStatus.created,
- PromoCodeCampaignStatus.preparing,
- PromoCodeCampaignStatus.ready,
- PromoCodeCampaignStatus.active,
- PromoCodeCampaignStatus.disabled,
- ];
-
- AddPromocodeCampaign() {
- this.adminApi = getIt.get();
- _init(null);
- }
-
- void _init(PromoCodesCampaignDto? dto) {
- final now = DateTime.now();
- campaignDto = dto ??
- PromoCodesCampaignDto(
- products: [],
- activationsPerCode: 1,
- generationSize: 100,
- start: now,
- finish: now.add(Duration(days: 30)),
- status: PromoCodeCampaignStatus.disabled,
- name: null,
- template: r'$s$s$s$s$s$s$s$s',
- );
- }
-
- Future _loadCampaigns() async {
- try {
- _campaigns = await adminApi.getPromoCodeCampaigns();
- } catch (e, s) {
- log('Error', error: e, stackTrace: s);
- print('Error $e');
- return false;
- }
- return true;
- }
-
- Future _loadCampaign(String id) async {
- try {
- final campaign = await adminApi.getPromoCodeCampaign(id);
- if (campaign != null) {
- _campaigns.removeWhere((v) => v.id.toString() == id);
- _campaigns.add(campaign);
- campaignDto = campaign;
- }
- } catch (e, s) {
- log('Error', error: e, stackTrace: s);
- print('Error $e');
- return false;
- }
- return true;
- }
-
- void _savePromoCodeCampaign() async {
- final result = await adminApi.addPromoCodeCampaign(campaignDto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void _deletePromoCodeCampaign() async {
- if (campaignDto.id == null) return;
- final result =
- await adminApi.deletePromoCodeCampaign(campaignDto.id.toString());
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void addCampaign(BuildContext context) {
- showDialog(
- context: context,
- builder: (c) {
- return FutureBuilder(
- future: _loadCampaigns(),
- builder: (context, snapshot) {
- if (snapshot.data != true) {
- return Center(
- child: Material(
- child: Center(child: CircularProgressIndicator()),
- ),
- );
- }
- return Center(
- child: Scaffold(
- body: Material(
- child: StatefulBuilder(builder: (context, setCampaign) {
- final codes = campaignDto.promoCodes;
-
- return ListView(
- children: [
- Header(
- '${campaignDto.id}',
- hasPopButton: true,
- trail: Row(
- children: [
- if (campaignDto.id != null)
- IconButton(
- onPressed: () async {
- await _loadCampaign(
- campaignDto.id.toString(),
- );
- setCampaign(() {});
- },
- icon: Icon(Icons.note),
- ),
- IconButton(
- onPressed: _savePromoCodeCampaign,
- icon: Icon(Icons.save),
- ),
- if (campaignDto.id != null)
- IconButton(
- onPressed: () async {
- campaignDto =
- campaignDto.copyWith(id: null);
- _savePromoCodeCampaign();
- },
- icon: Icon(Icons.copy),
- ),
- if (campaignDto.id != null)
- GestureDetector(
- onLongPress: _deletePromoCodeCampaign,
- child: Icon(Icons.delete),
- )
- ],
- ),
- ),
- DropdownMenu(
- initialSelection: null,
- onSelected: (int? value) {
- setCampaign(() {
- _init(
- _campaigns
- .firstWhereOrNull((v) => v.id == value),
- );
- });
- },
- dropdownMenuEntries: [
- ..._campaigns,
- null,
- ].map((campaign) {
- return DropdownMenuEntry(
- value: campaign?.id,
- label: campaign == null
- ? 'New'
- : '${campaign.name ??campaign.id} ${campaign.status.name}',
- );
- }).toList(),
- ),
- StatefulBuilder(builder: (context, setState) {
- return Padding(
- padding: EdgeInsets.all(8.0),
- child: Column(
- children: [
- TextParam(
- 'Name',
- campaignDto.name,
- (v) {
- campaignDto = campaignDto.copyWith(
- name: v,
- );
- },
- ),
- TextParam(
- 'Template',
- campaignDto.template,
- (v) {
- campaignDto = campaignDto.copyWith(
- template: v,
- );
- },
- description:
- r'$d - digit $l - letter $s - any',
- ),
- IntParam(
- 'Generation size',
- campaignDto.generationSize,
- (v) {
- campaignDto = campaignDto.copyWith(
- generationSize: v);
- },
- ),
- IntParam(
- 'Activations per code',
- campaignDto.activationsPerCode,
- (v) {
- campaignDto = campaignDto.copyWith(
- activationsPerCode: v,
- );
- },
- ),
- DateParam(
- 'Start',
- campaignDto.start,
- (v) {
- setState(() {
- campaignDto =
- campaignDto.copyWith(start: v);
- });
- },
- ),
- DateParam(
- 'Finish',
- campaignDto.finish,
- (v) {
- setState(() {
- campaignDto =
- campaignDto.copyWith(finish: v);
- });
- },
- ),
- EnumParam(
- 'Status',
- PromoCodeCampaignStatus.values,
- campaignDto.status, (v) {
- setState(() {
- campaignDto =
- campaignDto.copyWith(status: v);
- });
- }),
- Text(
- 'Created to generate promocodes\n'
- 'Disabled to disable\n'
- 'Dont use other statuses!',
- style: TextStyle(fontSize: 12),
- ),
- Text('Products:'),
- ListView.builder(
- shrinkWrap: true,
- itemCount:
- campaignDto.products.length + 1,
- itemBuilder: (context, index) {
- if (index ==
- campaignDto.products.length) {
- return ListTile(
- title: Text('Add'),
- onTap: () async {
- final p =
- await _showProductDialog(
- context, null);
- if (p != null) {
- setState(() {
- campaignDto.products.add(p);
- });
- }
- },
- );
- }
- final item =
- campaignDto.products[index];
- return ListTile(
- title: Text(
- '${item.type.name} ${item.id ?? ''}'),
- onTap: () async {
- final p = await _showProductDialog(
- context,
- item,
- );
- if (p != null) {
- setState(() {
- campaignDto.products.add(p);
- });
- }
- },
- trailing: IconButton(
- icon: Icon(Icons.delete),
- onPressed: () {
- setState(() {
- campaignDto.products
- .remove(item);
- });
- },
- ),
- );
- },
- ),
- SimpleTile.text(
- text: codes == null
- ? 'Codes not loaded'
- : 'Codes: ${codes.length == 1 ? codes.first : codes.length}',
- onTap: () async {
- if (codes != null) {
- await Clipboard.setData(
- ClipboardData(
- text: codes.join('\n'),
- ),
- );
- }
- },
- ),
- ],
- ),
- );
- }),
- ],
- );
- }),
- ),
- ),
- );
- });
- });
- }
-
- Future _showProductDialog(
- BuildContext context,
- MnemoCardsProduct? initialProduct,
- ) async {
- var prod = initialProduct ?? MnemoCardsProduct();
- final result = await showDialog(
- context: context,
- builder: (c) => Center(
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: Material(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- TextParam('Id', prod.id, (v) {
- prod = prod.copyWith(id: v);
- }),
- EnumParam(
- 'Type',
- MnemoCardsProductType.values,
- prod.type,
- (v) {
- prod = prod.copyWith(type: v);
- },
- ),
- MaterialButton(
- onPressed: () {
- Navigator.of(context).pop(prod);
- },
- child: Text('Save'),
- ),
- ],
- ),
- ),
- ),
- ),
- );
- return result;
- }
-
- Widget uiEditor() {
- return Column(
- children: [],
- );
- }
-}
diff --git a/lib/admin/add_user.dart b/lib/admin/add_user.dart
deleted file mode 100644
index 930d9a3..0000000
--- a/lib/admin/add_user.dart
+++ /dev/null
@@ -1,228 +0,0 @@
-import 'dart:async';
-
-import 'package:flutter/material.dart';
-
-import 'package:flutter/services.dart';
-import 'package:mnemo_cards/admin/admin_api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-import 'package:mnemo_cards_frontend_common/mnemo_cards_frontend_common.dart';
-
-import '../main.dart';
-
-class EditUser {
- UserDto userDto;
- AdminApi adminApi;
- bool imageChanged = false;
-
- EditUser(UserDto userDto, this.adminApi) : userDto = userDto;
-
- void _saveUser() async {
- final dto = userDto;
- final result = await adminApi.editUser(dto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void _deleteCard() async {
- final result = await adminApi.deleteUser(userDto);
- if (!result) {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('ERROR'),
- ));
- } else {
- ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar(SnackBar(
- content: Text('Success!!!'),
- ));
- appRouter.maybePop();
- }
- }
-
- void addUser(BuildContext context) {
- final theme = Theme.of(context).textTheme;
-
- final TextEditingController nameController =
- TextEditingController(text: userDto.name);
-
- final TextEditingController packsController =
- TextEditingController(text: userDto.packs.join(','));
-
- showDialog(
- context: context,
- builder: (c) {
- return Center(
- child: Scaffold(
- body: Material(
- child: ListView(
- children: [
- Header(
- '${userDto.id}',
- hasPopButton: true,
- trail: Row(
- children: [
- IconButton(
- onPressed: _saveUser,
- icon: Icon(Icons.save),
- ),
- if (userDto.id != null && userDto.id! >= 0)
- GestureDetector(
- onLongPress: _deleteCard,
- child: Icon(Icons.delete),
- )
- ],
- ),
- ),
- StatefulBuilder(builder: (context, setState) {
- return Padding(
- padding: EdgeInsets.all(8.0),
- child: Column(
- children: [
- GestureDetector(
- onTap: () {
- if (userDto.id != null) {
- Clipboard.setData(ClipboardData(
- text: userDto.id.toString()));
- }
- },
- child: Text('ID: ${userDto.id}'),
- ),
- Text('Admin: ${userDto.admin}'),
- TextField(
- controller: nameController,
- onChanged: (v) {
- userDto = userDto.copyWith(name: v);
- },
- decoration: InputDecoration(hintText: 'Name'),
- maxLines: 1,
- style: theme.displayMedium?.copyWith(
- fontSize: theme.displayMedium!.fontSize!,
- ),
- ),
- Row(
- children: [
- Expanded(child: Text('Subscription ')),
- StatefulBuilder(builder: (context, setState) {
- return Switch(
- value: userDto.subscription ?? false,
- onChanged: (v) {
- setState(() {
- userDto =
- userDto.copyWith.subscription(v);
- });
- });
- }),
- ],
- ),
- TextField(
- controller: packsController,
- onChanged: (v) {
- final packs = v
- .split(',')
- .map((s) =>
- int.tryParse(s.trim())?.toString())
- .whereNotNull()
- .toList();
- userDto = userDto.copyWith(packs: packs);
- final packsText = packs.join(',');
- if (!packsController.text
- .startsWith(packsText)) {
- packsController.text = packsText;
- }
- },
- decoration: InputDecoration(hintText: 'Packs'),
- maxLines: 1,
- style: theme.displayMedium?.copyWith(
- fontSize: theme.displayMedium!.fontSize!,
- ),
- ),
- ],
- ),
- );
- }),
- _Payments(adminApi, userDto),
- Text(
- 'Stats: ${userDto.userDataDto?.allWordsStatistics?.total} words',
- ),
- Text(
- 'Stats: ${userDto.userDataDto?.allTestsStatistics?.tests.length} tests',
- ),
- Text(
- 'Last test session: ${userDto.userDataDto?.allTestsStatistics?.lastSessionToken}',
- ),
- ],
- ),
- ),
- ),
- );
- });
- }
-}
-
-class _Payments extends StatelessWidget {
- final AdminApi adminApi;
- final UserDto userDto;
-
- _Payments(this.adminApi, this.userDto);
-
- @override
- Widget build(BuildContext context) {
- final sc = StreamController?>();
- final stream = sc.stream;
-
- return ExpansionTile(
- title: Text('Транзакции'),
- maintainState: true,
- onExpansionChanged: (v) async {
- if (v) {
- sc.add(null);
- final payments =
- await adminApi.getUserPurchases(userDto.id.toString());
- sc.add(payments);
- }
- },
- children: [
- StreamBuilder?>(
- stream: stream,
- builder: (context, snapshot) {
- final payments = snapshot.data;
- if (payments == null) {
- return Text('Loading...');
- }
- if (payments.isEmpty) {
- return Text('Нет покупок');
- }
- return Column(
- children: payments.map((p) {
- return ListTile(
- title: Text('${p.amount} ${p.currency}'),
- subtitle: Text(dateString(p.date)),
- trailing: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.end,
- children: [
- Text(p.status.name),
- Text(p.paymentSystem.name),
- Text(
- p.products.map((p) => '${p.type}: ${p.id}').join('\n'),
- ),
- ],
- ),
- );
- }).toList(),
- );
- },
- ),
- ],
- );
- }
-
- String dateString(DateTime date) =>
- '${date.year}.${date.month.toString().padLeft(2, '0')}.${date.day.toString().padLeft(2, '0')} ${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}:${date.second.toString().padLeft(2, '0')}';
-}
diff --git a/lib/admin/admin_api.dart b/lib/admin/admin_api.dart
deleted file mode 100644
index 48f9494..0000000
--- a/lib/admin/admin_api.dart
+++ /dev/null
@@ -1,168 +0,0 @@
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:dio/dio.dart';
-import 'package:mnemo_cards/di/injector.dart';
-import 'package:mnemo_cards/features/packs/packs_api.dart';
-import 'package:mnemo_cards/features/worker/worker_ext.dart';
-import 'package:mnemo_cards/managers/repository/api.dart';
-import 'package:mnemo_cards_common/mnemo_cards_common.dart';
-
-class AdminApi with Api {
- final Dio _dio;
-
- AdminApi(this._dio);
-
- Future addCard(GameCardDto dto) async {
- final r = await _dio.post(
- '$path/cards/add',
- data: jsonEncode(dto.toJson()),
- );
- return r.statusCode == 200;
- }
-
- Future deleteCard(GameCardDto dto) async {
- final r = await _dio.post(
- '$path/cards/delete',
- data: jsonEncode({'id': dto.id.toString()}),
- );
- return r.statusCode == 200;
- }
-
- Future> getCardIds() async {
- final r = await _dio.get(
- '$path/cards/ids',
- );
- return (jsonDecode(r.data!)['ids'] as String).split(',').cast();
- }
-
- Future> getCards(List ids) async {
- final r = await _dio.get(
- '$path/cards',
- queryParameters: {'ids': ids.join(',')},
- );
- return (r.data as String).decodeList(GameCardDto.fromJson);
- }
-
- Future> getUsers(List ids) async {
- final r = await _dio.get(
- '$path/users',
- queryParameters: {'ids': ids.join(',')},
- );
- return (jsonDecode(r.data!) as List)
- .map((e) => UserDto.fromJson(e as Map))
- .toList()
- .cast();
- }
-
- Future> getUserIds() async {
- final r = await _dio.get(
- '$path/users/ids',
- );
- return (jsonDecode(r.data!)['ids'] as String).split(',').cast();
- }
-
- Future> getUserPurchases(String userId) async {
- final r = await _dio
- .get('$path/user/purchases', queryParameters: {'id': userId});
- return (jsonDecode(r.data!)['payments'] as List)
- .cast