source code added

This commit is contained in:
2026-08-28 19:24:04 +05:30
parent c446fa7f01
commit 5b34c127de
138 changed files with 12915 additions and 0 deletions

425
development/CLAUDE.md Normal file
View File

@@ -0,0 +1,425 @@
# TPM CMS — Compact Codebase Reference
> **Purpose:** Load this file at the start of any AI session to understand the full stack without reading source files.
> Last updated: 2026-06-05
---
## Architecture Overview
```
Browser (React) ←→ tpm_cms_backend (Flask :5000)
├── tpm_cms_workflow (Flask :5001) # email/node workflow engine
├── tpm_cms_asset_manager (Flask :5002) # S3 file ops
└── tpm_asset_manager_app_web_socket # Node.js WS bridge
├── WebSocket server (:WS_PORT) # desktop Flutter app connects here
└── HTTP bridge (:HTTP_PORT) # backend POSTs to /send_message
Flutter Desktop App ←→ WebSocket bridge
```
All Python services share the same MongoDB database (default database from MONGO_URI). No message queue; services call each other via HTTP.
---
## Services
### 1. `tpm_cms_backend` — main API (Flask + JWT)
- **Entry:** `app.py` (~3466 lines, single file)
- **Port:** 5000 (dev), proxied via Nginx in prod
- **Auth:** JWT (`flask_jwt_extended`), bcrypt passwords, optional Azure SSO
- **Key env vars:** `MONGO_URI`, `JWT_SECRET_KEY`, `FLASK_SECRET_KEY`, `AZURE_REDIRECT_URI`, `WS_BRIDGE_HTTP_URL`, `DESKTOP_UNIQUE_ID`, `ASSET_MANAGER_URL`
#### Collections used
| Collection | Purpose |
|---|---|
| `users` | auth, roles (admin/pm/lead/user) |
| `clients` | client companies |
| `projects` | projects with embedded stages[] |
| `tasks` | user task assignments with time tracking |
| `brief_templates` | project brief + workflow templates |
| `sections` | reusable brief sections |
| `histories` | project history log |
| `dashboard_configs` | per-user dashboard widget configs |
| `planxo_auth_keys` | desktop app auth tokens |
| `azure_config` | Azure SSO config (single doc) |
| `settings` | `{type:'desktop_sync'}`, `{type:'folder_sync'}` |
| `planxo_approvals` | desktop access approval records |
#### API routes (all `@jwt_required()` unless noted)
```
POST /register # public
POST /login # public; GET returns HTML login page
GET /me
GET /health # public
# Clients
GET/POST /clients
GET/PUT/DELETE /clients/<id>
# Projects
GET/POST /projects
GET/PUT/DELETE /projects/<id> # id = MongoDB ObjectId
GET /projects/<int:id> # id = numeric project_id
GET /projects/search
GET/POST /projects/<id>/history
GET /projects/<id>/brief_template
POST /projects/<id>/brief
GET /projects/<id>/stages
POST /projects/<id>/stages/<key> # set status
POST /projects/<id>/stages/<key>/start
POST /projects/<id>/stages/<key>/pause
POST /projects/<id>/stages/<key>/complete
POST /projects/<id>/stages/<key>/assign
POST /projects/<id>/desktop-download # triggers WS bridge
# Brief Templates / Sections
GET/POST /brief_templates
GET/PUT/DELETE /brief_templates/<id>
GET /clients/<id>/brief_templates
GET/POST /sections
PUT/DELETE /sections/<id>
# Tasks
GET/POST /tasks
POST /tasks/<id>/assign|start|pause|resume|complete|reject
# Users (admin only for write)
GET/POST /users
PUT /users/<id>
POST /users/<id>/activate|deactivate
# Dashboard
GET /dashboard-stats
GET/POST /dashboard-configs
GET/PUT/DELETE /dashboard-configs/<id>
GET /dashboard-configs/default
POST /dashboard-data # widget data with filters
POST /dashboard-export # CSV
# Settings
GET/POST /settings/desktop-sync
GET/POST /settings/folder-sync
# PlanXO Desktop Auth
GET /planxo-auth/<auth_key> # HTML approval page
POST /planxo/app/auth/register-key # public
POST /api/planxo/app/auth/<key>/approve
POST /planxo/app/auth/<key>/approve # alias
POST /api/planxo-auth/<key>/approve # alias
GET /planxo/app/auth/check
POST /planxo/app/auth/revoke
GET /planxo/app/auth/keys
POST /planxo/app/auth/validate-key # public (called by WS server)
GET /planxo/folders/filtered # role-filtered S3 folder list
# Azure SSO
GET /azure-login-url
POST /azure-callback
POST /azure-config (admin)
# Server admin
GET /server-status
GET /server-status/logs/<service>
POST /server-status/restart/<service> # admin only
GET/POST /desktop-bridge/health|clients # proxy to WS bridge
# Files (GridFS — legacy)
POST /files/upload
GET /files/<id>
# Color (prepress)
POST /compute # Pantone→ECG via transicc
```
#### Role system
- `role_required('admin')` — admin only
- `role_required('pm','admin','lead','user')` — most write ops
- `jwt_required()` — any authenticated user
- `get_authenticated_user()` — reads token from URL param `?token=` OR `Authorization: Bearer`
---
### 2. `tpm_cms_asset_manager` — S3 file service (Flask :5002)
- **Entry:** `asset_manager_app.py`
- **No auth** — internal calls only from backend
- **Key env vars:** `S3_BUCKET`, `AWS_REGION`, `MONGO_URI`
#### S3 path convention
```
clients/{client_name}/{numeric_project_id}/ ← if client exists
projects/{numeric_project_id}/ ← no client
```
Folders created by uploading `{path}/.keep` placeholder.
#### Routes
```
POST /clients/<id>/create-folder
POST /projects/<id>/create-folder
POST /folders/create # generic, validates root prefix
POST /folders/batch-create # {base_folder, subfolders:[]}
GET /assets # ?folder=&q=&owner_id=&include_folders=
DELETE /assets/<id>
POST /assets/presign-upload # returns S3 presigned URL
POST /assets/confirm-upload # save asset record to MongoDB
GET /assets/<id>/download # presigned GET URL
POST /assets/batch-delete
GET /assets/folder-contents # flat list with S3 metadata
POST /zip-download # zip multiple keys
```
Assets stored in MongoDB `assets` collection with `s3_key`, `folder`, `filename`, `content_type`, `size`, `owner_id`, `created_at`.
---
### 3. `tpm_cms_workflow` — workflow engine (Flask :5001)
- **Entry:** `workflow_app.py`
- **No auth** — internal calls only from backend
- **Key env vars:** `MONGO_URI`, `AWS_REGION`, `SENDER_EMAIL`, `SENDER_NAME`
- Uses `ThreadPoolExecutor(max_workers=5)` for async node processing
#### Collections
- `workflows``{project_id, nodes:[], edges:[]}`
- `workflow_logs` — execution log per node
#### Node types
- `project` — pass-through start node
- `sendEmail` — sends via AWS SES; resolves `{{variable}}` placeholders
- `router` — conditional branching
- `stage` — maps to project stage key
- `approval` — waits for human approval action
#### Routes
```
POST /workflow # create workflow for project
POST /workflow/<id>/process # {node_id, variables:{}} — triggers async execution
GET /workflow/<id>
GET /workflow/project/<project_id>
POST /workflow/<id>/nodes/<node_id>/approve|reject
```
---
### 4. `tpm_asset_manager_app_web_socket` — WS bridge (Node.js)
- **Entry:** `server.js`
- **Ports:** `WS_PORT` (WebSocket), `HTTP_PORT` (Express HTTP)
- **Auth:** `?apiKey=<key>` on WebSocket connect + `unique_id` per client
- Stores connected clients in `Map<unique_id, ws>`
#### HTTP endpoints (called by backend)
```
POST /send_message # {unique_id, message:{type,data}} → forward to WS client
POST /request_download # {unique_id, folder, projectId} → trigger download on desktop
GET /health # returns {clients:[...unique_ids]}
GET /clients
```
#### WebSocket message types (server→client)
- `auth_approved` — desktop auth approved; includes user, expires_at, sync_interval
- `auth_revoked` — user logged in from web; desktop must logout
- `download_request` — trigger file download
#### WebSocket message types (client→server)
- `register_auth_key` — desktop registers key before browser approval
- `file_sync_complete`, `file_upload_complete` — status callbacks
---
## Data Models (key fields)
### Project
```json
{
"_id": ObjectId,
"project_id": 1000007, // numeric, auto-increment from last+1
"projectName": "string", // indexed unique per clientId
"clientId": ObjectId|null,
"project_name": "string", // duplicate of projectName (legacy)
"client_id": "string"|null, // duplicate of clientId (legacy)
"brand": "", "product": "", "variant": "",
"brief": {},
"template_id": "string",
"stages": [
{
"key": "stage_key",
"title": "Stage Title",
"status": "pending|in_progress|paused|completed",
"time": {"total_seconds": 0},
"start_time": 1234567890, // unix timestamp, present only when in_progress
"assigned_to": "user_id",
"history": [{"action":"start","timestamp":0,"user_id":""}]
}
],
"version": 1,
"created_at": ISODate,
"created_by": "user_id",
"project_update_history": [{"user_id":"","user_name":"","changed_fields":[],"timestamp":ms}]
}
```
### User
```json
{
"_id": ObjectId,
"username": "string",
"password": "bcrypt_hash",
"role": "admin|pm|lead|user",
"email": "", "name": "", "fullName": "", // name+fullName kept in sync
"mobile": "",
"isActive": true, "active": true, // both kept in sync
"last_active": ISODate // updated on /me call
}
```
### PlanXO Auth Key
```json
{
"auth_key": "string",
"unique_id": "desktop_client_id",
"status": "pending|approved|revoked",
"is_active": true,
"user_id": ObjectId,
"role": "string",
"expires_at": ISODate, // admin: +100 years; others: +8 hours
"approved_at": ISODate
}
```
---
## Code Review Findings
### 🔴 Critical Issues
**1. Password logged in plaintext (backend/app.py:300)**
```python
print(f"Login attempt for user: {username}, password: {password}") # REMOVE THIS
```
**2. `get_current_user_id()` referenced but never defined (app.py:3402)**
`/planxo/folders/filtered` calls `get_current_user_id()` — this will raise `NameError` at runtime. Replace with `get_jwt_identity()` and add `@jwt_required()`.
**3. `safe_text()` referenced but never defined (app.py:3142)**
`/projects/<id>/desktop-download` calls `safe_text(resp)` which doesn't exist — will crash.
**4. `pymongo` imported twice; `pymongo.errors.DuplicateKeyError` used without top-level import**
`app.py:7` imports `secrets` twice. `pymongo` is used at line 785 but only imported via `from pymongo import ...``pymongo.errors` won't resolve. Add `import pymongo` at top.
**5. `/compute` endpoint has no auth**
The Pantone/ECG color conversion endpoint is publicly accessible. Add `@jwt_required()`.
**6. Asset manager has no authentication**
All routes in `asset_manager_app.py` are unauthenticated. If the port is ever exposed, anyone can read/write S3. Add at minimum an internal shared secret header check.
**7. Unreachable code in `start_stage` (app.py:1232)**
```python
return jsonify({'success': True, 'stages': stages, 'workflow_result': workflow_result})
return jsonify({'success': True, 'stages': stages}) # ← dead code, never reached
```
### 🟡 Important Issues
**8. `list_projects` loads ALL projects with no pagination**
`projects_col.find().sort(...)` returns everything. With hundreds of projects this will be slow. Add `limit`/`skip` or cursor-based pagination.
**9. Duplicate field names in MongoDB documents**
`project_name`/`projectName`, `client_id`/`clientId`, `name`/`fullName`, `active`/`isActive`, `created_at`/`createdAt` are all stored twice. This doubles write load and creates inconsistency risk. Pick one canonical name per field.
**10. Workflow service URL hardcoded**
`app.py:878,885,894` uses `http://localhost:5001` directly instead of an env var like `WORKFLOW_URL`. Inconsistent with other services.
**11. Stage parsing handles both JSON string and list**
Multiple endpoints do:
```python
if isinstance(project['stages'], str):
stages = json.loads(project['stages'])
else:
stages = project['stages']
```
Stages should always be stored as a list. This defensive code masks a schema inconsistency.
**12. `before_request` logs every endpoint — noisy in production**
```python
@app.before_request
def log_request():
print(f">>> Endpoint called: {request.endpoint}")
```
Replace with proper logging or remove for production.
**13. DEBUG print statements left in approval flows (app.py:23942512)**
Many `print(f"DEBUG: ...")` lines in the PlanXO approval endpoints should be removed or converted to `logging.debug()`.
**14. `get_azure_config()` is a function, not a route**
`app.py:2937` defines `get_azure_config()` without a `@app.route` decorator, so it's never reachable.
**15. WS bridge API key is in env with a weak default**
`server.js:22`: `process.env.API_KEY || "aasdf345scwe"` — the fallback default is weak. Fail hard if `API_KEY` not set in production.
**16. `delete_asset` in asset manager uses string `_id`**
`assets.find_one({"_id": asset_id})` — MongoDB stores `_id` as ObjectId, not string. This will never find anything. Use `ObjectId(asset_id)`.
### 🟢 Suggestions
**17. Extract stage manipulation into a helper**
`start_stage`, `pause_stage`, `complete_stage`, and `assign_stage` share ~40 lines of identical stage-parsing boilerplate. Extract to `_get_stages(project)` and `_save_stages(project_id, stages)`.
**18. `get_project_folder_path` is duplicated logic**
The folder path logic in `app.py:3082` and `asset_manager_app.py` should live in one place (asset manager) and backend should call it.
**19. JWT token expiry is 1 hour; comment says 12h/1d/30d**
`JWT_ACCESS_TOKEN_EXPIRES = timedelta(hours=1)` — the comment is stale. Clarify intended expiry and consider refresh tokens.
**20. No index on `planxo_auth_keys.auth_key`**
This field is queried on every desktop connect. Add a unique index.
---
## Environment Variables Reference
### Backend (`.env` / `.env.prod`)
```
MONGO_URI=
JWT_SECRET_KEY=
FLASK_SECRET_KEY=
FLASK_ENV=production
AZURE_REDIRECT_URI=https://cms.techpremedia.com/azure-callback
AZURE_CLIENT_SECRET=
WS_BRIDGE_HTTP_URL=http://localhost:5003
DESKTOP_UNIQUE_ID=
ASSET_MANAGER_URL=http://localhost:5002
```
### Asset Manager
```
MONGO_URI=
S3_BUCKET=
AWS_REGION=
```
### Workflow
```
MONGO_URI=
AWS_REGION=
SENDER_EMAIL=
SENDER_NAME=
FLASK_SECRET_KEY=
```
### WebSocket Bridge
```
WS_PORT=
HTTP_PORT=
API_KEY=
ASSET_MANAGER_URL=http://localhost:5002
CMS_BACKEND_URL=https://cms.techpremedia.com
NODE_ENV=production
```
---
## Key Patterns
- **ObjectId serialization:** every route converts `_id` via `str(doc['_id'])` before jsonify
- **`now()`:** all services define their own `now()` returning `datetime.utcnow()`
- **S3 "folders":** implemented as empty `.keep` placeholder objects
- **Project numeric ID:** auto-incremented by querying `projects_col.find_one(sort=[("project_id",-1)])` — not atomic, could duplicate under concurrent creates
- **Desktop auth flow:** desktop → register-key → browser opens `/planxo-auth/<key>` → user approves → WS bridge notified → desktop receives `auth_approved`

File diff suppressed because it is too large Load Diff

Submodule development/asset_manager_app_web_socket added at ca15bcb4e6

Submodule development/cms_asset_manager added at 68b59e3848

Submodule development/cms_backend added at 481428ae55

Submodule development/cms_frontend_new added at ff0e604afa

Submodule development/cms_workflow added at f81ae56eb1

Submodule development/dbase_manager added at fcebcc3a3d

45
development/planxo/.gitignore vendored Normal file
View File

@@ -0,0 +1,45 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/
/coverage/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

View File

@@ -0,0 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "adc901062556672b4138e18a4dc62a4be8f4b3c2"
channel: "stable"
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: android
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: ios
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: linux
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: macos
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: web
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
- platform: windows
create_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
base_revision: adc901062556672b4138e18a4dc62a4be8f4b3c2
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@@ -0,0 +1,236 @@
# PlanXO Desktop Sync System Documentation & Issue Report
> Last reviewed: March 2026
> Target platform: macOS Desktop (Flutter); Windows Desktop planned
---
## 1. System Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ PlanXO Desktop App (Flutter/Dart) │
│ main.dart │
└───────────────────────────┬─────────────────────────────────────┘
WebSocket (wss) │ HTTP (https / dio)
┌──────────────────┘──────────────────────┐
▼ ▼
┌─────────────────────┐ ┌──────────────────────────┐
│ WebSocket Bridge │ axios (HTTP)│ Asset Manager (Python) │
│ server.js (Node) │◄──────────────┤ asset_manager_app.py │
│ Port: WS_PORT | │ │ Port: 5002 │
│ Port: HTTP_PORT │ │ S3 + MongoDB │
└─────────┬───────────┘ └──────────────────────────┘
│ HTTP (axios)
┌─────────────────────┐
│ CMS Backend │
│ app.py (Flask) │
│ + MongoDB + JWT │
└─────────────────────┘
```
### Component Roles
| Component | Language | Responsibility |
|---|---|---|
| `main.dart` | Flutter/Dart | Desktop UI, file watch, upload/download sync |
| `server.js` | Node.js (Express + WS) | WebSocket relay, auth key registration/approval, message routing |
| `asset_manager_app.py` | Python (Flask) | S3 operations: upload presign, download folder as ZIP, asset CRUD |
| `app.py` | Python (Flask) | CMS logic: users, projects, auth key CRUD, JWT, role enforcement |
### Frontend Admin Settings
| File | Purpose |
|---|---|
| `DesktopSyncSettings.js` | Sets global sync interval (stored in CMS backend via `/settings/desktop-sync`) |
| `FolderSyncSettings.js` | Sets admin folder age filter (how many days back to sync; via `/settings/folder-sync`) |
---
## 2. Authentication Flow
```
Desktop App WebSocket Server CMS Backend Browser
│ │ │ │
│─── WSS connect (apiKey, unique_id) ───────────────────► │ │
│ │ │ │
│─── register_auth_key ─────────► │ │
│ │─── POST /planxo/app/auth/register-key ──────────► │
│ │◄── {auth_key, browser_url} ───────────────────── │
│◄── auth_key_registered ───────│ │ │
│ │ │ │
│─── open browser with /planxo-auth/{auth_key} ─────────────────────────────────► │
│ │ │ │
│ (polling validate_auth every 2s) ──────────────────────► │ │
│ │ │ │
│ │ Admin approves in browser ◄────────────────│
│ │◄── POST /api/planxo/app/auth/{key}/approve ────── │
│◄── auth_approved (user, sync_interval) ────────────────── │ │
│ │ │ │
│ store auth key, start sync │ │
```
---
## 3. Sync Logic (Download Path)
1. After successful auth, `fetchFileList()` is called.
2. App fetches filtered folders list: `GET /planxo/folders/filtered` (HTTP, with `X-Auth-Key` header).
3. For each folder in the list, `_downloadAndExtractFolder(folder)` is called:
- `GET /folders/download?folder=<encoded>` → returns a ZIP stream.
- ZIP is decoded with `archive` package.
- For each file in ZIP: if local file does NOT exist OR remote mtime is newer → write to disk.
- After extraction, `_primeKnownKeys(prefix)` fetches the S3 asset list into `_knownS3Keys`.
- A `DirectoryWatcher` is started on the local folder.
4. Periodic sync (per-folder timer or global timer) calls `_downloadAndExtractFolder` again to check for remote changes.
## 4. Sync Logic (Upload Path)
1. `DirectoryWatcher` fires `ADD` or `MODIFY` events.
2. `_onLocalFileChanged(path, folderPrefix)` is called:
- Debounces: skip if same file was processed < 1 second ago.
- Computes SHA-256 hash. Compares to `_syncMeta[path]['hash']`. Skips if unchanged.
- If file key is in `_knownS3Keys`: calls `_replaceExisting()` (presign-replace PUT to S3 complete-replace).
- Else: calls `_uploadNew()` (presign-upload PUT to S3 register-upload).
- Updates `_syncMeta` and persists to `~/.planxo_sync_meta.json`.
3. Periodic `_syncLocalChanges()` also scans all files and uploads modified ones (same logic).
## 5. Persistence Files (macOS `$HOME`)
| File | Content |
|---|---|
| `~/.planxo_client` | Last used client name (subdomain) |
| `~/.planxo_auth_key` | Saved auth key (plaintext) |
| `~/.planxo_storage` | Storage base path |
| `~/.planxo_sync_settings.json` | Per-folder sync enabled/interval |
| `~/.planxo_sync_meta.json` | Per-file `{lastModified, hash}` for change detection |
| `~/Library/.../sync_data.db` | SQLite event log via DatabaseHelper |
## 6. Role-Based Sync Intent (Design Goal)
| Role | Intended Behaviour |
|---|---|
| **Normal user** | Sync only folders/projects assigned to them |
| **Admin** | Sync all projects created within `folder_age_days` (configured in Frontend `FolderSyncSettings.js`) |
The filtering is supposed to happen at `GET /planxo/folders/filtered` on the CMS backend. The desktop app currently passes `X-Auth-Key` so the backend knows who the user is.
---
## 7. Issues Found
### 🔴 Critical Bugs
### 🟠 Logic Bugs
#### 7.16 `_buildLoginScreen` Shows WS Status But Never Initiates Connection
The login screen shows a red/green dot for WS status, but `_connectWs()` is never called on app launch. The dot will always be red until the user clicks "Login".
See also issue 7.14 above.
---
#### 7.17 `MyApp` (Root Widget) Holds All State
The entire app state including network connections, timers, and file watchers lives in `_MyAppState` which wraps `MaterialApp`. This is an anti-pattern in Flutter. A rebuild of `MyApp` disposes and re-creates all state including open WebSockets.
**Recommendation:** Break out a `HomePage` stateful widget and keep `MyApp` as a thin shell containing only `MaterialApp` configuration.
---
#### 7.18 Auth Key Stored as Plaintext File
`~/.planxo_auth_key` is a plaintext file readable by any process running as the same user. On a shared machine this is a security risk.
**Recommendation (macOS):** Use the macOS Keychain via the `flutter_secure_storage` package.
---
#### 7.19 `_storageController` and `_clientController` Are Leaked
These `TextEditingController` instances are initialized in `initState` but the `_storageController.text` is only set later in async callbacks (`_loadStoragePath`, `_loadClientName`). If the widget is disposed before these complete, there could be a "setState called after dispose" error. The async loaders call `setState()` without a `mounted` guard.
**Fix:** Wrap all `setState()` calls inside async methods with `if (!mounted) return;`.
---
#### 7.20 `_syncInterval` from Backend Not Passed to Per-Folder Timers
`_syncInterval` (received from `auth_approved` or `auth_success`) is used only for `_periodicSyncTimer`. The per-folder timers (`_syncTimers`) use a locally configured interval. There is no reconciliation between the admin-set global interval from the frontend (`DesktopSyncSettings.js`) and the per-folder interval.
**Fix:** When `_syncInterval` is received from the server, apply it as the default for any new folder timers and update existing ones.
---
## 8. Windows Desktop Readiness
| Item | Status |
|---|---|
| `dart:io` WebSocket | Works on Windows |
| `file_selector` | Has Windows support |
| `watcher` | Uses native FS events |
| `sqflite` + FFI | Needs `sqflite_common_ffi` + Windows SQLite DLL |
| `Process.run('open', [...])` | macOS only all `openInFinder`, `_openUrl`, `_ensureStorageBaseExists` use `open` command |
| `Platform.environment['HOME']` | On Windows use `Platform.environment['USERPROFILE']` |
| Sandbox / path permissions | Windows has fewer restrictions than macOS |
**Recommended abstraction:**
```dart
String getHomeDir() {
if (Platform.isMacOS || Platform.isLinux) {
return Platform.environment['HOME'] ?? Directory.current.path;
} else if (Platform.isWindows) {
return Platform.environment['USERPROFILE'] ?? Platform.environment['HOMEPATH'] ?? 'C:\\Users\\Default';
}
return Directory.current.path;
}
Future<void> openInExplorer(String path) async {
if (Platform.isMacOS) {
await Process.run('open', ['-R', path]);
} else if (Platform.isWindows) {
await Process.run('explorer', ['/select,', path]);
} else {
await Process.run('xdg-open', [p.dirname(path)]);
}
}
```
---
## 9. Summary Table
| # | Severity | Category | Issue |
|---|---|---|---|
| 7.1 | 🔴 Critical | Architecture | `unique_id` hardcoded breaks multi-machine |
| 7.2 | 🔴 Critical | Platform | `sqflite` won't work on macOS/Windows desktop without FFI |
| 7.3 | 🔴 Critical | Logic | `_uploadFile` ignores `relativePath` param |
| 7.4 | 🔴 Critical | Logic | ZIP mtime is DOS format, not Unix skip-overwrite logic wrong |
| 7.5 | 🔴 Critical | Stability | `_ws!.add` without null/open guard potential crash |
| 7.6 | 🟠 Bug | Stability | Double reconnect scheduling, exponential reconnect storms |
| 7.7 | 🟠 Bug | Logic | `_handleAuthRevoked` leaks per-folder timers |
| 7.8 | 🟠 Bug | Performance | Auth polling sends WS validate during pending phase (noise) |
| 7.9 | 🟠 Bug | Logic | `_primeKnownKeys` expects List, gets Map always empty |
| 7.10 | 🟠 Bug | Logic | Role-based folder filtering skipped when WS is connected |
| 7.11 | 🟠 Bug | Logic | Two overlapping periodic sync timers cause race conditions |
| 7.12 | 🟡 Quality | State | `_knownS3Keys` lost on restart all files re-uploaded as new |
| 7.13 | 🟡 Quality | Deps | `http` and `web_socket_channel` are unused dependencies |
| 7.14 | 🟡 Quality | UX | WS not auto-connected on startup with saved auth |
| 7.15 | 🟡 Quality | Feature | `guessContentType` missing most media file types |
| 7.16 | 🟡 Quality | UX | Login screen WS indicator always red at launch |
| 7.17 | 🟡 Quality | Architecture | All state in root `MyApp` widget (anti-pattern) |
| 7.18 | 🟡 Quality | Security | Auth key stored as plaintext file |
| 7.19 | 🟡 Quality | Stability | `setState` after dispose possible in async loaders |
| 7.20 | 🟡 Quality | Feature | Backend sync interval not applied to per-folder timers |
| W.1 | 🟠 Platform | Windows | All `Process.run('open', ...)` calls are macOS-only |
| W.2 | 🟠 Platform | Windows | `HOME` env var not set on Windows use `USERPROFILE` |

View File

@@ -0,0 +1,16 @@
# planxo
A new Flutter project.
## 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:
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
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.

View File

@@ -0,0 +1,28 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at https://dart.dev/lints.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

14
development/planxo/android/.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
.cxx/
# Remember to never publicly share your keystore.
# See https://flutter.dev/to/reference-keystore
key.properties
**/*.keystore
**/*.jks

View File

@@ -0,0 +1,44 @@
plugins {
id("com.android.application")
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}
android {
namespace = "com.example.planxo"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.planxo"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("debug")
}
}
}
flutter {
source = "../.."
}

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -0,0 +1,45 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="planxo"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>

View File

@@ -0,0 +1,5 @@
package com.example.planxo
import io.flutter.embedding.android.FlutterActivity
class MainActivity : FlutterActivity()

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@@ -0,0 +1,24 @@
allprojects {
repositories {
google()
mavenCentral()
}
}
val newBuildDir: Directory =
rootProject.layout.buildDirectory
.dir("../../build")
.get()
rootProject.layout.buildDirectory.value(newBuildDir)
subprojects {
val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
project.layout.buildDirectory.value(newSubprojectBuildDir)
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory)
}

View File

@@ -0,0 +1,3 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip

View File

@@ -0,0 +1,26 @@
pluginManagement {
val flutterSdkPath =
run {
val properties = java.util.Properties()
file("local.properties").inputStream().use { properties.load(it) }
val flutterSdkPath = properties.getProperty("flutter.sdk")
require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
flutterSdkPath
}
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.9.1" apply false
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
}
include(":app")

View File

@@ -0,0 +1,55 @@
# install a modern Ruby with rbenv (safe, no sudo for gems)
# 1) Install Homebrew (if you don't have it)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2) Install rbenv + ruby-build
brew update
brew install rbenv ruby-build
# 3) Initialize rbenv in your shell (zsh)
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc
# 4) Install a modern Ruby (pick a 3.x version; 3.2.x or 3.1.x are fine)
rbenv install 3.2.2 # or `rbenv install 3.3.0` if available and you want latest
rbenv global 3.2.2
# verify
ruby -v
# 5) Install CocoaPods (no sudo)
gem install cocoapods
# 6) Rehash rbenv shims
rbenv rehash
# 1. Confirm rbenv state and active ruby
rbenv versions
rbenv global # shows global version
ruby -v
# 2. Make sure the active ruby is what you expect (optional if you already set it)
# If `rbenv global` is not 3.2.2, set it:
rbenv global 3.2.2
# 3. Install CocoaPods for the active Ruby (no sudo)
gem install cocoapods
# 4. Rebuild rbenv shims so `pod` is available
rbenv rehash
# 5. Verify
which pod
pod --version
cd <your_flutter_project> # e.g. ~/Dev/planxo or wherever
# if project has macOS support:
cd macos
pod install --repo-update
cd ..
flutter clean
flutter pub get
flutter run -d macos

View File

@@ -0,0 +1,789 @@
Launching lib/main.dart on macOS in debug mode...
Running pod install...
Building macOS application...
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:82359:23: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
82359 | int nCopy = MIN(nOut, nIn);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:82393:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
82393 | nOut = MIN(pBt->usableSize - 4, nRem);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:84401:21: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
84401 | const int nCopy = MIN(nSrcPgsz, nDestPgsz);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:84672:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
84672 | iEnd = MIN(PENDING_BYTE + pgszDest, iSize);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:86227:49: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
86227 | if( sqlite3VdbeMemClearAndResize(pMem, (int)MAX(nAlloc,32)) ){
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:86309:49: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
86309 | if( sqlite3VdbeMemClearAndResize(pMem, (int)MAX(nAlloc,32)) ){
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:92009:22: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
92009 | int nCmp = MIN(mem1.n, pRhs->n);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:92037:22: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
92037 | int nCmp = MIN(nStr, pRhs->n);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:92245:12: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
92245 | nCmp = MIN( pPKey2->n, nStr );
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:94656:42: warning: implicit conversion loses integer precision: 'sqlite3_uint64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
94656 | rc = sqlite3_bind_zeroblob(pStmt, i, n);
| ~~~~~~~~~~~~~~~~~~~~~ ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:95497:19: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
95497 | nextIndex = MAX(idx + 1, nextIndex);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:95475:41: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
95475 | sqlite3_str_append(&out, zRawSql, n);
| ~~~~~~~~~~~~~~~~~~ ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:95493:53: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
95493 | idx = sqlite3VdbeParameterIndex(p, zRawSql, nToken);
| ~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:96416:48: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
96416 | rc = sqlite3BtreePayload(pC->uc.pCursor, iOffset, len, pBuf);
| ~~~~~~~~~~~~~~~~~~~ ^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:96439:50: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
96439 | rc = sqlite3VdbeMemFromBtree(pC->uc.pCursor, iOffset, len, pDest);
| ~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:99361:21: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
99361 | pOut->u.nZero = nZero;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:106058:28: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
106058 | sqlite3_int64 nNew = MAX(128, 2*(sqlite3_int64)p->nAlloc);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:106062:19: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
106062 | p->nAlloc = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:106339:25: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
106339 | res = memcmp(v1, v2, (MIN(n1, n2) - 13)/2);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:106535:17: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
106535 | mxCache = MIN(mxCache, SQLITE_MAX_PMASZ);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:106536:28: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
106536 | pSorter->mxPmaSize = MAX(pSorter->mnPmaSize, (int)mxCache);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:107372:26: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
107372 | pSorter->mxKeysize = nPMA;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:107376:33: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
107376 | int nMin = pSorter->iMemory + nReq;
| ~~~~ ~~~~~~~~~~~~~~~~~^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:107383:45: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
107383 | iListOff = (u8*)pSorter->list.pList - pSorter->list.aMemory;
| ~ ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:107394:26: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
107394 | pSorter->nMemory = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:107548:19: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
107548 | pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:108002:21: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
108002 | nReader = MIN(pTask->nPMA - i, SORTER_MAX_MERGE_COUNT);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:108879:17: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
108879 | int nCopy = MIN(nRead, (p->nChunkSize - iChunkOffset));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:108919:40: warning: implicit conversion loses integer precision: 'sqlite_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
108919 | nChunk = copy.endpoint.iOffset - iOff;
| ~ ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:108986:22: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
108986 | int iSpace = MIN(nWrite, p->nChunkSize - iChunkOffset);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:109200:10: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
109200 | return MAX(pVfs->szOsFile, (int)sizeof(MemJournal));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:121896:13: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
121896 | int n = sqlite3GetToken(&z[nRet], &t);
| ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:122359:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
122359 | int nToken = sqlite3GetToken(&zTmp[iOff], &t);
| ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:122401:72: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
122401 | nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
| ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:122521:72: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
122521 | nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
| ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:123609:18: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
123609 | pParse->nTab = MAX(pParse->nTab, iTab);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:130012:15: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
130012 | int nCopy = MIN(ArraySize(aVal), pIdx->nKeyCol);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:130279:20: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
130279 | pSrc->nAlloc = nAlloc;
| ~ ^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:133459:24: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
133459 | sqlite3_randomness(n, p);
| ~~~~~~~~~~~~~~~~~~ ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:133460:44: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
133460 | sqlite3_result_blob(context, (char*)p, n, sqlite3_free);
| ~~~~~~~~~~~~~~~~~~~ ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:133997:31: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
133997 | pStr->nChar = nBlob*2 + 3;
| ~ ~~~~~~~~^~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:134073:11: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
134073 | n = z - &zIn[i];
| ~ ~~^~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:134310:39: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
134310 | sqlite3_result_blob(pCtx, pBlob, (p - pBlob), sqlite3_free);
| ~~~~~~~~~~~~~~~~~~~ ~~^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:137661:75: warning: possible misuse of comma operator here [-Wcomma]
137661 | pRaise = sqlite3Expr(db, TK_STRING, "FOREIGN KEY constraint failed"),
| ^
137661 | pRaise = sqlite3Expr(db, TK_STRING, "FOREIGN KEY constraint failed"),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| (void)( )
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:142782:36: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
142782 | sqlite3OsDlError(pVfs, nMsg-1, zErrmsg);
| ~~~~~~~~~~~~~~~~ ~~~~^~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:142823:34: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
142823 | sqlite3OsDlError(pVfs, nMsg-1, zErrmsg);
| ~~~~~~~~~~~~~~~~ ~~~~^~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:146025:28: warning: implicit conversion loses integer precision: 'const u64' (aka 'const unsigned long long') to 'int' [-Wshorten-64-to-32]
146025 | int iCookie = pPragma->iArg; /* Which cookie to read or write */
| ~~~~~~~ ~~~~~~~~~^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:154021:29: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
154021 | int flags = pParse->db->flags;
| ~~~~~ ~~~~~~~~~~~~^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:164719:19: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
164719 | nExtraReg = MAX(nExtraReg, pLoop->u.btree.nBtm);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:164726:19: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
164726 | nExtraReg = MAX(nExtraReg, pLoop->u.btree.nTop);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:168124:43: warning: possible misuse of comma operator here [-Wcomma]
168124 | && (pX = pTerm->pExpr->pRight, ALWAYS(pX!=0))
| ^
168124 | && (pX = pTerm->pExpr->pRight, ALWAYS(pX!=0))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| (void)( )
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:168807:14: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
168807 | mxBitCol = MIN(BMS-1,pTable->nCol);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:170416:25: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
170416 | pTemplate->rRun = MIN(p->rRun, pTemplate->rRun);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:170417:25: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
170417 | pTemplate->nOut = MIN(p->nOut - 1, pTemplate->nOut);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:170425:25: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
170425 | pTemplate->rRun = MAX(p->rRun, pTemplate->rRun);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:170426:25: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
170426 | pTemplate->nOut = MAX(p->nOut + 1, pTemplate->nOut);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:170856:10: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
170856 | nCmp = MIN(nCmp, (pIdx->nColumn - nEq));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:173616:19: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
173616 | aFrom[0].nRow = MIN(pParse->nQueryLoop, 48); assert( 48==sqlite3LogEst(28) );
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:176049:28: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
176049 | int nSize = (p->nTotal / p->nParam);
| ~~~~~ ~~~~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:177598:12: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
177598 | nArg = MAX(nArg, windowArgCount(pWin));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:178886:64: warning: implicit conversion loses integer precision: 'sqlite3_uint64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
178886 | void *p = sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);
| ~~~~~~~~~~~~~~~ ^~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:183838:173: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
183838 | sqlite3AlterAddConstraint(pParse, yymsp[-8].minor.yy203, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
| ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:183844:154: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
183844 | sqlite3AlterAddConstraint(pParse, yymsp[-6].minor.yy203, &yymsp[-4].minor.yy0, 0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
| ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:182506:9: warning: code will never be executed [-Wunreachable-code]
182506 | YYMINORTYPE yylhsminor;
| ^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:187039:19: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
187039 | nBig = szAlloc/(3*LOOKASIDE_SMALL+sz);
| ~ ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:187040:40: warning: implicit conversion loses integer precision: 'sqlite_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
187040 | nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
| ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:187042:19: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
187042 | nBig = szAlloc/(LOOKASIDE_SMALL+sz);
| ~ ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:187043:40: warning: implicit conversion loses integer precision: 'sqlite_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
187043 | nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
| ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:187047:19: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
187047 | nBig = szAlloc/sz;
| ~ ~~~~~~~^~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:212369:28: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
212369 | pParse->nJson = p->nUsed;
| ~ ~~~^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:213603:20: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'int' [-Wshorten-64-to-32]
213603 | px.nJson = pStr->nUsed;
| ~ ~~~~~~^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:214147:43: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
214147 | jsonBlobExpand(pParse, pParse->nBlob+d);
| ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~^~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:216731:19: warning: implicit conversion loses integer precision: 'u64' (aka 'unsigned long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
216731 | u32 n = p->path.nUsed;
| ~ ~~~~~~~~^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219319:26: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
219319 | p1->aCoord[ii].f = MIN(p1->aCoord[ii].f, p2->aCoord[ii].f);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219320:28: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
219320 | p1->aCoord[ii+1].f = MAX(p1->aCoord[ii+1].f, p2->aCoord[ii+1].f);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219325:26: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
219325 | p1->aCoord[ii].i = MIN(p1->aCoord[ii].i, p2->aCoord[ii].i);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219326:28: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
219326 | p1->aCoord[ii+1].i = MAX(p1->aCoord[ii+1].i, p2->aCoord[ii+1].i);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219367:12: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
219367 | x1 = MAX(DCOORD(p->aCoord[jj]), DCOORD(aCell[ii].aCoord[jj]));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:219368:12: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
219368 | x2 = MIN(DCOORD(p->aCoord[jj+1]), DCOORD(aCell[ii].aCoord[jj+1]));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:220488:21: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
220488 | pRtree->nRowEst = MAX(nRow, RTREE_MIN_ROWEST);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:220747:10: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
220747 | return sqlite3GetToken((const unsigned char*)z,&dummy);
| ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:223383:20: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'u32' (aka 'unsigned int') [-Wshorten-64-to-32]
223383 | pBlob->iSize = nBlob;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:233398:66: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
233398 | int iHash = sessionChangeHash(pTab, bPkOnly, p->aRecord, nNew);
| ~~~~~~~~~~~~~~~~~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:233406:21: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
233406 | pTab->nChange = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:233840:19: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
233840 | p->nAlloc = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:234094:22: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
234094 | int nIncr = nNew - pC->nMaxSize;
| ~~~~~ ~~~~~^~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:234095:20: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
234095 | pC->nMaxSize = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:234249:21: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
234249 | pC->nRecord = nByte;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:238132:28: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
238132 | pNew->nRecord = pOut - pNew->aRecord;
| ~ ~~~~~^~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:238168:30: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
238168 | pNew->nRecord = pOut - pNew->aRecord;
| ~ ~~~~~^~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:238854:22: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
238854 | pBuf->nBuf = pOut-pBuf->aBuf;
| ~ ~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:238926:26: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
238926 | pBuf->nBuf = (pOut - pBuf->aBuf);
| ~ ~~~~~^~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:239018:29: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
239017 | sessionAppendRecordMerge(&sOut, pIter->nCol,
| ~~~~~~~~~~~~~~~~~~~~~~~~
239018 | pCsr, nRec-(pCsr-aRec),
| ~~~~^~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:242000:9: warning: code will never be executed [-Wunreachable-code]
242000 | fts5YYMINORTYPE fts5yylhsminor;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:244037:29: warning: implicit conversion loses integer precision: 'sqlite3_int64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
244037 | pConfig->t.nArg = nArg;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:245078:23: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
245078 | pToken->n = (z2 - z);
| ~ ~~~^~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:245090:23: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
245090 | pToken->n = (z2 - z);
| ~ ~~~^~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:247128:18: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
247128 | p->iHeight = MAX(p->iHeight, p->apChild[ii]->iHeight + 1);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:248538:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
248538 | int nMin = MIN(p1->nKey, p2->nKey);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:249522:10: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
249522 | nCmp = MIN(pLeft->n, pRight->n);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:249597:20: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
249597 | pRet->nn = nByte;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:249604:50: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
249604 | rc = sqlite3_blob_read(p->pReader, aOut, nByte, 0);
| ~~~~~~~~~~~~~~~~~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:249904:27: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
249904 | nOriginCntr = MAX(nOriginCntr, pSeg->iOrigin2);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250595:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
250595 | int iEod = MIN(pIter->iEndofDoclist, pIter->pLeaf->szLeaf);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250592:23: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250592 | int iOff = pIter->iLeafOffset; /* Offset to read at */
| ~~~~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250666:28: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250666 | pIter->iTermLeafOffset = iOff;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250707:26: warning: implicit conversion loses integer precision: 'const i64' (aka 'const long long') to 'int' [-Wshorten-64-to-32]
250707 | pNew->nTombstone = nTomb;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250777:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250777 | int i = pIter->iLeafOffset;
| ~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250815:29: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250815 | pIter->nRowidOffset = nNew;
| ~ ^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250818:50: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250818 | pIter->aRowidOffset[iRowidOffset++] = pIter->iLeafOffset;
| ~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250911:19: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250911 | iOff = pIter->iLeafOffset;
| ~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:250940:17: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
250940 | iOff = pIter->iLeafOffset;
| ~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:251021:29: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
251021 | iOff = pIter->iLeafOffset + pIter->nPos;
| ~ ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:251296:19: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
251296 | nCmp = (u32)MIN(nNew, nTerm-nMatch);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:251364:35: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
251364 | pIter->iTermLeafOffset = pIter->iLeafOffset;
| ~ ~~~~~~~^~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252171:18: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
252171 | pNew->nSeg = nSlot;
| ~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252301:16: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
252301 | int nChunk = MIN(nRem, pSeg->pLeaf->szLeaf - pSeg->iLeafOffset);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252326:16: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
252326 | nChunk = MIN(nRem, pData->szLeaf - 4);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252301:46: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
252301 | int nChunk = MIN(nRem, pSeg->pLeaf->szLeaf - pSeg->iLeafOffset);
| ~~~~~~ ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252423:32: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
252423 | pIter->base.nData = p-aCopy;
| ~ ~^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252543:30: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
252543 | pIter->base.nData = aOut - pIter->poslist.p;
| ~ ~~~~~^~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:252670:14: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
252670 | nSeg = MIN(pStruct->aLevel[iLevel].nSeg, nSegment);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:253176:14: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
253176 | int nMin = MIN(pPage->term.n, nTerm);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:253651:38: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
253651 | int nPercent = (nTomb * 100) / nEntry;
| ~~~~~~~~ ~~~~~~~~~~~~~~^~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:254128:17: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
254128 | nPrefix = MIN(nPrefix, nPrefix2);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:254185:51: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
254185 | fts5DataWrite(p, iId, pTerm->p, iTermOff+nTermIdx);
| ~~~~~~~~~~~~~ ~~~~~~~~^~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:254574:20: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
254574 | pNew->nLevel = MIN(pStruct->nLevel+1, FTS5_MAX_LEVEL);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255239:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
255239 | int n1 = MIN(nHalf, pT->nMap-i1);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255240:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
255240 | int n2 = MIN(nHalf, pT->nMap-i1-n1);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255239:22: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
255239 | int n1 = MIN(nHalf, pT->nMap-i1);
| ~~ ^~~~~
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255239:37: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
255239 | int n1 = MIN(nHalf, pT->nMap-i1);
| ~~ ~~~~~~~~^~~
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255240:22: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
255240 | int n2 = MIN(nHalf, pT->nMap-i1-n1);
| ~~ ^~~~~
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:255240:40: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
255240 | int n2 = MIN(nHalf, pT->nMap-i1-n1);
| ~~ ~~~~~~~~~~~^~~
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:256338:12: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
256338 | i2 = pT->nMap;
| ~ ~~~~^~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:256693:22: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
256693 | int nSlotPerPage = MAX(MINSLOT, (p->pConfig->pgsz - 8) / szKey);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:256723:13: warning: ambiguous expansion of macro 'MAX' [-Wambiguous-macro]
256723 | nSlot = MAX(nElem*4, MINSLOT);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
218 | #define MAX(a, b) (((a)>(b))?(a):(b))
| ^
15576 | # define MAX(A,B) ((A)>(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:257241:53: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
257241 | res = fts5Memcmp(&pLeaf->p[iOff], zIdxTerm, MIN(nTerm, nIdxTerm));
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:259152:40: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
259152 | pSorter->aIdx[i] = &aBlob[nBlob] - a;
| ~ ~~~~~~~~~~~~~~^~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:261897:38: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
261897 | sqlite3_result_text(pCtx, zText, nText, SQLITE_TRANSIENT);
| ~~~~~~~~~~~~~~~~~~~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:261920:38: warning: implicit conversion loses integer precision: 'i64' (aka 'long long') to 'int' [-Wshorten-64-to-32]
261920 | sqlite3_result_blob(pCtx, pBlob, nBlob, sqlite3_free);
| ~~~~~~~~~~~~~~~~~~~ ^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:264142:19: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
264142 | is = zCsr - (unsigned char*)pText;
| ~ ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:264149:21: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
264149 | is = zCsr - (unsigned char*)pText;
| ~ ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:264199:17: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
264199 | ie = zCsr - (unsigned char*)pText;
| ~ ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:264203:37: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
264203 | rc = xToken(pCtx, 0, aFold, zOut-aFold, is, ie);
| ~~~~~~ ~~~~^~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:265030:24: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
265030 | aStart[ii] = zIn - (const unsigned char*)pText;
| ~ ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:265052:19: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
265052 | iNext = zIn - (const unsigned char*)pText;
| ~ ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:265062:36: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
265062 | rc = xToken(pCtx, 0, aBuf, zOut-aBuf, aStart[0], iNext);
| ~~~~~~ ~~~~^~~~~
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:266727:18: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
266727 | int nCmp = MIN(nTerm, pCsr->nLeTerm);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
/Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:266801:20: warning: ambiguous expansion of macro 'MIN' [-Wambiguous-macro]
266801 | int nCmp = MIN(nTerm, pCsr->nLeTerm);
| ^
In module 'Darwin' imported from /Users/mac/Desktop/TP/CMS/planxo/macos/Pods/sqlite3/sqlite-src-3520000/sqlite3.c:27675:
215 | #define MIN(a, b) (((a)<(b))?(a):(b))
| ^
15573 | # define MIN(A,B) ((A)<(B)?(A):(B))
| ^
192 warnings generated.
✓ Built build/macos/Build/Products/Debug/planxo.app
2026-03-10 10:28:26.480 planxo[25765:2717534] Running with merged UI and platform thread. Experimental.
Failed to foreground app; open returned 1
Debug service listening on ws://127.0.0.1:51205/6sznUIvsZIU=/ws
Syncing files to device macOS...
flutter: *** sqflite warning ***
You are changing sqflite default factory.
Be aware of the potential side effects. Any library using sqflite
will have this factory as the default for all operations.
*** sqflite warning ***
flutter: Device ID created: 34264b4d-8303-4593-af2d-49c90fc4689b
flutter: Updated URLs for client cms: https://cms.techpremedia.com
flutter: Updated URLs for client cms: https://cms.techpremedia.com
flutter: Attempting WebSocket connect to: wss://cms.techpremedia.com/ws?apiKey=aasdf345scwe&unique_id=34264b4d-8303-4593-af2d-49c90fc4689b
flutter: Connected to WS at wss://cms.techpremedia.com/ws?apiKey=aasdf345scwe&unique_id=34264b4d-8303-4593-af2d-49c90fc4689b
flutter: Successfully opened URL with open command
flutter: Successfully opened URL with open command
flutter: Auth transient: Invalid or expired auth key
flutter: Updated URLs for client cms: https://cms.techpremedia.com
flutter: Successfully opened URL with open command
flutter: Successfully opened URL with open command
flutter: Starting periodic sync every 30 minutes
flutter: Skipping periodic sync - not ready (auth: true, project: false)

34
development/planxo/ios/.gitignore vendored Normal file
View File

@@ -0,0 +1,34 @@
**/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

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
</dict>
</plist>

View File

@@ -0,0 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

View File

@@ -0,0 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

View File

@@ -0,0 +1,43 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '13.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!
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

View File

@@ -0,0 +1,616 @@
// !$*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 */; };
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 */; };
/* 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 */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
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 = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
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 = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C807B294A618700263BE5 /* RunnerTests.swift */,
);
path = RunnerTests;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
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 = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
);
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 = (
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
);
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 */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
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";
};
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";
};
/* 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 = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
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;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
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 = 13.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)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo;
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;
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.example.planxo.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;
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.example.planxo.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;
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.example.planxo.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;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
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;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
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 = 13.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;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
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;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
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 = 13.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)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo;
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)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo;
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 */;
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@@ -0,0 +1,13 @@
import Flutter
import UIKit
@main
@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)
}
}

View File

@@ -0,0 +1,122 @@
{
"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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

View File

@@ -0,0 +1,5 @@
# 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.

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Planxo</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>planxo</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1 @@
#import "GeneratedPluginRegistrant.h"

View File

@@ -0,0 +1,12 @@
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.
}
}

View File

@@ -0,0 +1,122 @@
import 'dart:async';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
class DatabaseHelper {
static final DatabaseHelper _instance = DatabaseHelper._internal();
factory DatabaseHelper() => _instance;
static Database? _database;
DatabaseHelper._internal();
Future<Database> get database async {
if (_database != null) return _database!;
_database = await _initDatabase();
return _database!;
}
Future<Database> _initDatabase() async {
final dbPath = await getDatabasesPath();
final path = join(dbPath, 'sync_data.db');
return await openDatabase(
path,
version: 2,
onCreate: (db, version) async {
await db.execute('''
CREATE TABLE sync_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
folder TEXT NOT NULL,
enabled INTEGER NOT NULL,
interval INTEGER NOT NULL,
last_synced TEXT,
file_path TEXT,
sync_status INTEGER NOT NULL DEFAULT 0
)
''');
await db.execute('''
CREATE TABLE sync_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_type TEXT NOT NULL,
folder TEXT,
s3_key TEXT,
local_path TEXT,
size INTEGER,
hash TEXT,
status TEXT,
message TEXT,
ts TEXT NOT NULL
)
''');
},
onUpgrade: (db, oldVersion, newVersion) async {
if (oldVersion < 2) {
await db.execute('''
CREATE TABLE IF NOT EXISTS sync_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_type TEXT NOT NULL,
folder TEXT,
s3_key TEXT,
local_path TEXT,
size INTEGER,
hash TEXT,
status TEXT,
message TEXT,
ts TEXT NOT NULL
)
''');
}
},
);
}
Future<int> insertSyncData(Map<String, dynamic> data) async {
final db = await database;
return await db.insert('sync_data', data);
}
Future<List<Map<String, dynamic>>> getUnsyncedOrUpdatedData() async {
final db = await database;
return await db.query('sync_data', where: 'sync_status IN (0, 2)');
}
Future<int> updateSyncStatus(int id, int status) async {
final db = await database;
return await db.update(
'sync_data',
{'sync_status': status},
where: 'id = ?',
whereArgs: [id],
);
}
Future<int> insertEvent({
required String eventType,
String? folder,
String? s3Key,
String? localPath,
int? size,
String? hash,
String? status,
String? message,
}) async {
final db = await database;
return await db.insert('sync_events', {
'event_type': eventType,
'folder': folder,
's3_key': s3Key,
'local_path': localPath,
'size': size,
'hash': hash,
'status': status,
'message': message,
'ts': DateTime.now().toIso8601String(),
});
}
Future<List<Map<String, dynamic>>> recentEvents({int limit = 100}) async {
final db = await database;
return await db.query('sync_events', orderBy: 'id DESC', limit: limit);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
class SyncData {
final int? id;
final String folder;
final bool enabled;
final int interval;
final String? lastSynced;
SyncData({
this.id,
required this.folder,
required this.enabled,
required this.interval,
this.lastSynced,
});
Map<String, dynamic> toMap() {
return {
'id': id,
'folder': folder,
'enabled': enabled ? 1 : 0,
'interval': interval,
'last_synced': lastSynced,
};
}
factory SyncData.fromMap(Map<String, dynamic> map) {
return SyncData(
id: map['id'],
folder: map['folder'],
enabled: map['enabled'] == 1,
interval: map['interval'],
lastSynced: map['last_synced'],
);
}
}

1
development/planxo/linux/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
flutter/ephemeral

View File

@@ -0,0 +1,128 @@
# Project-level configuration.
cmake_minimum_required(VERSION 3.13)
project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "planxo")
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "com.example.planxo")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.
cmake_policy(SET CMP0063 NEW)
# Load bundled libraries from the lib/ directory relative to the binary.
set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
# Root filesystem for cross-building.
if(FLUTTER_TARGET_PLATFORM_SYSROOT)
set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
# Define build configuration options.
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Debug" CACHE
STRING "Flutter build mode" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Profile" "Release")
endif()
# Compilation settings that should be applied to most targets.
#
# Be cautious about adding new options here, as plugins use this function by
# default. In most cases, you should add new options to specific targets instead
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_14)
target_compile_options(${TARGET} PRIVATE -Wall -Werror)
target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
endfunction()
# Flutter library and tool build rules.
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
add_subdirectory(${FLUTTER_MANAGED_DIR})
# System-level dependencies.
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
# Application build; see runner/CMakeLists.txt.
add_subdirectory("runner")
# Run the Flutter tool portions of the build. This must not be removed.
add_dependencies(${BINARY_NAME} flutter_assemble)
# Only the install-generated bundle's copy of the executable will launch
# correctly, since the resources must in the right relative locations. To avoid
# people trying to run the unbundled copy, put it in a subdirectory instead of
# the default top-level location.
set_target_properties(${BINARY_NAME}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
)
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
# === Installation ===
# By default, "installing" just makes a relocatable bundle in the build
# directory.
set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
endif()
# Start with a clean build bundle directory every time.
install(CODE "
file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
" COMPONENT Runtime)
set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
COMPONENT Runtime)
install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
COMPONENT Runtime)
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
install(FILES "${bundled_library}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
endforeach(bundled_library)
# Copy the native assets provided by the build.dart from all packages.
set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
install(DIRECTORY "${NATIVE_ASSETS_DIR}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install.
set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
install(CODE "
file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
" COMPONENT Runtime)
install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
# Install the AOT library on non-Debug builds only.
if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
endif()

View File

@@ -0,0 +1,88 @@
# This file controls Flutter-level build steps. It should not be edited.
cmake_minimum_required(VERSION 3.10)
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
# Configuration provided via flutter tool.
include(${EPHEMERAL_DIR}/generated_config.cmake)
# TODO: Move the rest of this into files in ephemeral. See
# https://github.com/flutter/flutter/issues/57146.
# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
# which isn't available in 3.10.
function(list_prepend LIST_NAME PREFIX)
set(NEW_LIST "")
foreach(element ${${LIST_NAME}})
list(APPEND NEW_LIST "${PREFIX}${element}")
endforeach(element)
set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
endfunction()
# === Flutter Library ===
# System-level dependencies.
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
# Published to parent scope for install step.
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
list(APPEND FLUTTER_LIBRARY_HEADERS
"fl_basic_message_channel.h"
"fl_binary_codec.h"
"fl_binary_messenger.h"
"fl_dart_project.h"
"fl_engine.h"
"fl_json_message_codec.h"
"fl_json_method_codec.h"
"fl_message_codec.h"
"fl_method_call.h"
"fl_method_channel.h"
"fl_method_codec.h"
"fl_method_response.h"
"fl_plugin_registrar.h"
"fl_plugin_registry.h"
"fl_standard_message_codec.h"
"fl_standard_method_codec.h"
"fl_string_codec.h"
"fl_value.h"
"fl_view.h"
"flutter_linux.h"
)
list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
add_library(flutter INTERFACE)
target_include_directories(flutter INTERFACE
"${EPHEMERAL_DIR}"
)
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
target_link_libraries(flutter INTERFACE
PkgConfig::GTK
PkgConfig::GLIB
PkgConfig::GIO
)
add_dependencies(flutter flutter_assemble)
# === Flutter tool backend ===
# _phony_ is a non-existent file to force this command to run every time,
# since currently there's no way to get a full input/output list from the
# flutter tool.
add_custom_command(
OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
${CMAKE_CURRENT_BINARY_DIR}/_phony_
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
"${FLUTTER_LIBRARY}"
${FLUTTER_LIBRARY_HEADERS}
)

View File

@@ -0,0 +1,27 @@
#
# Generated file, do not edit.
#
list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux
flutter_secure_storage_linux
sqlite3_flutter_libs
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
jni
)
set(PLUGIN_BUNDLED_LIBRARIES)
foreach(plugin ${FLUTTER_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
endforeach(plugin)
foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
endforeach(ffi_plugin)

View File

@@ -0,0 +1,26 @@
cmake_minimum_required(VERSION 3.13)
project(runner LANGUAGES CXX)
# Define the application target. To change its name, change BINARY_NAME in the
# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
# work.
#
# Any new source files that you add to the application should be added here.
add_executable(${BINARY_NAME}
"main.cc"
"my_application.cc"
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
)
# Apply the standard set of build settings. This can be removed for applications
# that need different build settings.
apply_standard_settings(${BINARY_NAME})
# Add preprocessor definitions for the application ID.
add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
# Add dependency libraries. Add any application-specific dependencies here.
target_link_libraries(${BINARY_NAME} PRIVATE flutter)
target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")

View File

@@ -0,0 +1,6 @@
#include "my_application.h"
int main(int argc, char** argv) {
g_autoptr(MyApplication) app = my_application_new();
return g_application_run(G_APPLICATION(app), argc, argv);
}

View File

@@ -0,0 +1,144 @@
#include "my_application.h"
#include <flutter_linux/flutter_linux.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include "flutter/generated_plugin_registrant.h"
struct _MyApplication {
GtkApplication parent_instance;
char** dart_entrypoint_arguments;
};
G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
// Called when first Flutter frame received.
static void first_frame_cb(MyApplication* self, FlView *view)
{
gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view)));
}
// Implements GApplication::activate.
static void my_application_activate(GApplication* application) {
MyApplication* self = MY_APPLICATION(application);
GtkWindow* window =
GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
// Use a header bar when running in GNOME as this is the common style used
// by applications and is the setup most users will be using (e.g. Ubuntu
// desktop).
// If running on X and not using GNOME then just use a traditional title bar
// in case the window manager does more exotic layout, e.g. tiling.
// If running on Wayland assume the header bar will work (may need changing
// if future cases occur).
gboolean use_header_bar = TRUE;
#ifdef GDK_WINDOWING_X11
GdkScreen* screen = gtk_window_get_screen(window);
if (GDK_IS_X11_SCREEN(screen)) {
const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
use_header_bar = FALSE;
}
}
#endif
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "planxo");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
gtk_window_set_title(window, "planxo");
}
gtk_window_set_default_size(window, 1280, 720);
g_autoptr(FlDartProject) project = fl_dart_project_new();
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
FlView* view = fl_view_new(project);
GdkRGBA background_color;
// Background defaults to black, override it here if necessary, e.g. #00000000 for transparent.
gdk_rgba_parse(&background_color, "#000000");
fl_view_set_background_color(view, &background_color);
gtk_widget_show(GTK_WIDGET(view));
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
// Show the window when Flutter renders.
// Requires the view to be realized so we can start rendering.
g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self);
gtk_widget_realize(GTK_WIDGET(view));
fl_register_plugins(FL_PLUGIN_REGISTRY(view));
gtk_widget_grab_focus(GTK_WIDGET(view));
}
// Implements GApplication::local_command_line.
static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
MyApplication* self = MY_APPLICATION(application);
// Strip out the first argument as it is the binary name.
self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
g_autoptr(GError) error = nullptr;
if (!g_application_register(application, nullptr, &error)) {
g_warning("Failed to register: %s", error->message);
*exit_status = 1;
return TRUE;
}
g_application_activate(application);
*exit_status = 0;
return TRUE;
}
// Implements GApplication::startup.
static void my_application_startup(GApplication* application) {
//MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application startup.
G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
}
// Implements GApplication::shutdown.
static void my_application_shutdown(GApplication* application) {
//MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application shutdown.
G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
}
// Implements GObject::dispose.
static void my_application_dispose(GObject* object) {
MyApplication* self = MY_APPLICATION(object);
g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
}
static void my_application_class_init(MyApplicationClass* klass) {
G_APPLICATION_CLASS(klass)->activate = my_application_activate;
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
G_APPLICATION_CLASS(klass)->startup = my_application_startup;
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
}
static void my_application_init(MyApplication* self) {}
MyApplication* my_application_new() {
// Set the program name to the application ID, which helps various systems
// like GTK and desktop environments map this running application to its
// corresponding .desktop file. This ensures better integration by allowing
// the application to be recognized beyond its binary name.
g_set_prgname(APPLICATION_ID);
return MY_APPLICATION(g_object_new(my_application_get_type(),
"application-id", APPLICATION_ID,
"flags", G_APPLICATION_NON_UNIQUE,
nullptr));
}

View File

@@ -0,0 +1,18 @@
#ifndef FLUTTER_MY_APPLICATION_H_
#define FLUTTER_MY_APPLICATION_H_
#include <gtk/gtk.h>
G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
GtkApplication)
/**
* my_application_new:
*
* Creates a new Flutter-based application.
*
* Returns: a new #MyApplication.
*/
MyApplication* my_application_new();
#endif // FLUTTER_MY_APPLICATION_H_

7
development/planxo/macos/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
# Flutter-related
**/Flutter/ephemeral/
**/Pods/
# Xcode-related
**/dgph
**/xcuserdata/

View File

@@ -0,0 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig"

View File

@@ -0,0 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig"

View File

@@ -0,0 +1,42 @@
platform :osx, '10.15'
# 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', 'ephemeral', '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 Flutter-Generated.xcconfig, then run \"flutter pub get\""
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_macos_podfile_setup
target 'Runner' do
use_frameworks!
flutter_install_all_macos_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_macos_build_settings(target)
end
end

View File

@@ -0,0 +1,801 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objects = {
/* Begin PBXAggregateTarget section */
33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
buildPhases = (
33CC111E2044C6BF0003C045 /* ShellScript */,
);
dependencies = (
);
name = "Flutter Assemble";
productName = FLX;
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
2479F6295B81210E9C2B5D74 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FA5DC5F7716F4549CA0845 /* Pods_RunnerTests.framework */; };
331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; };
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
B83E32400CE0E63D937A3DB3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8B657E2B33DD591C0462181 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 33CC10EC2044A3C60003C045;
remoteInfo = Runner;
};
33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 33CC111A2044C6BA0003C045;
remoteInfo = FLX;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
33CC110E2044A8840003C045 /* Bundle Framework */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Bundle Framework";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* planxo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = planxo.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
39155466C2D1A9BF4CBAF461 /* 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 = "<group>"; };
6BB9321BF99BC8DEFDA2389B /* 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 = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
CFA8E4396645FCD7AD79CF5A /* 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 = "<group>"; };
D3E3EE0CB25D5CC763600C8C /* 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 = "<group>"; };
D5029A70F57884515C070A87 /* 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 = "<group>"; };
D8B657E2B33DD591C0462181 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E48A63B423A1EEDAC33E7DF9 /* 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 = "<group>"; };
F2FA5DC5F7716F4549CA0845 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
331C80D2294CF70F00263BE5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2479F6295B81210E9C2B5D74 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
33CC10EA2044A3C60003C045 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
B83E32400CE0E63D937A3DB3 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
331C80D6294CF71000263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
331C80D7294CF71000263BE5 /* RunnerTests.swift */,
);
path = RunnerTests;
sourceTree = "<group>";
};
33BA886A226E78AF003329D5 /* Configs */ = {
isa = PBXGroup;
children = (
33E5194F232828860026EE4D /* AppInfo.xcconfig */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
);
path = Configs;
sourceTree = "<group>";
};
33CC10E42044A3C60003C045 = {
isa = PBXGroup;
children = (
33FAB671232836740065AC1E /* Runner */,
33CEB47122A05771004F2AC0 /* Flutter */,
331C80D6294CF71000263BE5 /* RunnerTests */,
33CC10EE2044A3C60003C045 /* Products */,
D73912EC22F37F3D000D13A0 /* Frameworks */,
97CAACA72205D349F1A1B9FB /* Pods */,
);
sourceTree = "<group>";
};
33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup;
children = (
33CC10ED2044A3C60003C045 /* planxo.app */,
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
33CC11242044D66E0003C045 /* Resources */ = {
isa = PBXGroup;
children = (
33CC10F22044A3C60003C045 /* Assets.xcassets */,
33CC10F42044A3C60003C045 /* MainMenu.xib */,
33CC10F72044A3C60003C045 /* Info.plist */,
);
name = Resources;
path = ..;
sourceTree = "<group>";
};
33CEB47122A05771004F2AC0 /* Flutter */ = {
isa = PBXGroup;
children = (
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
);
path = Flutter;
sourceTree = "<group>";
};
33FAB671232836740065AC1E /* Runner */ = {
isa = PBXGroup;
children = (
33CC10F02044A3C60003C045 /* AppDelegate.swift */,
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
33E51913231747F40026EE4D /* DebugProfile.entitlements */,
33E51914231749380026EE4D /* Release.entitlements */,
33CC11242044D66E0003C045 /* Resources */,
33BA886A226E78AF003329D5 /* Configs */,
);
path = Runner;
sourceTree = "<group>";
};
97CAACA72205D349F1A1B9FB /* Pods */ = {
isa = PBXGroup;
children = (
E48A63B423A1EEDAC33E7DF9 /* Pods-Runner.debug.xcconfig */,
D3E3EE0CB25D5CC763600C8C /* Pods-Runner.release.xcconfig */,
CFA8E4396645FCD7AD79CF5A /* Pods-Runner.profile.xcconfig */,
D5029A70F57884515C070A87 /* Pods-RunnerTests.debug.xcconfig */,
6BB9321BF99BC8DEFDA2389B /* Pods-RunnerTests.release.xcconfig */,
39155466C2D1A9BF4CBAF461 /* Pods-RunnerTests.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
isa = PBXGroup;
children = (
D8B657E2B33DD591C0462181 /* Pods_Runner.framework */,
F2FA5DC5F7716F4549CA0845 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
331C80D4294CF70F00263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
81B9E979FD4EA9761F1ED876 /* [CP] Check Pods Manifest.lock */,
331C80D1294CF70F00263BE5 /* Sources */,
331C80D2294CF70F00263BE5 /* Frameworks */,
331C80D3294CF70F00263BE5 /* Resources */,
);
buildRules = (
);
dependencies = (
331C80DA294CF71000263BE5 /* PBXTargetDependency */,
);
name = RunnerTests;
productName = RunnerTests;
productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
33CC10EC2044A3C60003C045 /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
8FD316E523682FD9A5657E4A /* [CP] Check Pods Manifest.lock */,
33CC10E92044A3C60003C045 /* Sources */,
33CC10EA2044A3C60003C045 /* Frameworks */,
33CC10EB2044A3C60003C045 /* Resources */,
33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */,
92743C4D8D09C696E1E6EEBC /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
33CC11202044C79F0003C045 /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* planxo.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
33CC10E52044A3C60003C045 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C80D4294CF70F00263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 33CC10EC2044A3C60003C045;
};
33CC10EC2044A3C60003C045 = {
CreatedOnToolsVersion = 9.2;
LastSwiftMigration = 1100;
ProvisioningStyle = Automatic;
SystemCapabilities = {
com.apple.Sandbox = {
enabled = 1;
};
};
};
33CC111A2044C6BA0003C045 = {
CreatedOnToolsVersion = 9.2;
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 33CC10E42044A3C60003C045;
productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
33CC10EC2044A3C60003C045 /* Runner */,
331C80D4294CF70F00263BE5 /* RunnerTests */,
33CC111A2044C6BA0003C045 /* Flutter Assemble */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
331C80D3294CF70F00263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
33CC10EB2044A3C60003C045 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3399D490228B24CF009A79C7 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
};
33CC111E2044C6BF0003C045 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
Flutter/ephemeral/FlutterInputs.xcfilelist,
);
inputPaths = (
Flutter/ephemeral/tripwire,
);
outputFileListPaths = (
Flutter/ephemeral/FlutterOutputs.xcfilelist,
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
};
81B9E979FD4EA9761F1ED876 /* [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;
};
8FD316E523682FD9A5657E4A /* [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;
};
92743C4D8D09C696E1E6EEBC /* [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;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
331C80D1294CF70F00263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
33CC10E92044A3C60003C045 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
331C80DA294CF71000263BE5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 33CC10EC2044A3C60003C045 /* Runner */;
targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */;
};
33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
33CC10F52044A3C60003C045 /* Base */,
);
name = MainMenu.xib;
path = Runner;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
331C80DB294CF71000263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D5029A70F57884515C070A87 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/planxo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/planxo";
};
name = Debug;
};
331C80DC294CF71000263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 6BB9321BF99BC8DEFDA2389B /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/planxo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/planxo";
};
name = Release;
};
331C80DD294CF71000263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 39155466C2D1A9BF4CBAF461 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.planxo.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/planxo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/planxo";
};
name = Profile;
};
338D0CE9231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
name = Profile;
};
338D0CEA231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};
name = Profile;
};
338D0CEB231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Profile;
};
33CC10F92044A3C60003C045 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
33CC10FA2044A3C60003C045 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
name = Release;
};
33CC10FC2044A3C60003C045 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
33CC10FD2044A3C60003C045 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};
name = Release;
};
33CC111C2044C6BA0003C045 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
33CC111D2044C6BA0003C045 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
331C80DB294CF71000263BE5 /* Debug */,
331C80DC294CF71000263BE5 /* Release */,
331C80DD294CF71000263BE5 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC10F92044A3C60003C045 /* Debug */,
33CC10FA2044A3C60003C045 /* Release */,
338D0CE9231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC10FC2044A3C60003C045 /* Debug */,
33CC10FD2044A3C60003C045 /* Release */,
338D0CEA231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC111C2044C6BA0003C045 /* Debug */,
33CC111D2044C6BA0003C045 /* Release */,
338D0CEB231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 33CC10E52044A3C60003C045 /* Project object */;
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "planxo.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "planxo.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C80D4294CF70F00263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "planxo.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "planxo.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,19 @@
import Cocoa
import FlutterMacOS
@main
class AppDelegate: FlutterAppDelegate {
override func applicationDidFinishLaunching(_ aNotification: Notification) {
let window = NSApplication.shared.windows.first
window?.minSize = NSSize(width: 800, height: 700) // Set minimum width and height
super.applicationDidFinishLaunching(aNotification)
}
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
return true
}
}

View File

@@ -0,0 +1,68 @@
{
"images" : [
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "app_icon_16.png",
"scale" : "1x"
},
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "app_icon_32.png",
"scale" : "2x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "app_icon_32.png",
"scale" : "1x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "app_icon_64.png",
"scale" : "2x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "app_icon_128.png",
"scale" : "1x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "app_icon_256.png",
"scale" : "2x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "app_icon_256.png",
"scale" : "1x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "app_icon_512.png",
"scale" : "2x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "app_icon_512.png",
"scale" : "1x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "app_icon_1024.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Some files were not shown because too many files have changed in this diff Show More