diff --git a/Makefile b/Makefile index 6efea5a..8f8e927 100644 --- a/Makefile +++ b/Makefile @@ -96,10 +96,16 @@ proto: ./proto/*.proto cd .. +proto_app: + cd frontend/app && \ + rm -f lib/pb/*.dart && \ + protoc --dart_out=grpc:lib/pb -I=../../bff/proto/ ../../bff/proto/*.proto && \ + cd ../.. + evans: evans --host localhost --port 9090 --package pb -r repl count_lines: - cloc --exclude-dir=.history,.git . + cloc --exclude-dir=.history,.git,.idea,.dart_tool,build,ios,android,linux,macos,web,windows . .PHONY: reset_docker backend_build rebuild backend backend dev network postgres migratenew migrateup migratedown createdb dropdb sqlc sqlcinit test coverage server mock proto evans count_lines \ No newline at end of file diff --git a/bff/gapi/rpc_refresh_token.go b/bff/gapi/rpc_refresh_token.go index 10d479f..ce1d70e 100644 --- a/bff/gapi/rpc_refresh_token.go +++ b/bff/gapi/rpc_refresh_token.go @@ -54,14 +54,9 @@ func (server *Server) RefreshToken(ctx context.Context, req *pb.RefreshTokenRequ return nil, status.Error(codes.PermissionDenied, "session expired") } - id, err := server.tokenMaker.NewTokenID() - if err != nil { - slog.Error("refresh_token (token_id)", slog.Int64("invoked_by", int64(refreshPayload.AccountID)), slog.String("error", err.Error())) - return nil, status.Error(codes.Internal, "failed to create session token") - } accessToken, accessPayload, err := server.tokenMaker.CreateToken( refreshPayload.AccountID, - id, + session.ID, server.config.AccessTokenDuration, ) if err != nil { diff --git a/frontend/app/.gitignore b/frontend/app/.gitignore new file mode 100644 index 0000000..7c46a55 --- /dev/null +++ b/frontend/app/.gitignore @@ -0,0 +1,861 @@ +# Miscellaneous +*.class +#*.lock +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.classpath +.project +.settings/ +.vscode/ + +# Flutter repo-specific +/bin/cache/ +/bin/internal/bootstrap.bat +/bin/internal/bootstrap.sh +/bin/mingit/ +/dev/benchmarks/mega_gallery/ +/dev/bots/.recipe_deps +/dev/bots/android_tools/ +/dev/devicelab/ABresults*.json +/dev/docs/doc/ +/dev/docs/flutter.docs.zip +/dev/docs/lib/ +/dev/docs/pubspec.yaml +/dev/integration_tests/**/xcuserdata +/dev/integration_tests/**/Pods +/packages/flutter/coverage/ +version +analysis_benchmark.json + +# packages file containing multi-root paths +.packages.generated + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +**/generated_plugin_registrant.dart +.packages +.pub-cache/ +.pub/ +build/ +flutter_*.png +linked_*.ds +unlinked.ds +unlinked_spec.ds + +# Android related +**/android/**/gradle-wrapper.jar +.gradle/ +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java +**/android/key.properties +# *.jks + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/.last_build_id +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# macOS +**/macos/Flutter/GeneratedPluginRegistrant.swift + +# Coverage +coverage/ + +# Symbols +app.*.symbols + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!/dev/ci/**/Gemfile.lock + + +## Related .gitignores ## + +# Firebase configuration files / Google Services (e.g. APIs or Firebase) +ios/Runner/GoogleService-Info.plist +android/app/google-services.json + +# Google Maps API +google_maps_api.xml + +# Web related +lib/generated_plugin_registrant.dart + +# Obfuscation related +app.*.map.json + + +### --------------------------- Dart.gitignore ------------------------- ### + +# See https://www.dartlang.org/guides/libraries/private-files + +# Files and directories created by pub +#.dart_tool/ +#.packages +#build/ +# If you're building an application, you may want to check-in your pubspec.lock +#pubspec.lock + +# Directory created by dartdoc +# If you don't generate documentation locally you can remove this line. +doc/api/ + +# dotenv environment variables file +.env* + +# Avoid committing generated Javascript files: +*.dart.js +*.info.json # Produced by the --dump-info flag. +*.js # When generated by dart2js. Don't specify *.js if your + # project includes source files written in JavaScript. +*.js_ +*.js.deps +*.js.map + +#.flutter-plugins +#.flutter-plugins-dependencies + + +### -------------------------- Swift.gitignore ------------------------ ### + +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +#xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +#*.xcscmblueprint +#*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +#build/ +#DerivedData/ +#*.moved-aside +#*.pbxuser +#!default.pbxuser +#*.mode1v3 +#!default.mode1v3 +#*.mode2v3 +#!default.mode2v3 +#*.perspectivev3 +#!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager + +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. + Packages/ + Package.pins + Package.resolved + *.xcodeproj + +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project + .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + + +### -------------------------- Java.gitignore -------------------------- ### + +# Compiled class file +#*.class + +# Log file +#*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +#*.jar +*.war +*.nar +*.ear +#*.zip +*.tar.gz +#*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + + +### -------------------------- Kotlin.gitignore ------------------------ ### + +#.DS_Store +.idea/shelf +/confluence/target +/dependencies/repo +/android.tests.dependencies +/dependencies/android.tests.dependencies +/dist +/local +/gh-pages +/ideaSDK +/clionSDK +/android-studio/sdk +#out/ +/tmp +/intellij +workspace.xml +*.versionsBackup +/idea/testData/debugger/tinyApp/classes* +/jps-plugin/testData/kannotator +/js/js.translator/testData/out/ +/js/js.translator/testData/out-min/ +/js/js.translator/testData/out-pir/ +#.gradle/ +#build/ +!**/src/**/build +!**/test/**/build +#*.iml +!**/testData/**/*.iml +.idea/remote-targets.xml +.idea/libraries/Gradle*.xml +.idea/libraries/Maven*.xml +.idea/artifacts/PILL_*.xml +.idea/artifacts/KotlinPlugin.xml +#.idea/modules +.idea/runConfigurations/JPS_*.xml +.idea/runConfigurations/PILL_*.xml +.idea/runConfigurations/_FP_*.xml +.idea/runConfigurations/_MT_*.xml +#.idea/libraries +#.idea/modules.xml +#.idea/gradle.xml +#.idea/compiler.xml +.idea/inspectionProfiles/profiles_settings.xml +.idea/.name +.idea/artifacts/dist_auto_* +.idea/artifacts/dist.xml +.idea/artifacts/ideaPlugin.xml +.idea/artifacts/kotlinc.xml +.idea/artifacts/kotlin_compiler_jar.xml +.idea/artifacts/kotlin_plugin_jar.xml +.idea/artifacts/kotlin_jps_plugin_jar.xml +.idea/artifacts/kotlin_daemon_client_jar.xml +.idea/artifacts/kotlin_imports_dumper_compiler_plugin_jar.xml +.idea/artifacts/kotlin_main_kts_jar.xml +.idea/artifacts/kotlin_compiler_client_embeddable_jar.xml +.idea/artifacts/kotlin_reflect_jar.xml +.idea/artifacts/kotlin_stdlib_js_ir_* +.idea/artifacts/kotlin_test_js_ir_* +.idea/artifacts/kotlin_stdlib_wasm_* +.idea/artifacts/kotlinx_atomicfu_runtime_* +#.idea/jarRepositories.xml +.idea/csv-plugin.xml +.idea/libraries-with-intellij-classes.xml +.idea/misc.xml +node_modules/ +.rpt2_cache/ +libraries/tools/kotlin-test-js-runner/lib/ +#local.properties +buildSrcTmp/ +distTmp/ +outTmp/ +/test.output +/kotlin-native/dist +kotlin-ide/ + + +### ------------------------- Android.gitignore ------------------------ ### + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Generated files +bin/ +gen/ +out/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +.idea/caches + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +#fastlane/report.xml +#fastlane/Preview.html +fastlane/screenshots +#fastlane/test_output +fastlane/readme.md + +# Keystore files +*.jks +*.keystore + + +### ------------------------- Gradle.gitignore ------------------------- ### + +.gradle +**/build/ +!src/**/build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# Eclipse Gradle plugin generated files +# Eclipse Core +#.project +# JDT-specific (Eclipse Java Development Tools) +#.classpath + + +### ------------------------- Maven.gitignore -------------------------- ### + +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + +# Eclipse m2e generated files +# Eclipse Core +#.project +# JDT-specific (Eclipse Java Development Tools) +#.classpath + + +### ------------------------ JetBrains.gitignore ----------------------- ### + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. + .idea/artifacts + .idea/compiler.xml + .idea/jarRepositories.xml + .idea/modules.xml + .idea/*.iml + .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +#*.iws + +# IntelliJ +#out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + + +### ------------------------- Xcode.gitignore -------------------------- ### + +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +#build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Gcc Patch +/*.gcno + + +### -------------------- VisualStudioCode.gitignore ------------------- ### + +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + + +### ----------------------- SublimeText.gitignore ---------------------- ### + +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + + +### -------------------------- Emacs.gitignore ------------------------- ### + +# -*- mode: gitignore; -*- +#*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +### -------------------------- Vim.gitignore -------------------------- ### + +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +#*~ +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + + +### ------------------------ Windows.gitignore ------------------------ ### + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + + +### ------------------------- macOS.gitignore -------------------------- ### + +# General +#.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### -------------------------- Linux.gitignore ------------------------- ### + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + + +### ------------------------ Archives.gitignore ------------------------ ### + +# It's better to unpack these files and commit the raw source because +# git has its own built in compression methods. +*.7z +*.jar +*.rar +*.zip +*.gz +*.gzip +*.tgz +*.bzip +*.bzip2 +*.bz2 +*.xz +*.lzma +#*.cab +*.xar + +# Packing-only formats +*.iso +*.tar + +# Package management formats +*.dmg +*.xpi +*.gem +*.egg +*.deb +*.rpm +#*.msi +#*.msm +#*.msp +*.txz + + +### ------------------------- Backup.gitignore ------------------------- ### + +*.bak +*.gho +*.ori +*.orig +*.tmp + + +### -------------------------- JEnv.gitignore -------------------------- ### + +# JEnv local Java version configuration file +.java-version + +# Used by previous versions of JEnv +.jenv-version + + +### ------------------------- Project Specific ------------------------- ### + +# Include any specific files here. + + +### ---------------------------- References ---------------------------- ### + +# Flutter - https://github.com/flutter/flutter/blob/master/.gitignore +# Dart - https://github.com/github/gitignore/blob/main/Dart.gitignore +# Swift - https://github.com/github/gitignore/blob/main/Swift.gitignore +# Java - https://github.com/github/gitignore/blob/main/Java.gitignore +# Kotlin - https://github.com/JetBrains/kotlin/blob/master/.gitignore +# Android - https://github.com/github/gitignore/blob/main/Android.gitignore +# Gradle - https://github.com/github/gitignore/blob/main/Gradle.gitignore +# Maven - https://github.com/github/gitignore/blob/main/Maven.gitignore + +# JetBrains - https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# Xcode - https://github.com/github/gitignore/blob/main/Global/Xcode.gitignore +# VisualStudioCode - https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# SublimeText - https://github.com/github/gitignore/blob/main/Global/SublimeText.gitignore +# Emacs - https://github.com/github/gitignore/blob/main/Global/Emacs.gitignore +# Vim - https://github.com/github/gitignore/blob/main/Global/Vim.gitignore + +# Windows - https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +# macOS - https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# Linux - https://github.com/github/gitignore/blob/main/Global/Linux.gitignore + +# Archives - https://github.com/github/gitignore/blob/main/Global/Archives.gitignore +# Backup - https://github.com/github/gitignore/blob/main/Global/Backup.gitignore +# JEnv - https://github.com/github/gitignore/blob/main/Global/JEnv.gitignore \ No newline at end of file diff --git a/frontend/app/.metadata b/frontend/app/.metadata new file mode 100644 index 0000000..acfc1cf --- /dev/null +++ b/frontend/app/.metadata @@ -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: "6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: android + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: ios + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: linux + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: macos + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: web + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + - platform: windows + create_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + base_revision: 6c4930c4ac86fb286f30e31d0ec8bffbcbb9953e + + # 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' diff --git a/frontend/app/README.md b/frontend/app/README.md new file mode 100644 index 0000000..b73cfb0 --- /dev/null +++ b/frontend/app/README.md @@ -0,0 +1,16 @@ +# app + +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. diff --git a/frontend/app/analysis_options.yaml b/frontend/app/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/frontend/app/analysis_options.yaml @@ -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 diff --git a/frontend/app/android/.gitignore b/frontend/app/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/frontend/app/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/frontend/app/android/app/build.gradle b/frontend/app/android/app/build.gradle new file mode 100644 index 0000000..d6f6037 --- /dev/null +++ b/frontend/app/android/app/build.gradle @@ -0,0 +1,67 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +android { + namespace "com.example.app" + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.app" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + 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.debug + } + } +} + +flutter { + source '../..' +} + +dependencies {} diff --git a/frontend/app/android/app/src/debug/AndroidManifest.xml b/frontend/app/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/frontend/app/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/frontend/app/android/app/src/main/AndroidManifest.xml b/frontend/app/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e8847cc --- /dev/null +++ b/frontend/app/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/frontend/app/android/app/src/main/kotlin/com/example/app/MainActivity.kt b/frontend/app/android/app/src/main/kotlin/com/example/app/MainActivity.kt new file mode 100644 index 0000000..461fcfb --- /dev/null +++ b/frontend/app/android/app/src/main/kotlin/com/example/app/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/frontend/app/android/app/src/main/res/drawable-v21/launch_background.xml b/frontend/app/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/frontend/app/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/frontend/app/android/app/src/main/res/drawable/launch_background.xml b/frontend/app/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/frontend/app/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/frontend/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/frontend/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..db77bb4 Binary files /dev/null and b/frontend/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/frontend/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/frontend/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..17987b7 Binary files /dev/null and b/frontend/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/frontend/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/frontend/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/frontend/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/frontend/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/frontend/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d5f1c8d Binary files /dev/null and b/frontend/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/frontend/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/frontend/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4d6372e Binary files /dev/null and b/frontend/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/frontend/app/android/app/src/main/res/values-night/styles.xml b/frontend/app/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/frontend/app/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/frontend/app/android/app/src/main/res/values/styles.xml b/frontend/app/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/frontend/app/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/frontend/app/android/app/src/profile/AndroidManifest.xml b/frontend/app/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/frontend/app/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/frontend/app/android/build.gradle b/frontend/app/android/build.gradle new file mode 100644 index 0000000..f7eb7f6 --- /dev/null +++ b/frontend/app/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.7.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.3.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/frontend/app/android/gradle.properties b/frontend/app/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/frontend/app/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/frontend/app/android/gradle/wrapper/gradle-wrapper.properties b/frontend/app/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..3c472b9 --- /dev/null +++ b/frontend/app/android/gradle/wrapper/gradle-wrapper.properties @@ -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-7.5-all.zip diff --git a/frontend/app/android/settings.gradle b/frontend/app/android/settings.gradle new file mode 100644 index 0000000..55c4ca8 --- /dev/null +++ b/frontend/app/android/settings.gradle @@ -0,0 +1,20 @@ +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") + + plugins { + id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + } +} + +include ":app" + +apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/frontend/app/ios/.gitignore b/frontend/app/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/frontend/app/ios/.gitignore @@ -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 diff --git a/frontend/app/ios/Flutter/AppFrameworkInfo.plist b/frontend/app/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9625e10 --- /dev/null +++ b/frontend/app/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/frontend/app/ios/Flutter/Debug.xcconfig b/frontend/app/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/frontend/app/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/frontend/app/ios/Flutter/Release.xcconfig b/frontend/app/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/frontend/app/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/frontend/app/ios/Runner.xcodeproj/project.pbxproj b/frontend/app/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e806580 --- /dev/null +++ b/frontend/app/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,614 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 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 */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; +/* 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 = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807E294A63A400263BE5 /* Frameworks */, + 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 = 1430; + 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 = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.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.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.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.app; + 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.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/frontend/app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/frontend/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/frontend/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..87131a0 --- /dev/null +++ b/frontend/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/ios/Runner.xcworkspace/contents.xcworkspacedata b/frontend/app/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/frontend/app/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/frontend/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frontend/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/frontend/app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/frontend/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/frontend/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/frontend/app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/frontend/app/ios/Runner/AppDelegate.swift b/frontend/app/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/frontend/app/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -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" + } +} diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000..dc9ada4 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000..7353c41 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000..797d452 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000..6ed2d93 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000..4cd7b00 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000..fe73094 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000..321773c Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000..797d452 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000..502f463 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000..0ec3034 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000..0ec3034 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000..e9f5fea Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000..84ac32a Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000..8953cba Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000..0467bf1 Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -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" + } +} diff --git a/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/frontend/app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -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. \ No newline at end of file diff --git a/frontend/app/ios/Runner/Base.lproj/LaunchScreen.storyboard b/frontend/app/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/frontend/app/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/ios/Runner/Base.lproj/Main.storyboard b/frontend/app/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/frontend/app/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/ios/Runner/Info.plist b/frontend/app/ios/Runner/Info.plist new file mode 100644 index 0000000..c2e05c5 --- /dev/null +++ b/frontend/app/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + App + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + app + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/frontend/app/ios/Runner/Runner-Bridging-Header.h b/frontend/app/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/frontend/app/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/frontend/app/ios/RunnerTests/RunnerTests.swift b/frontend/app/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/frontend/app/ios/RunnerTests/RunnerTests.swift @@ -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. + } + +} diff --git a/frontend/app/lib/assets/fonts/JosefinSans-Italic-VariableFont_wght.ttf b/frontend/app/lib/assets/fonts/JosefinSans-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..d2d2dd6 Binary files /dev/null and b/frontend/app/lib/assets/fonts/JosefinSans-Italic-VariableFont_wght.ttf differ diff --git a/frontend/app/lib/assets/fonts/JosefinSans-VariableFont_wght.ttf b/frontend/app/lib/assets/fonts/JosefinSans-VariableFont_wght.ttf new file mode 100644 index 0000000..00ea1e7 Binary files /dev/null and b/frontend/app/lib/assets/fonts/JosefinSans-VariableFont_wght.ttf differ diff --git a/frontend/app/lib/assets/hero-pattern-300x200.png b/frontend/app/lib/assets/hero-pattern-300x200.png new file mode 100644 index 0000000..69a8390 Binary files /dev/null and b/frontend/app/lib/assets/hero-pattern-300x200.png differ diff --git a/frontend/app/lib/assets/logo_300x200.png b/frontend/app/lib/assets/logo_300x200.png new file mode 100644 index 0000000..0b4ca41 Binary files /dev/null and b/frontend/app/lib/assets/logo_300x200.png differ diff --git a/frontend/app/lib/data/database.dart b/frontend/app/lib/data/database.dart new file mode 100644 index 0000000..42b37c8 --- /dev/null +++ b/frontend/app/lib/data/database.dart @@ -0,0 +1,223 @@ +import 'dart:async'; +import 'package:fixnum/fixnum.dart'; + +import 'package:app/pb/google/protobuf/timestamp.pb.dart'; +import 'package:path/path.dart'; +import 'package:sqflite/sqflite.dart'; + +class Session { + Session({ + this.sessionId, + this.accessToken, + this.accessTokenExpiresAt, + this.refreshToken, + this.refreshTokenExpiresAt, + this.accountId, + }); + + String? sessionId; + String? accessToken; + String? refreshToken; + Timestamp? accessTokenExpiresAt; + Timestamp? refreshTokenExpiresAt; + Int64? accountId; + + late Database _database; + + Future get database async => _database; + + static Future get session async { + final Database db = await openDatabase( + join(await getDatabasesPath(), 'df_database.db'), + onCreate: (db, version) { + return db.execute( + 'CREATE TABLE sessions(accountId INTEGER PRIMARY KEY, sessionId TEXT, accessToken TEXT, accessTokenExpiresAt TEXT, refreshToken TEXT, refreshTokenExpiresAt TEXT)', + ); + }, + version: 1, + ); + Session s = Session(); + s._database = db; + final sessions = await s.getSessions(); + if (sessions.isNotEmpty) { + final session = sessions[0]; + session._database = db; + return session; + } + return s; + } + + void _init() { + _initDatabase(); + } + + void reset() { + if (sessionId != null) { + removeSession(sessionId!); + } + sessionId = null; + accessToken = null; + refreshToken = null; + accessTokenExpiresAt = null; + refreshTokenExpiresAt = null; + } + + Future _initDatabase() async { + // print('DB: INITIALIZING - start'); + _database = await openDatabase( + join(await getDatabasesPath(), 'df_database.db'), + onCreate: (db, version) { + return db.execute( + 'CREATE TABLE sessions(accountId INTEGER PRIMARY KEY, sessionId TEXT, accessToken TEXT, accessTokenExpiresAt TEXT, refreshToken TEXT, refreshTokenExpiresAt TEXT)', + ); + }, + version: 1, + ); + // print('DB: INITIALIZING - end'); + + return _database; + } + + Map toMap() { + return { + 'accountId': accountId?.toInt(), + 'sessionId': sessionId, + 'accessToken': accessToken, + 'accessTokenExpiresAt': accessTokenExpiresAt?.toDateTime().toString(), + 'refreshToken': refreshToken, + 'refreshTokenExpiresAt': refreshTokenExpiresAt?.toDateTime().toString(), + }; + } + + @override + String toString() { + return 'Session{accountId: $accountId, sessionId: $sessionId, accessToken: $accessToken, accessTokenExpiresAt: ${accessTokenExpiresAt.toString()}, refreshToken: $refreshToken, refreshTokenExpiresAt: ${refreshTokenExpiresAt.toString()}}'; + } + + static newSession(Session session) async { + final db = await openDatabase( + join(await getDatabasesPath(), 'df_database.db'), + onCreate: (db, version) { + return db.execute( + 'CREATE TABLE sessions(accountId INTEGER PRIMARY KEY, sessionId TEXT, accessToken TEXT, accessTokenExpiresAt TEXT, refreshToken TEXT, refreshTokenExpiresAt TEXT)', + ); + }, + version: 1, + ); + + await db.insert( + 'sessions', + session.toMap(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + + static Future updateToken(Session s) async { + final db = await openDatabase( + join(await getDatabasesPath(), 'df_database.db'), + onCreate: (db, version) { + return db.execute( + 'CREATE TABLE sessions(accountId INTEGER PRIMARY KEY, sessionId TEXT, accessToken TEXT, accessTokenExpiresAt TEXT, refreshToken TEXT, refreshTokenExpiresAt TEXT)', + ); + }, + version: 1, + ); + await db.update( + 'sessions', + s.toMap(), + ); + return s; //await getSession(s.accountId!); + } + + Future insertSession(Session session) async { + // print('INSERTING SESSION: ${session.sessionId}'); + final db = _database; + await db.insert( + 'sessions', + session.toMap(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + // print('INSERT RESULT: $result'); + } + + Future updateSession(Session session) async { + sessionId = session.sessionId; + accessToken = session.accessToken; + accessTokenExpiresAt = session.accessTokenExpiresAt; + refreshToken = session.refreshToken; + refreshTokenExpiresAt = session.refreshTokenExpiresAt; + final db = _database; + await db.update('sessions', session.toMap()); + return session; + } + + Future removeSession(String sessionId) async { + final db = _database; + await db.delete('sessions', where: 'sessionId = ?', whereArgs: [sessionId]); + this.sessionId = null; + refreshToken = null; + accessTokenExpiresAt = null; + refreshTokenExpiresAt = null; + accountId = null; + accessToken = null; + } + + Future> getSessions() async { + final db = await database; + + final List> maps = await db.query('sessions'); + // print(maps); + final List sessions = List.generate( + maps.length, + (i) { + // print('GOT MAP: ${maps[i]}'); + if (maps[i]['sessionId'] == null) { + return Session(); + } + return Session( + sessionId: maps[i]['sessionId'] as String, + accessToken: maps[i]['accessToken'] as String, + accessTokenExpiresAt: Timestamp.fromDateTime( + DateTime.parse(maps[i]['accessTokenExpiresAt'] as String)), + refreshToken: maps[i]['refreshToken'] as String, + refreshTokenExpiresAt: Timestamp.fromDateTime( + DateTime.parse(maps[i]['refreshTokenExpiresAt'] as String)), + accountId: Int64(maps[i]['accountId'] as int), + ); + }, + ); + + return sessions; + } + + static Future getSession(Int64 accountId) async { + final Database db = await openDatabase( + join(await getDatabasesPath(), 'df_database.db'), + onCreate: (db, version) { + return db.execute( + 'CREATE TABLE sessions(accountId INTEGER PRIMARY KEY, sessionId TEXT, accessToken TEXT, accessTokenExpiresAt TEXT, refreshToken TEXT, refreshTokenExpiresAt TEXT)', + ); + }, + version: 1, + ); + + final List> maps = await db.query('sessions', + where: 'accountId = ?', whereArgs: [accountId], limit: 1); + + final List sessions = List.generate( + maps.length, + (i) { + return Session( + sessionId: maps[i]['sessionId'] as String, + accessToken: maps[i]['accessToken'] as String, + accessTokenExpiresAt: maps[i]['accessTokenExpiresAt'] as Timestamp, + refreshToken: maps[i]['refreshToken'] as String, + refreshTokenExpiresAt: maps[i]['refreshTokenExpiresAt'] as Timestamp, + accountId: maps[i]['accountId'] as Int64, + ); + }, + ); + + return sessions[0]; + } +} diff --git a/frontend/app/lib/gapi/client.dart b/frontend/app/lib/gapi/client.dart new file mode 100644 index 0000000..eb99b9b --- /dev/null +++ b/frontend/app/lib/gapi/client.dart @@ -0,0 +1,190 @@ +import 'dart:developer'; + +import 'package:app/data/database.dart'; +import 'package:app/pb/account.pb.dart'; +import 'package:app/pb/rpc_create_account.pb.dart'; +import 'package:app/pb/rpc_get_account.pb.dart'; +import 'package:app/pb/rpc_get_account_info.pb.dart'; +import 'package:app/pb/rpc_login.pb.dart'; +import 'package:app/pb/rpc_refresh_token.pb.dart'; +import 'package:app/pb/service_df.pbgrpc.dart'; +import 'package:fixnum/fixnum.dart'; +import 'package:grpc/grpc.dart'; + +class GClient { + GClient() { + _init(); + } + + String baseUrl = 'localhost'; + int port = 9090; + + Map metadata = {'Authorization': ''}; + + late Session session; + Account? account; + + static Future get client async { + Session s = await Session.session; + GClient c = GClient(); + c.session = s; + final sessions = await c.session.getSessions(); + if (sessions.isNotEmpty) { + c.session = sessions[0]; + } + print('ACCESS_TOKEN: ${c.session.accessToken}'); + return c; + } + + dfClient stub = dfClient( + ClientChannel('10.0.2.2', + port: 9090, + options: const ChannelOptions( + credentials: ChannelCredentials.insecure(), + )), + options: CallOptions( + timeout: const Duration(seconds: 5), + ), + ); + Future main(List args) async {} + + void _init() async { + session = await Session.session; + + final sessions = await session.getSessions(); + if (sessions.isNotEmpty) { + session = sessions[0]; + } + } + + Future createAccount( + {required String email, + required String password, + required Function({GrpcError? error}) onError}) async { + try { + final response = await stub.createAccount(CreateAccountRequest( + email: email, + password: password, + )); + account = response.account; + return response; + } on GrpcError catch (err) { + onError(error: err); + print('GRPC ERROR: ${err.message}'); + } catch (err) { + print('ERROR: $err'); + } + return CreateAccountResponse(); + } + + Future login( + {required String email, + required String password, + required Function({GrpcError? error}) onError, + required Function onSuccess}) async { + LoginResponse response = LoginResponse(); + try { + response = await stub.login(LoginRequest( + email: email, + password: password, + )); + session.accessToken = response.accessToken; + session.accountId = response.accountId; + session.sessionId = response.sessionId; + session.refreshToken = response.refreshToken; + session.accessTokenExpiresAt = response.accessTokenExpiresAt; + session.refreshTokenExpiresAt = response.refreshTokenExpiresAt; + try { + session.insertSession(session); + } catch (err) {} + metadata['Authorization'] = 'Bearer ${response.accessToken}'; + onSuccess(); + return response; + } on GrpcError catch (err) { + print('caught error: ${err.message}'); + metadata['Authorization'] = ''; + onError(error: err); + } catch (err) { + print('caught error: $err'); + metadata['Authorization'] = ''; + onError(); + } + return response; + } + + bool get isLoggedIn => + session.accessTokenExpiresAt != null && + session.accessTokenExpiresAt!.toDateTime().isAfter(DateTime.now()); + + Future resetSession() async { + session.reset(); + account = Account(); + session = await Session.session; + } + + Future refreshToken() async { + try { + final response = await stub.refreshToken( + RefreshTokenRequest( + refreshToken: session.refreshToken, + ), + ); + session.accessToken = response.accessToken; + session.insertSession(session); + return true; + } on GrpcError catch (err) { + print('caught grpc error: $err'); + } + return false; + } + + Future getAccount( + {required Int64 accountId, + required Function({GrpcError? err}) onError}) async { + GetAccountResponse response = GetAccountResponse(); + try { + response = await stub.getAccount(GetAccountRequest( + id: accountId, + )); + account = response.account; + } on GrpcError catch (err) { + if (err.code == 16) { + log(err.toString()); + onError(err: err); + } else { + log(err.toString()); + onError(); + } + } catch (err) { + log(err.toString()); + onError(); + } + return response; + } + + Future getAccountInfo(GetAccountInfoRequest request, + {required Function({String msg}) onError}) async { + GetAccountInfoResponse response = GetAccountInfoResponse(); + try { + print('SENDING REQ: $request WITH $metadata'); + response = await stub.getAccountInfo( + request, + options: CallOptions( + metadata: {'Authorization': 'Bearer ${session.accessToken}'}, + ), + ); + return response; + } on GrpcError catch (err) { + print('caught grpc error: ${err.message} [${err.code}]'); + if (err.code == 16) { + onError(msg: 'Sitzung ist abgelaufen.\nBitte loggen Sie sich neu ein.'); + } else { + onError(msg: err.message != null ? err.message! : 'Interner Fehler'); + } + } catch (err) { + print('caught error: $err'); + onError(msg: err.toString()); + } + return response; + } +} diff --git a/frontend/app/lib/main.dart b/frontend/app/lib/main.dart new file mode 100644 index 0000000..6b36af7 --- /dev/null +++ b/frontend/app/lib/main.dart @@ -0,0 +1,49 @@ +import 'package:app/pages/home_page.dart'; +import 'package:flutter/material.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + + runApp( + MaterialApp( + theme: ThemeData().copyWith( + colorScheme: const ColorScheme( + brightness: Brightness.dark, + primary: Colors.white, + onPrimary: Colors.black, + secondary: Colors.black, + onSecondary: Colors.white, + error: Color.fromARGB(170, 255, 0, 0), + onError: Color.fromARGB(170, 255, 0, 0), + background: Colors.transparent, + onBackground: Colors.white, + surface: Colors.black, + onSurface: Colors.white, + ), + textTheme: const TextTheme().copyWith( + titleLarge: const TextStyle( + color: Colors.white, + ), + titleMedium: const TextStyle( + color: Colors.white, + ), + titleSmall: const TextStyle( + color: Colors.white, + ), + ), + inputDecorationTheme: const InputDecorationTheme( + labelStyle: TextStyle( + color: Colors.grey, + ), + ), + scaffoldBackgroundColor: Colors.transparent, + appBarTheme: const AppBarTheme().copyWith( + backgroundColor: Colors.black, + foregroundColor: Colors.white, + )), + home: HomePage( + loggedOut: false, + ), + ), + ); +} diff --git a/frontend/app/lib/model/apis/api_response.dart b/frontend/app/lib/model/apis/api_response.dart new file mode 100644 index 0000000..6300f64 --- /dev/null +++ b/frontend/app/lib/model/apis/api_response.dart @@ -0,0 +1,17 @@ +class ApiResponse { + Status status; + T? data; + String? message; + + ApiResponse.initial(this.message) : status = Status.INITIAL; + ApiResponse.loading(this.message) : status = Status.LOADING; + ApiResponse.completed(this.data) : status = Status.COMPLETED; + ApiResponse.error(this.message) : status = Status.ERROR; + + @override + String toString() { + return "Status : $status \n Message: $message \n Data : $data"; + } +} + +enum Status { INITIAL, LOADING, COMPLETED, ERROR } diff --git a/frontend/app/lib/model/apis/app_exception.dart b/frontend/app/lib/model/apis/app_exception.dart new file mode 100644 index 0000000..7093126 --- /dev/null +++ b/frontend/app/lib/model/apis/app_exception.dart @@ -0,0 +1,32 @@ +class AppException implements Exception { + final _message; + final _prefix; + + AppException([this._message, this._prefix]); + + String toString() { + return "$_prefix$_message"; + } +} + +class FetchDataException extends AppException { + FetchDataException([String? message]) + : super(message, 'Fehler bei der Kommunikation: '); +} + +class BadRequestException extends AppException { + BadRequestException([message]) : super(message, 'Ungültige Anfrage; '); +} + +class UnauthorizedException extends AppException { + UnauthorizedException([message]) + : super(message, 'Nicht authorisierte Anfrage; '); +} + +class InvalidInputException extends AppException { + InvalidInputException([message]) : super(message, 'Ungültige Eingabe; '); +} + +class InternalException extends AppException { + InternalException([message]) : super(message, 'Interner Fehler; '); +} diff --git a/frontend/app/lib/model/services/backend_service.dart b/frontend/app/lib/model/services/backend_service.dart new file mode 100644 index 0000000..af38df8 --- /dev/null +++ b/frontend/app/lib/model/services/backend_service.dart @@ -0,0 +1,345 @@ +import 'dart:io'; + +import 'package:app/model/apis/app_exception.dart'; +import 'package:app/pb/account.pb.dart'; +import 'package:app/pb/account_info.pb.dart'; +import 'package:app/pb/google/protobuf/timestamp.pb.dart'; +import 'package:app/pb/person.pb.dart'; +import 'package:app/data/database.dart'; +import 'package:app/pb/rpc_create_account.pb.dart'; +import 'package:app/pb/rpc_create_person.pb.dart'; +import 'package:app/pb/rpc_get_account.pb.dart'; +import 'package:app/pb/rpc_get_account_info.pb.dart'; +import 'package:app/pb/rpc_get_person.pb.dart'; +import 'package:app/pb/rpc_list_persons.pb.dart'; +import 'package:app/pb/rpc_login.pb.dart'; +import 'package:app/pb/rpc_refresh_token.pb.dart'; +import 'package:app/pb/service_df.pbgrpc.dart'; +import 'package:fixnum/fixnum.dart'; +import 'package:grpc/grpc.dart'; + +class BackendService { + BackendService() { + _init(); + } + final String baseUrl = '10.0.0.2'; + final String port = '9090'; + + late Session _session; + + final dfClient _client = dfClient( + ClientChannel('10.0.2.2', + port: 9090, + options: const ChannelOptions( + credentials: ChannelCredentials.insecure(), + )), + options: CallOptions( + timeout: const Duration(seconds: 5), + ), + ); + + static get client => dfClient( + ClientChannel('10.0.2.2', + port: 9090, + options: const ChannelOptions( + credentials: ChannelCredentials.insecure(), + )), + options: CallOptions( + timeout: const Duration(seconds: 5), + ), + ); + + void _init() { + Session.session.then((value) => _session = value); + } + + Future _isLoggedIn() async { + Session session = await Session.session; + if (session.accessToken == null || + session.refreshToken == null || + session.accountId == null) { + return null; + } + + if (session.accessTokenExpiresAt == null) { + return null; + } + + if (session.refreshTokenExpiresAt == null) { + return null; + } + + if (session.refreshTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + return null; + } else { + if (session.refreshToken != null && + session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + session = await refreshToken(session); + } + } + + return session; + } + + static Future get isLoggedIn async { + Session session = await Session.session; + if (session.accessToken == null || + session.refreshToken == null || + session.accountId == null) { + return false; + } + + if (session.accessTokenExpiresAt == null) { + await logout(); + return false; + } + + if (session.refreshTokenExpiresAt == null) { + await logout(); + return false; + } + + if (session.refreshTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + await logout(); + return false; + } + + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + Session s = await BackendService.refreshToken(session); + if (s == session) { + return false; + } + } + + return true; + } + + static Future createAccount( + {required String email, required String password}) async { + try { + await BackendService.client.createAccount(CreateAccountRequest( + email: email, + password: password, + )); + + return await login(email: email, password: password); + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + Future getAccount() async { + Session? session = await _isLoggedIn(); + if (session == null) { + throw UnauthorizedException('Sitzung ist abgelaufen'); + } + try { + final GetAccountResponse response = await _client.getAccount( + GetAccountRequest(id: session.accountId), + options: CallOptions( + metadata: {'Authorization': 'Bearer ${session.accessToken}'})); + return response.account; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + if (err.code == 16) { + throw UnauthorizedException(err.message); + } + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + Future getAccountInfo() async { + Session session = await Session.session; + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Keine Siztung gefunden'); + } + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + session = await refreshToken(session); + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + throw UnauthorizedException('Sitzung ist abgelaufen'); + } + } + try { + final GetAccountInfoResponse response = await _client + .getAccountInfo(GetAccountInfoRequest(accountId: _session.accountId)); + return response.accountInfo; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + if (err.code == 16) { + await refreshToken(session); + return getAccountInfo(); + } + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + Future getPerson(Int64 personId) async { + Session session = await Session.session; + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Keine Siztung gefunden'); + } + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + session = await refreshToken(session); + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Sitzung ist abgelaufen'); + } + } + try { + final GetPersonResponse response = + await _client.getPerson(GetPersonRequest(id: personId)); + return response.person; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + Future createPerson( + {required String firstname, + required String lastname, + required String street, + required String zip, + required String city, + required String country, + required DateTime birthday}) async { + Session session = await Session.session; + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Keine Siztung gefunden'); + } + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + session = await refreshToken(session); + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Sitzung ist abgelaufen'); + } + } + try { + final CreatePersonResponse response = await _client.createPerson( + CreatePersonRequest( + accountId: session.accountId, + lastname: lastname, + firstname: firstname, + street: street, + zip: zip, + country: country, + birthday: Timestamp.fromDateTime(birthday), + ), + options: CallOptions( + metadata: {'Authorization': 'Bearer ${session.accessToken}'})); + return response.person; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + Future> listPersons() async { + Session session = await Session.session; + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Keine Siztung gefunden'); + } + if (session.accessTokenExpiresAt!.toDateTime().isBefore(DateTime.now())) { + session = await refreshToken(session); + if (session.accessTokenExpiresAt == null) { + throw UnauthorizedException('Sitzung ist abgelaufen'); + } + } + try { + final ListPersonsResponse response = await _client.listPersons( + ListPersonsRequest( + accountId: session.accountId, + ), + options: CallOptions( + metadata: {'Authorization': 'Bearer ${session.accessToken}'})); + return response.persons; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + // Future> listPersons() async { + // if (_session.accessToken == null) { + // refreshToken(); + // } + // try { + // ListPersonsResponse response = + // await _client.listPersons(ListPersonsRequest(accountId: _session.accountId)); + // return response.persons; + // } on SocketException { + // throw FetchDataException('Keine Internet Verbindung'); + // } on GrpcError catch (err) { + // throw FetchDataException(err.message); + // } catch (err) { + // throw InternalException(err.toString()); + // } + // } + static Future login( + {required String email, required String password}) async { + try { + final LoginResponse response = await BackendService.client.login( + LoginRequest( + email: email, + password: password, + ), + ); + Session s = Session( + accessToken: response.accessToken, + sessionId: response.sessionId, + accessTokenExpiresAt: response.accessTokenExpiresAt, + refreshToken: response.refreshToken, + refreshTokenExpiresAt: response.refreshTokenExpiresAt, + accountId: response.accountId, + ); + await Session.newSession(s); + return response.accessToken != ''; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + static Future refreshToken(Session session) async { + try { + final RefreshTokenResponse response = await BackendService.client + .refreshToken( + RefreshTokenRequest(refreshToken: session.refreshToken)); + session.accessToken = response.accessToken; + session.accessTokenExpiresAt = response.accessTokenExpiresAt; + session = await Session.updateToken(session); + return session; + } on SocketException { + throw FetchDataException('Keine Internet Verbindung'); + } on GrpcError catch (err) { + throw FetchDataException(err.message); + } catch (err) { + throw InternalException(err.toString()); + } + } + + static Future logout() async { + Session session = await Session.session; + session.reset(); + } +} diff --git a/frontend/app/lib/model/view_model/account_vm.dart b/frontend/app/lib/model/view_model/account_vm.dart new file mode 100644 index 0000000..fb3a998 --- /dev/null +++ b/frontend/app/lib/model/view_model/account_vm.dart @@ -0,0 +1,32 @@ +import 'package:app/model/apis/api_response.dart'; +import 'package:app/model/services/backend_service.dart'; +import 'package:app/model/view_model/base_vm.dart'; +import 'package:app/pb/account.pb.dart'; + +class AccountViewModel extends BaseViewModel { + AccountViewModel() { + _init(); + } + ApiResponse _apiResponse = ApiResponse.initial('Keine Daten'); + + final BackendService _service = BackendService(); + Account? _account; + + ApiResponse get response { + return _apiResponse; + } + + Account? get account { + return _account; + } + + void _init() async { + super.init(); + // try { + // _apiResponse = ApiResponse.completed(await _service.getAccount()); + // } catch (e) { + // _apiResponse = ApiResponse.error(e.toString()); + // } + // notifyListeners(); + } +} diff --git a/frontend/app/lib/model/view_model/base_vm.dart b/frontend/app/lib/model/view_model/base_vm.dart new file mode 100644 index 0000000..7745a8e --- /dev/null +++ b/frontend/app/lib/model/view_model/base_vm.dart @@ -0,0 +1,254 @@ +import 'package:app/model/apis/api_response.dart'; +import 'package:app/model/services/backend_service.dart'; +import 'package:app/pages/home_page.dart'; +import 'package:app/util/colors.dart'; +import 'package:flutter/material.dart'; + +class BaseViewModel with ChangeNotifier { + BaseViewModel() { + init(); + } + ApiResponse _apiResponse = ApiResponse.initial('Keine Daten'); + + final BackendService _service = BackendService(); + + ApiResponse get response { + return _apiResponse; + } + + void init() async { + // if (await BackendService.isLoggedIn) { + try { + _apiResponse = ApiResponse.completed(await _service.getAccount()); + } catch (e) { + _apiResponse = ApiResponse.error(e.toString()); + } + notifyListeners(); + // } + } + + Future isLoggedIn(BuildContext context) async { + final messenger = ScaffoldMessenger.of(context); + final navigator = Navigator.of(context); + bool loggedIn = false; + try { + loggedIn = await BackendService.isLoggedIn; + } catch (err) { + if (err.toString().contains('session is blocked')) { + _apiResponse = ApiResponse.error('Sitzung ist abgelaufen'); + navigator.pushAndRemoveUntil( + MaterialPageRoute( + builder: (builder) => HomePage( + loggedOut: true, + )), + (route) => false); + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.error, + content: const Text( + 'Sitzung ist abgelaufen', + style: TextStyle(color: Colors.white), + ), + // action: SnackBarAction( + // label: 'Details', + // onPressed: () { + // if (context.mounted) { + // showDialog( + // context: context, + // builder: (context) => AlertDialog( + // backgroundColor: Colors.black, + // icon: Icon( + // Icons.error, + // color: CustomColors.error, + // ), + // content: Text( + // err.toString(), + // textAlign: TextAlign.center, + // ), + // )); + // } + // }, + // ), + )); + } + } + return loggedIn; + } + + Future getAccount(BuildContext context) async { + _apiResponse = ApiResponse.loading('Lade Daten'); + notifyListeners(); + final messenger = ScaffoldMessenger.of(context); + try { + _apiResponse = ApiResponse.completed(await _service.getAccount()); + } catch (e) { + if (e.toString().contains('session is blocked')) { + _apiResponse = ApiResponse.error('Sitzung ist abgelaufen'); + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.error, + content: const Text( + 'Sitzung ist abgelaufen', + style: TextStyle(color: Colors.white), + ), + action: SnackBarAction( + label: 'Details', + onPressed: () { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: Colors.black, + icon: Icon( + Icons.error, + color: CustomColors.error, + ), + content: Text( + e.toString(), + textAlign: TextAlign.center, + ), + )); + }, + ), + )); + } + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.error, + content: const Text( + 'Sitzung ist abgelaufen', + style: TextStyle(color: Colors.white), + ), + action: SnackBarAction( + label: 'Details', + onPressed: () { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: Colors.black, + icon: Icon( + Icons.error, + color: CustomColors.error, + ), + content: Text( + e.toString(), + textAlign: TextAlign.center, + ), + )); + }, + ), + )); + _apiResponse = ApiResponse.error(e.toString()); + } + notifyListeners(); + } + + Future logout() async { + _apiResponse = ApiResponse.loading('Logge aus'); + notifyListeners(); + try { + await BackendService.logout(); + _apiResponse = ApiResponse.completed(true); + } catch (e) { + _apiResponse = ApiResponse.error(e.toString()); + } + print(_apiResponse.message); + notifyListeners(); + } + + Future login(BuildContext context, + {required String email, required String password}) async { + bool resp = false; + _apiResponse = ApiResponse.loading('Logge ein'); + notifyListeners(); + final messenger = ScaffoldMessenger.of(context); + try { + resp = await BackendService.login(email: email, password: password); + _apiResponse = ApiResponse.completed(resp); + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.success, + content: const Text( + 'Erfolgreich eingeloggt', + style: TextStyle(color: Colors.white), + ), + )); + } catch (e) { + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.error, + content: const Text( + 'Login fehlgeschlagen', + style: TextStyle(color: Colors.white), + ), + action: SnackBarAction( + label: 'Details', + onPressed: () { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: Colors.black, + icon: Icon( + Icons.error, + color: CustomColors.error, + ), + content: Text( + e.toString(), + textAlign: TextAlign.center, + ), + )); + }, + ), + )); + _apiResponse = ApiResponse.error(e.toString()); + } + print(_apiResponse.message); + notifyListeners(); + return resp; + } + + Future createAccount(BuildContext context, + {required String email, required String password}) async { + bool resp = false; + final messenger = ScaffoldMessenger.of(context); + + _apiResponse = ApiResponse.loading('Logge ein'); + notifyListeners(); + try { + resp = + await BackendService.createAccount(email: email, password: password); + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.success, + content: const Text( + 'Account angelegt', + style: TextStyle(color: Colors.white), + ), + )); + _apiResponse = ApiResponse.completed(resp); + } catch (e) { + messenger.showSnackBar(SnackBar( + backgroundColor: CustomColors.error, + content: const Text( + 'Account anlegen fehlgeschlagen', + style: TextStyle(color: Colors.white), + ), + action: SnackBarAction( + label: 'Details', + onPressed: () { + showDialog( + context: context, + builder: (context) => AlertDialog( + backgroundColor: Colors.black, + icon: Icon( + Icons.error, + color: CustomColors.error, + ), + content: Text( + e.toString(), + textAlign: TextAlign.center, + ), + )); + }, + ), + )); + _apiResponse = ApiResponse.error(e.toString()); + } + print(_apiResponse.message); + notifyListeners(); + return resp; + } +} diff --git a/frontend/app/lib/model/view_model/persons_vm.dart b/frontend/app/lib/model/view_model/persons_vm.dart new file mode 100644 index 0000000..a8ed578 --- /dev/null +++ b/frontend/app/lib/model/view_model/persons_vm.dart @@ -0,0 +1,57 @@ +import 'package:app/model/apis/api_response.dart'; +import 'package:app/model/services/backend_service.dart'; +import 'package:app/pb/person.pb.dart'; +import 'package:flutter/material.dart'; + +class PersonsViewModel with ChangeNotifier { + PersonsViewModel() { + listPersons(); + } + ApiResponse _apiResponse = ApiResponse.initial('Keine Daten'); + + final BackendService _service = BackendService(); + + ApiResponse get response { + return _apiResponse; + } + + Future> listPersons() async { + List persons = []; + _apiResponse = ApiResponse.loading('Lade Daten'); + try { + persons = await _service.listPersons(); + _apiResponse = ApiResponse.completed(persons); + } catch (e) { + _apiResponse = ApiResponse.error(e.toString()); + } + notifyListeners(); + return persons; + } + + Future createPerson(BuildContext context, + {required String firstname, + required String lastname, + required String street, + required String zip, + required String city, + required String country, + required DateTime birthday}) async { + Person person = Person(); + _apiResponse = ApiResponse.loading('Erstelle Person'); + try { + person = await _service.createPerson( + firstname: firstname, + lastname: lastname, + street: street, + zip: zip, + city: city, + country: country, + birthday: birthday); + _apiResponse = ApiResponse.completed(person); + } catch (err) { + _apiResponse = ApiResponse.error(err.toString()); + } + notifyListeners(); + return person; + } +} diff --git a/frontend/app/lib/pages/home_page.dart b/frontend/app/lib/pages/home_page.dart new file mode 100644 index 0000000..7b62f12 --- /dev/null +++ b/frontend/app/lib/pages/home_page.dart @@ -0,0 +1,218 @@ +import 'package:app/model/services/backend_service.dart'; +import 'package:app/model/view_model/account_vm.dart'; +import 'package:app/pages/login_overlay.dart'; +import 'package:app/pages/persons_page.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_navigation.dart'; +import 'package:app/widgets/bottom_navigation_item.dart'; +import 'package:app/widgets/drawer.dart'; +import 'package:app/widgets/side_drawer_item.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +// ignore: must_be_immutable +class HomePage extends StatefulWidget { + HomePage({super.key, required this.loggedOut}); + + bool loggedOut; + + @override + State createState() => _HomePageState(); +} + +class _HomePageState extends State { + @override + void initState() { + super.initState(); + _init(); + } + + AccountViewModel vm = AccountViewModel(); + void _init() async { + // _setLoading(true); + // _setLoading(widget.loggedOut); + // _loading = widget.loggedOut; + // _loggedin = await BackendService.isLoggedIn; + // if (!_loggedin) { + // await BackendService.logout(); + // final navigator = Navigator.of(context); + // navigator.pushAndRemoveUntil( + // MaterialPageRoute( + // builder: (builder) => HomePage( + // loggedOut: true, + // )), + // (route) => false); + // } + _setLoading(false); + } + + _isLoggedIn(BuildContext context) async { + bool logged = await vm.isLoggedIn(context); + _loggedin = logged; + } + + void _setLoading(bool loading) { + setState(() { + _loading = loading; + }); + } + + bool _loading = true; + bool _loggedin = false; + @override + Widget build(BuildContext context) { + return Background( + child: Scaffold( + appBar: AppBar( + automaticallyImplyLeading: false, + // flexibleSpace: Image.asset( + // 'lib/assets/logo_300x200.png', + // // height: 400, + // ), + ), + drawer: SideDrawer( + children: [ + const Spacer( + flex: 3, + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.question_answer, + color: Colors.white, + label: 'About', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.privacy_tip, + color: Colors.white, + label: 'Datenschutz', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.apartment, + color: Colors.white, + label: 'Impressum', + ), + const Spacer( + flex: 1, + ), + if (_loggedin) + SideDrawerItem( + onPressed: () async { + setState(() { + _loading = true; + }); + await BackendService.logout(); + // ignore: use_build_context_synchronously + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (builder) => HomePage( + loggedOut: true, + )), + (route) => false); + setState(() { + _loggedin = false; + _loading = false; + }); + }, + icon: Icons.logout, + color: Colors.white, + label: 'Logout', + ), + ], + ), + bottomNavigationBar: BottomNavigation( + children: [ + if (!_loggedin) ...[ + BottomNavigationItem( + onPressed: () async { + final bool res = await showLogin(context, registration: true); + setState(() { + _loggedin = res; + }); + }, + icon: Icons.person_add_alt, + color: Colors.white, + label: 'Registrieren', + ), + BottomNavigationItem( + onPressed: () async { + await showLogin(context); + setState(() { + vm.isLoggedIn(context); + }); + }, + icon: Icons.login, + color: Colors.white, + label: 'Login', + ), + ] else + BottomNavigationItem( + onPressed: () async { + final navigator = Navigator.of(context); + if (await vm.isLoggedIn(context)) { + navigator.push(MaterialPageRoute( + builder: (builder) => const PersonsPage())); + } else { + navigator.pushAndRemoveUntil( + MaterialPageRoute( + builder: (builder) => const PersonsPage()), + (route) => false); + } + }, + icon: Icons.person_search, + color: Colors.white, + label: 'Personen', + ), + BottomNavigationItem( + onPressed: () {}, + icon: Icons.dashboard, + color: Colors.white, + label: 'Dashboard', + ), + ...[] + ], + ), + body: Padding( + padding: const EdgeInsets.fromLTRB(16, 45, 16, 16), + child: Center( + child: ChangeNotifierProvider( + create: (context) => AccountViewModel(), + child: + Consumer(builder: (context, value, child) { + // _checkResponse(value.response); + if (!widget.loggedOut) { + _isLoggedIn(context); + } + return _loading + ? const CircularProgressIndicator( + color: Colors.grey, + ) + : Column( + children: [ + Image.asset( + 'lib/assets/logo_300x200.png', + ), + const SizedBox( + height: 40, + ), + Text( + 'Digitale Spuren auf Knopfdruck entfernen' + .toUpperCase(), + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'sans-serif', + fontSize: 24, + height: 1.6, + fontWeight: FontWeight.normal, + letterSpacing: 6, + ), + ), + ], + ); + })), + ), + ), + )); + } +} diff --git a/frontend/app/lib/pages/login_overlay.dart b/frontend/app/lib/pages/login_overlay.dart new file mode 100644 index 0000000..ef927a5 --- /dev/null +++ b/frontend/app/lib/pages/login_overlay.dart @@ -0,0 +1,239 @@ +import 'package:app/model/view_model/base_vm.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_navigation.dart'; +import 'package:app/widgets/bottom_navigation_item.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:app/widgets/side_drawer_item.dart'; +import 'package:flutter/material.dart'; +import 'package:app/util/validation.dart'; +import 'package:provider/provider.dart'; + +Future showLogin(BuildContext context, + {bool registration = false}) async { + final formKey = GlobalKey(); + final mailController = TextEditingController(); + final passwordController = TextEditingController(); + + BaseViewModel vm = BaseViewModel(); + bool submitted = false; + bool loggedin = false; + void login(BuildContext context) { + if (formKey.currentState!.validate()) { + submitted = true; + FocusScope.of(context).unfocus(); + vm + .login(context, + email: mailController.text, password: passwordController.text) + .then( + (r) { + if (r) { + loggedin = r; + Navigator.pop(context, true); + } + }, + ); + passwordController.clear(); + submitted = false; + } + } + + void register(BuildContext context) { + if (formKey.currentState!.validate()) { + submitted = true; + vm + .createAccount( + context, + email: mailController.text, + password: passwordController.text, + ) + .then( + (r) { + if (r) { + loggedin = r; + Navigator.pop(context, true); + } + }, + ); + } + } + + await showModalBottomSheet( + useSafeArea: true, + isScrollControlled: true, + backgroundColor: Colors.black, + context: context, + builder: (builder) { + return Background( + child: Scaffold( + drawer: SideDrawer( + children: [ + const Spacer( + flex: 3, + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.question_answer, + color: Colors.white, + label: 'About', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.privacy_tip, + color: Colors.white, + label: 'Datenschutz', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.apartment, + color: Colors.white, + label: 'Impressum', + ), + const Spacer( + flex: 1, + ), + ], + ), + bottomNavigationBar: BottomNavigation( + children: [ + BottomNavigationItem( + onPressed: () { + Navigator.pop(context, false); + }, + icon: Icons.arrow_back, + color: Colors.white, + label: 'Zurück', + ), + BottomNavigationItem( + onPressed: () { + Navigator.pop(context, false); + }, + icon: Icons.home, + color: Colors.white, + label: 'Home', + ), + ], + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + height: 50, + ), + const Image( + width: 180, + image: AssetImage( + 'lib/assets/logo_300x200.png', + ), + ), + const SizedBox( + height: 30, + ), + Text( + registration ? 'Registrieren' : 'Login', + style: const TextStyle( + fontFamily: 'sans-serif', + fontSize: 24, + height: 1.6, + fontWeight: FontWeight.normal, + letterSpacing: 6, + ), + ), + ChangeNotifierProvider( + create: (context) => BaseViewModel(), + child: Consumer( + builder: (context, value, child) => Form( + key: formKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 40, + ), + TextFormField( + // autofocus: true, + // inputFormatters: [ + // FilteringTextInputFormatter.allow( + // emailRegExp, + // ), + // ], + controller: mailController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'E-Mail Adresse', + ), + keyboardType: TextInputType.emailAddress, + validator: (value) { + if (value == null || !value.isValidEmail) { + return 'Bitte eine gültige E-Mail Adresse eingeben'; + } + return null; + }, + ), + TextFormField( + style: const TextStyle( + color: Colors.white, + ), + // inputFormatters: [ + // FilteringTextInputFormatter.allow( + // passwordRegExp, + // ), + // ], + controller: passwordController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'Passwort', + ), + keyboardType: TextInputType.visiblePassword, + obscureText: true, + validator: (value) { + if (value == null || !value.isValidPassword) { + return 'Bitte geben Sie Ihr Passwort ein'; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ElevatedButton( + onPressed: !submitted + ? !registration + ? () { + login(context); + } + : () { + register(context); + } + : null, + child: const Icon(Icons.login), + ), + ], + ) + ], + ), + ), + ), + ), + const Spacer(), + ], + ), + ), + ), + ); + }); + return loggedin; +} diff --git a/frontend/app/lib/pages/persons_page.dart b/frontend/app/lib/pages/persons_page.dart new file mode 100644 index 0000000..d863dec --- /dev/null +++ b/frontend/app/lib/pages/persons_page.dart @@ -0,0 +1,184 @@ +import 'package:app/model/apis/api_response.dart'; +import 'package:app/model/services/backend_service.dart'; +import 'package:app/model/view_model/persons_vm.dart'; +import 'package:app/pages/home_page.dart'; +import 'package:app/pb/person.pb.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_navigation.dart'; +import 'package:app/widgets/bottom_navigation_item.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:app/widgets/side_drawer_item.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class PersonsPage extends StatefulWidget { + const PersonsPage({super.key}); + + @override + State createState() => _PersonsPageState(); +} + +class _PersonsPageState extends State { + @override + void initState() { + super.initState(); + _init(); + } + + void _init() async { + _setLoading(true); + _loggedin = await BackendService.isLoggedIn; + _setLoading(false); + } + + void _setLoading(bool loading) { + setState(() { + _loading = loading; + }); + } + + void _checkResponse(ApiResponse response) { + if (response.status == Status.ERROR && + response.message!.contains('unauthenticated')) { + BackendService.logout(); + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (builder) => HomePage( + loggedOut: true, + )), + (route) => false); + } + } + + bool _loading = true; + bool _loggedin = false; + List persons = []; + + PersonsViewModel vm = PersonsViewModel(); + + void listPersons(BuildContext context) async { + persons = await vm.listPersons(); + } + + List _personsList(List persons) { + final List list = []; + for (var p in persons) { + list.add(Card( + color: Colors.black, + child: Text( + '${p.firstname} ${p.lastname}', + style: const TextStyle(color: Colors.white), + ), + )); + } + return list; + } + + @override + Widget build(BuildContext context) { + return Background( + child: Scaffold( + floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, + floatingActionButton: FloatingActionButton( + onPressed: () {}, + child: const Icon(Icons.add), + ), + appBar: AppBar( + automaticallyImplyLeading: false, + ), + drawer: SideDrawer( + children: [ + const Spacer( + flex: 3, + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.question_answer, + color: Colors.white, + label: 'About', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.privacy_tip, + color: Colors.white, + label: 'Datenschutz', + ), + SideDrawerItem( + onPressed: () {}, + icon: Icons.apartment, + color: Colors.white, + label: 'Impressum', + ), + const Spacer( + flex: 1, + ), + if (_loggedin) + SideDrawerItem( + onPressed: () async { + setState(() { + _loading = true; + }); + await BackendService.logout(); + // ignore: use_build_context_synchronously + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute( + builder: (builder) => HomePage( + loggedOut: true, + )), + (route) => false); + setState(() { + _loggedin = false; + _loading = false; + }); + }, + icon: Icons.logout, + color: Colors.white, + label: 'Logout', + ), + ], + ), + bottomNavigationBar: BottomNavigation( + children: [ + BottomNavigationItem( + onPressed: () {}, + icon: Icons.dashboard, + color: Colors.white, + label: 'Dashboard', + ), + BottomNavigationItem( + onPressed: () { + Navigator.of(context).pop(); + }, + icon: Icons.home, + color: Colors.white, + label: 'Home', + ), + ], + ), + body: Padding( + padding: const EdgeInsets.all(16), + child: Center( + child: ChangeNotifierProvider( + create: (context) => PersonsViewModel(), + child: Consumer( + builder: (context, value, child) { + _checkResponse(value.response); + listPersons(context); + return _loading + ? const CircularProgressIndicator( + color: Colors.grey, + ) + : value.response.status == Status.COMPLETED + ? value.response.data.length > 0 + ? ListView(children: _personsList(persons)) + : const Text('Noch keine Personen angelegt') + : const Text('Lade Daten...'); + }, + ), + ), + ), + ), + ), + ); + } +} diff --git a/frontend/app/lib/pages_old/dashboard_page.dart b/frontend/app/lib/pages_old/dashboard_page.dart new file mode 100644 index 0000000..3c8503b --- /dev/null +++ b/frontend/app/lib/pages_old/dashboard_page.dart @@ -0,0 +1,302 @@ +import 'package:app/gapi/client.dart'; +import 'package:app/pages_old/start_page.dart'; +import 'package:app/pb/account_info.pb.dart'; +import 'package:app/pb/rpc_get_account_info.pb.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_bar.dart'; +import 'package:app/widgets/loading_widget.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:flutter/material.dart'; + +class DashboardPage extends StatefulWidget { + const DashboardPage({ + super.key, + // required this.client, + }); + + // final GClient client; + + @override + State createState() => _DashboardPageState(); +} + +class _DashboardPageState extends State { + bool _loading = false; + late AccountInfo accountInfo; + + void _setLoading(bool loading) { + setState(() { + _loading = loading; + }); + } + + @override + void initState() { + super.initState(); + + _setLoading(true); + // widget.client.getAccountInfo( + // GetAccountInfoRequest( + // accountId: widget.client.session.accountId, + // ), + // onError: ({String? msg}) { + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: const Text('AccountInfo konnte nicht geladen werden'), + // action: msg != null + // ? SnackBarAction( + // label: 'Details', + // textColor: Colors.grey, + // onPressed: () { + // showDialog( + // context: context, + // builder: (context) { + // return AlertDialog( + // content: Text( + // msg, + // textAlign: TextAlign.center, + // style: const TextStyle(color: Colors.black), + // ), + // icon: const Icon( + // Icons.warning, + // color: Colors.red, + // ), + // ); + // }, + // ); + // }) + // : null, + // ), + // ); + // }, + // ).then((value) { + // accountInfo = value.accountInfo; + // _setLoading(false); + // }); + } + + @override + Widget build(BuildContext context) { + return Background( + child: Scaffold( + appBar: AppBar( + automaticallyImplyLeading: false, + flexibleSpace: Image.asset( + 'lib/assets/logo_300x200.png', + height: 80, + ), + ), + drawer: Builder(builder: (context) { + return SideDrawer( + children: [ + const Spacer(), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'About', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.question_answer, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Datenschutz', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.privacy_tip, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Impressum', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.apartment, + color: Colors.white, + ), + ], + ), + ), + // if (widget.client.session.accessToken != null) + // TextButton( + // onPressed: () { + // widget.client.session.accessToken = null; + // widget.client.session + // .removeSession(widget.client.session.sessionId!); + + // Navigator.of(context).pushAndRemoveUntil( + // MaterialPageRoute( + // builder: (context) => + // StartPage(client: widget.client), + // ), + // (route) => false); + // }, + // child: const Row( + // children: [ + // Text( + // 'Log out', + // style: TextStyle(fontSize: 20), + // ), + // Spacer(), + // Icon( + // Icons.logout, + // color: Colors.white, + // ), + // ], + // ), + // ), + const SizedBox( + height: 250, + ) + ], + ); + }), + // bottomNavigationBar: Builder( + // builder: (context) { + // return BottomBar( + // children: widget.client.session.accessToken != null + // ? [ + // BottomNavigationBarItem( + // backgroundColor: Colors.white, + // label: 'Personen', + // icon: Column( + // children: [ + // IconButton( + // onPressed: () => + // Scaffold.of(context).openDrawer(), + // icon: const Icon( + // Icons.group, + // color: Colors.white, + // ), + // ), + // const Text( + // 'Personen', + // style: TextStyle( + // color: Colors.white, + // fontSize: 16, + // ), + // ) + // ], + // ), + // ), + // BottomNavigationBarItem( + // backgroundColor: Colors.white, + // label: 'Home', + // icon: Column( + // children: [ + // IconButton( + // onPressed: () { + // Navigator.of(context).push( + // MaterialPageRoute( + // builder: (context) => StartPage( + // client: widget.client, + // ), + // ), + // ); + // }, + // icon: const Icon( + // Icons.home, + // color: Colors.white, + // ), + // ), + // const Text( + // 'Home', + // style: TextStyle( + // color: Colors.white, + // fontSize: 16, + // ), + // ) + // ], + // ), + // ), + // BottomNavigationBarItem( + // backgroundColor: Colors.white, + // label: 'Menu', + // icon: IconButton( + // onPressed: () { + // Scaffold.of(context).openDrawer(); + // }, + // icon: const Icon( + // Icons.menu, + // color: Colors.white, + // ), + // ), + // ) + // ] + // : [ + // BottomNavigationBarItem( + // label: 'back', + // backgroundColor: Colors.white, + // icon: IconButton( + // onPressed: () {}, + // icon: const Icon( + // Icons.arrow_back, + // color: Colors.white, + // ), + // ), + // ), + // BottomNavigationBarItem( + // backgroundColor: Colors.white, + // label: 'Menu', + // icon: IconButton( + // onPressed: () => Scaffold.of(context).openDrawer(), + // icon: const Icon( + // Icons.menu, + // color: Colors.white, + // ), + // ), + // ), + // ], + // ); + // }, + // ), + body: !_loading + ? Background( + child: Center( + child: Column( + children: [ + const SizedBox( + height: 48, + ), + Text( + 'Willkommen ${accountInfo.firstname} ${accountInfo.lastname}!', + style: const TextStyle( + fontSize: 24, + ), + ), + ], + ), + ), + ) + : const LoadingWidget(), + ), + ); + } +} diff --git a/frontend/app/lib/pages_old/login_page.dart b/frontend/app/lib/pages_old/login_page.dart new file mode 100644 index 0000000..d2207e7 --- /dev/null +++ b/frontend/app/lib/pages_old/login_page.dart @@ -0,0 +1,290 @@ +import 'package:app/gapi/client.dart'; +import 'package:app/model/services/backend_service.dart'; +import 'package:app/pages_old/start_page.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_bar.dart'; +import 'package:app/widgets/loading_widget.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:flutter/material.dart'; +import 'package:grpc/grpc.dart'; + +// GlobalKey scaffoldKey = GlobalKey(); + +class LoginPage extends StatefulWidget { + const LoginPage({ + super.key, + // required this.client, + // required this.onChangePage, + }); + + // final GClient client; + // void Function(Pages page) onChangePage; + + @override + State createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + bool _loading = false; + final List bottombarButtons = []; + + // List _selectedBottomBarButtons = bottomBarButtons; + @override + void initState() { + super.initState(); + _addBottomBarButtons(); + } + + void _addBottomBarButtons() { + bottombarButtons.addAll([ + const BottomNavigationBarItem( + label: 'back', + backgroundColor: Colors.white, + icon: Icon( + Icons.arrow_back, + color: Colors.white, + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Menu', + icon: IconButton( + onPressed: () => Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.menu, + color: Colors.white, + ), + ), + ), + ]); + } + + void _setLoading(bool loading) { + setState(() { + _loading = loading; + }); + } + + // final GClient client = GClient(); + + final _formKey = GlobalKey(); + final mailController = TextEditingController(); + final passwordController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return Background( + child: Scaffold( + appBar: AppBar( + automaticallyImplyLeading: false, + // flexibleSpace: Image.asset( + // 'lib/assets/logo_300x200.png', + // height: 80, + // ), + ), + bottomNavigationBar: BottomBar( + children: [ + BottomNavigationBarItem( + label: 'back', + backgroundColor: Colors.white, + icon: IconButton( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon( + Icons.arrow_back, + color: Colors.white, + ), + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Menu', + icon: IconButton( + onPressed: () => Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.menu, + color: Colors.white, + ), + ), + ), + ], + ), + drawer: SideDrawer(children: [ + const Spacer(), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'About', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.question_answer, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Datenschutz', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.privacy_tip, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Impressum', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.apartment, + color: Colors.white, + ), + ], + ), + ), + const SizedBox( + height: 250, + ) + ]), + body: !_loading + ? Form( + key: _formKey, + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 100, 16, 16), + child: SingleChildScrollView( + child: Column( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Image( + width: 180, + image: AssetImage( + 'lib/assets/logo_300x200.png', + ), + ), + const SizedBox( + height: 30, + ), + const Text( + 'Login', + style: TextStyle( + fontFamily: 'sans-serif', + fontSize: 24, + height: 1.6, + fontWeight: FontWeight.normal, + letterSpacing: 6, + ), + ), + const SizedBox( + height: 20, + ), + TextFormField( + // style: TextStyle( + // color: Theme.of(context).colorScheme.primary, + // ), + controller: mailController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'E-Mail Adresse', + ), + keyboardType: TextInputType.emailAddress, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Bitte eine gültige E-Mail Adresse eingeben'; + } + return null; + }, + ), + TextFormField( + style: const TextStyle( + color: Colors.white, + ), + controller: passwordController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'Passwort', + ), + keyboardType: TextInputType.visiblePassword, + obscureText: true, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Bitte geben Sie Ihr Passwort ein'; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + ElevatedButton( + onPressed: () { + if (_formKey.currentState!.validate()) { + // final navigator = Navigator.of(context); + _setLoading(true); + BackendService.login( + email: mailController.text, + password: passwordController.text, + ).then( + (r) { + if (r) { + Navigator.pop(context); + Navigator.pop(context); + // Navigator.pushAndRemoveUntil( + // context, + // MaterialPageRoute( + // builder: (ctx) => const StartPage( + // // client: widget.client, + // ), + // ), + // (ctx) => false, + // ); + // widget.onChangePage( + // Pages.dashboard, + // ); + } + // _setLoading(false); + }, + ); + } + }, + child: const Icon(Icons.login)) + ], + ), + ), + ), + ) + : const LoadingWidget(), + ), + ); + } +} diff --git a/frontend/app/lib/pages_old/register_page.dart b/frontend/app/lib/pages_old/register_page.dart new file mode 100644 index 0000000..2a40fd6 --- /dev/null +++ b/frontend/app/lib/pages_old/register_page.dart @@ -0,0 +1,224 @@ +import 'package:app/gapi/client.dart'; +import 'package:app/pages_old/start_page.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_bar.dart'; +import 'package:app/widgets/loading_widget.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:flutter/material.dart'; +import 'package:grpc/grpc.dart'; + +class RegisterPage extends StatefulWidget { + const RegisterPage({ + super.key, + // required this.client, + }); + + // final GClient client; + + @override + State createState() => _RegisterPageState(); +} + +class _RegisterPageState extends State { + bool _loading = false; + final _formKey = GlobalKey(); + final mailController = TextEditingController(); + final passwordController = TextEditingController(); + + void _setLoading(bool loading) { + setState(() { + _loading = loading; + }); + } + + @override + Widget build(BuildContext context) { + return Background( + child: Scaffold( + appBar: AppBar( + automaticallyImplyLeading: false, + flexibleSpace: Image.asset( + 'lib/assets/logo_300x200.png', + height: 80, + ), + ), + drawer: Builder(builder: (context) { + return SideDrawer( + children: [ + const Spacer(), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'About', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.question_answer, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Datenschutz', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.privacy_tip, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Impressum', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.apartment, + color: Colors.white, + ), + ], + ), + ), + const SizedBox( + height: 250, + ) + ], + ); + }), + bottomNavigationBar: BottomBar( + children: [ + BottomNavigationBarItem( + label: 'back', + backgroundColor: Colors.white, + icon: IconButton( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon( + Icons.arrow_back, + color: Colors.white, + ), + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Menu', + icon: IconButton( + onPressed: () => Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.menu, + color: Colors.white, + ), + ), + ), + ], + ), + body: !_loading + ? Form( + key: _formKey, + child: Padding( + padding: const EdgeInsets.fromLTRB(16, 100, 16, 16), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Image( + width: 180, + image: AssetImage( + 'lib/assets/logo_300x200.png', + ), + ), + const SizedBox( + height: 30, + ), + const Text( + 'Registrieren', + style: TextStyle( + fontFamily: 'sans-serif', + fontSize: 24, + height: 1.6, + fontWeight: FontWeight.normal, + letterSpacing: 6, + ), + ), + const SizedBox( + height: 20, + ), + TextFormField( + controller: mailController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'E-Mail Adresse', + ), + keyboardType: TextInputType.emailAddress, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Bitte eine gültige E-Mail Adresse eingeben'; + } + return null; + }, + ), + TextFormField( + style: const TextStyle( + color: Colors.white, + ), + controller: passwordController, + decoration: const InputDecoration( + fillColor: Color.fromARGB(30, 255, 255, 255), + filled: true, + hintStyle: TextStyle( + color: Colors.white38, + ), + hintText: 'Passwort', + ), + keyboardType: TextInputType.visiblePassword, + obscureText: true, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Bitte geben Sie Ihr Passwort ein'; + } + return null; + }, + ), + const SizedBox( + height: 15, + ), + ElevatedButton( + onPressed: () { + if (_formKey.currentState!.validate()) { + // _setLoading(true); + } + }, + child: const Icon(Icons.login)) + ], + ), + ), + ), + ) + : const LoadingWidget()), + ); + } +} diff --git a/frontend/app/lib/pages_old/start_page.dart b/frontend/app/lib/pages_old/start_page.dart new file mode 100644 index 0000000..6235c2c --- /dev/null +++ b/frontend/app/lib/pages_old/start_page.dart @@ -0,0 +1,373 @@ +import 'package:app/gapi/client.dart'; +import 'package:app/model/apis/api_response.dart'; +import 'package:app/model/view_model/account_vm.dart'; +import 'package:app/pages_old/dashboard_page.dart'; +import 'package:app/pages_old/login_page.dart'; +import 'package:app/pages_old/register_page.dart'; +import 'package:app/pb/account.pb.dart'; +import 'package:app/widgets/background.dart'; +import 'package:app/widgets/bottom_bar.dart'; +import 'package:app/widgets/side_drawer.dart'; +import 'package:flutter/material.dart'; +import 'dart:core'; + +import 'package:provider/provider.dart'; + +// ignore: must_be_immutable +class StartPage extends StatefulWidget { + const StartPage({ + super.key, + // required this.client, + }); + + // GClient client; + + @override + State createState() => _StartPageState(); +} + +class _StartPageState extends State { + final List bottombarButtons = []; + + // void _updateClient(GClient c) { + // setState(() { + // widget.client = c; + // }); + // } + + @override + void initState() { + super.initState(); + } + + SnackBar _snackBar(BuildContext context, String message, String label, + void Function() action) { + ScaffoldMessenger.of(context).removeCurrentSnackBar(); + // ScaffoldMessenger.of(context).clearSnackBars(); + return SnackBar( + content: Text( + message, + style: const TextStyle(color: Colors.black), + ), + backgroundColor: Colors.white, + action: SnackBarAction( + label: label, + onPressed: action, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Background( + child: ChangeNotifierProvider( + create: (context) => AccountViewModel(), + child: Consumer(builder: (context, value, child) { + return Scaffold( + appBar: AppBar( + automaticallyImplyLeading: false, + ), + drawer: Builder(builder: (context) { + return SideDrawer(children: [ + const Spacer(), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'About', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.question_answer, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Datenschutz', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.privacy_tip, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + Scaffold.of(context).closeDrawer(); + }, + child: const Row( + children: [ + Text( + 'Impressum', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.apartment, + color: Colors.white, + ), + ], + ), + ), + TextButton( + onPressed: () { + value.logout(); + // ScaffoldMessenger.of(context).clearSnackBars(); + ScaffoldMessenger.of(context).showSnackBar( + _snackBar( + context, + value.response.message != null + ? value.response.message! + : value.response.status.toString(), + value.response.status.toString(), + () { + print('asdf'); + }, + ), + ); + }, + child: const Row( + children: [ + Text( + 'Log out', + style: TextStyle(fontSize: 20), + ), + Spacer(), + Icon( + Icons.logout, + color: Colors.white, + ), + ], + ), + ), + const SizedBox( + height: 250, + ) + ]); + }), + bottomNavigationBar: Builder(builder: (context) { + return BottomBar( + // onTap: (value) => _bottomBarAction(value), + children: value.response.data != null + ? [ + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Personen', + icon: Column( + children: [ + IconButton( + onPressed: () => + Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.group, + color: Colors.white, + ), + ), + const Text( + 'Personen', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ) + ], + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Dashboard', + icon: Column( + children: [ + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.dashboard, + color: Colors.white, + ), + ), + const Text( + 'Dashboard', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ) + ], + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Menu', + icon: IconButton( + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + icon: const Icon( + Icons.menu, + color: Colors.white, + ), + ), + ) + ] + : [ + BottomNavigationBarItem( + label: 'register', + backgroundColor: Colors.white, + icon: Column( + children: [ + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.login, + color: Colors.white, + ), + ), + const Text( + 'Registrieren', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ) + ], + ), + ), + BottomNavigationBarItem( + label: 'login', + backgroundColor: Colors.white, + icon: Column( + children: [ + IconButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (builder) => + const LoginPage())); + }, + icon: const Icon( + Icons.login, + color: Colors.white, + ), + ), + const Text( + 'Login', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + ) + ], + ), + ), + BottomNavigationBarItem( + backgroundColor: Colors.white, + label: 'Menu', + icon: IconButton( + onPressed: () => Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.menu, + color: Colors.white, + ), + ), + ), + ], + ); + }), + body: Column( + children: [ + if (value.response.status == Status.COMPLETED && + value.response.data != null && + !(value.response.data as Account).emailVerified) + Card( + color: Colors.orange, + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Text( + 'E-Mail ist noch nicht verifiziert.', + style: TextStyle( + fontWeight: FontWeight.bold, + fontFamily: 'sans-serif', + fontSize: 14), + ), + IconButton( + onPressed: () {}, + icon: const Icon( + Icons.restore, + color: Colors.white, + ), + ), + ], + ), + ), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Image( + image: AssetImage( + 'lib/assets/logo_300x200.png', + ), + ), + const SizedBox( + height: 40, + ), + Text( + 'Digitale Spuren auf Knopfdruck entfernen' + .toUpperCase(), + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'sans-serif', + fontSize: 24, + height: 1.6, + fontWeight: FontWeight.normal, + letterSpacing: 6, + ), + ), + TextButton( + onPressed: () { + // ScaffoldMessenger.of(context).clearSnackBars(); + ScaffoldMessenger.of(context).showSnackBar( + _snackBar( + context, + value.response.message != null + ? value.response.message! + : value.response.status.toString(), + value.response.status.toString(), + () { + print('asdf'); + }, + ), + ); + }, + child: const Text('asdf')) + ], + ), + ), + ], + ), + ); + }), + ), + ); + } +} diff --git a/frontend/app/lib/pb/account.pb.dart b/frontend/app/lib/pb/account.pb.dart new file mode 100644 index 0000000..6d897c5 --- /dev/null +++ b/frontend/app/lib/pb/account.pb.dart @@ -0,0 +1,159 @@ +// +// Generated code. Do not modify. +// source: account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class Account extends $pb.GeneratedMessage { + factory Account({ + $fixnum.Int64? id, + $core.String? email, + $core.String? secretKey, + $27.Timestamp? emailVerifiedTime, + $core.bool? emailVerified, + $27.Timestamp? privacyAcceptedDate, + $core.int? permissionLevel, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (email != null) { + $result.email = email; + } + if (secretKey != null) { + $result.secretKey = secretKey; + } + if (emailVerifiedTime != null) { + $result.emailVerifiedTime = emailVerifiedTime; + } + if (emailVerified != null) { + $result.emailVerified = emailVerified; + } + if (privacyAcceptedDate != null) { + $result.privacyAcceptedDate = privacyAcceptedDate; + } + if (permissionLevel != null) { + $result.permissionLevel = permissionLevel; + } + return $result; + } + Account._() : super(); + factory Account.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Account.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Account', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'email') + ..aOS(3, _omitFieldNames ? '' : 'secretKey') + ..aOM<$27.Timestamp>(9, _omitFieldNames ? '' : 'emailVerifiedTime', subBuilder: $27.Timestamp.create) + ..aOB(10, _omitFieldNames ? '' : 'emailVerified') + ..aOM<$27.Timestamp>(12, _omitFieldNames ? '' : 'privacyAcceptedDate', subBuilder: $27.Timestamp.create) + ..a<$core.int>(13, _omitFieldNames ? '' : 'permissionLevel', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Account clone() => Account()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Account copyWith(void Function(Account) updates) => super.copyWith((message) => updates(message as Account)) as Account; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Account create() => Account._(); + Account createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Account getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Account? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get email => $_getSZ(1); + @$pb.TagNumber(2) + set email($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasEmail() => $_has(1); + @$pb.TagNumber(2) + void clearEmail() => clearField(2); + + @$pb.TagNumber(3) + $core.String get secretKey => $_getSZ(2); + @$pb.TagNumber(3) + set secretKey($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasSecretKey() => $_has(2); + @$pb.TagNumber(3) + void clearSecretKey() => clearField(3); + + @$pb.TagNumber(9) + $27.Timestamp get emailVerifiedTime => $_getN(3); + @$pb.TagNumber(9) + set emailVerifiedTime($27.Timestamp v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasEmailVerifiedTime() => $_has(3); + @$pb.TagNumber(9) + void clearEmailVerifiedTime() => clearField(9); + @$pb.TagNumber(9) + $27.Timestamp ensureEmailVerifiedTime() => $_ensure(3); + + @$pb.TagNumber(10) + $core.bool get emailVerified => $_getBF(4); + @$pb.TagNumber(10) + set emailVerified($core.bool v) { $_setBool(4, v); } + @$pb.TagNumber(10) + $core.bool hasEmailVerified() => $_has(4); + @$pb.TagNumber(10) + void clearEmailVerified() => clearField(10); + + @$pb.TagNumber(12) + $27.Timestamp get privacyAcceptedDate => $_getN(5); + @$pb.TagNumber(12) + set privacyAcceptedDate($27.Timestamp v) { setField(12, v); } + @$pb.TagNumber(12) + $core.bool hasPrivacyAcceptedDate() => $_has(5); + @$pb.TagNumber(12) + void clearPrivacyAcceptedDate() => clearField(12); + @$pb.TagNumber(12) + $27.Timestamp ensurePrivacyAcceptedDate() => $_ensure(5); + + @$pb.TagNumber(13) + $core.int get permissionLevel => $_getIZ(6); + @$pb.TagNumber(13) + set permissionLevel($core.int v) { $_setSignedInt32(6, v); } + @$pb.TagNumber(13) + $core.bool hasPermissionLevel() => $_has(6); + @$pb.TagNumber(13) + void clearPermissionLevel() => clearField(13); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/account.pbenum.dart b/frontend/app/lib/pb/account.pbenum.dart new file mode 100644 index 0000000..3612eb7 --- /dev/null +++ b/frontend/app/lib/pb/account.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/account.pbjson.dart b/frontend/app/lib/pb/account.pbjson.dart new file mode 100644 index 0000000..0c3e1fb --- /dev/null +++ b/frontend/app/lib/pb/account.pbjson.dart @@ -0,0 +1,52 @@ +// +// Generated code. Do not modify. +// source: account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use accountDescriptor instead') +const Account$json = { + '1': 'Account', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'email', '3': 2, '4': 1, '5': 9, '10': 'email'}, + {'1': 'secret_key', '3': 3, '4': 1, '5': 9, '9': 0, '10': 'secretKey', '17': true}, + {'1': 'email_verified_time', '3': 9, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'emailVerifiedTime'}, + {'1': 'email_verified', '3': 10, '4': 1, '5': 8, '10': 'emailVerified'}, + {'1': 'privacy_accepted_date', '3': 12, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'privacyAcceptedDate'}, + {'1': 'permission_level', '3': 13, '4': 1, '5': 5, '8': {}, '10': 'permissionLevel'}, + ], + '7': {}, + '8': [ + {'1': '_secret_key'}, + ], +}; + +/// Descriptor for `Account`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List accountDescriptor = $convert.base64Decode( + 'CgdBY2NvdW50Eg4KAmlkGAEgASgEUgJpZBIUCgVlbWFpbBgCIAEoCVIFZW1haWwSIgoKc2Vjcm' + 'V0X2tleRgDIAEoCUgAUglzZWNyZXRLZXmIAQESZwoTZW1haWxfdmVyaWZpZWRfdGltZRgJIAEo' + 'CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCG5JBGEoWIjIwMjMtMTAtMDVUMDA6MDA6MD' + 'BaIlIRZW1haWxWZXJpZmllZFRpbWUSJQoOZW1haWxfdmVyaWZpZWQYCiABKAhSDWVtYWlsVmVy' + 'aWZpZWQSawoVcHJpdmFjeV9hY2NlcHRlZF9kYXRlGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLl' + 'RpbWVzdGFtcEIbkkEYShYiMjAyMy0xMC0wNVQwMDowMDowMFoiUhNwcml2YWN5QWNjZXB0ZWRE' + 'YXRlEk4KEHBlcm1pc3Npb25fbGV2ZWwYDSABKAVCI5JBIDIeRGVmYXVsdCBpcyAwIChub24tcH' + 'JpdmlsZWRnZWQpUg9wZXJtaXNzaW9uTGV2ZWw6vQOSQbkDCgkqB0FjY291bnQyqwN7ImlkIjog' + 'IjEiLCJlbWFpbCI6ICJqb2huLmRvZUBleGFtcGxlLmNvbSIsICJmaXJzdG5hbWUiOiAiSm9obi' + 'IsICJsYXN0bmFtZSI6ICJEb2UiLCAicGhvbmUiOiAiIiwgInN0cmVldCI6ICJEZWF0aCBTdGFy' + 'IDIiLCAiemlwIjogIjA4MTUiLCAiY2l0eSI6ICJOZXcgWW9yayIsICJjb3VudHJ5IjogIlVTQS' + 'IsICJiaXJ0aGRheSI6ICIxOTkwLTEwLTA1VDAwOjAwOjAwWiIsICJwcml2YWN5X2FjY2VwdGVk' + 'IjogZmFsc2UsICJwcml2YWN5X2FjY2VwdGVkX2RhdGUiOiAiMDAwMS0wMS0wMVQwMDowMDowMF' + 'oiLCAiY3JlYXRvciI6ICJqb2huLmRvZUBleGFtcGxlLmNvbSIsICJjcmVhdGVkIjogIjIwMjMt' + 'MTAtMDVUMDI6MzA6NTNaIiwgImNoYW5nZXIiOiAiam9obi5kb2VAZXhhbXBsZS5jb20iLCAiY2' + 'hhbmdlZCI6ICIyMDIzLTEwLTA1VDAyOjMwOjUzWiJ9Qg0KC19zZWNyZXRfa2V5'); + diff --git a/frontend/app/lib/pb/account_info.pb.dart b/frontend/app/lib/pb/account_info.pb.dart new file mode 100644 index 0000000..9db0a1e --- /dev/null +++ b/frontend/app/lib/pb/account_info.pb.dart @@ -0,0 +1,289 @@ +// +// Generated code. Do not modify. +// source: account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class AccountInfo extends $pb.GeneratedMessage { + factory AccountInfo({ + $fixnum.Int64? accountId, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $27.Timestamp? birthday, + $core.String? phone, + $core.bool? privacyAccepted, + $27.Timestamp? privacyAcceptedDate, + $core.int? permissionLevel, + $core.String? creator, + $27.Timestamp? created, + $core.String? changer, + $27.Timestamp? changed, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (birthday != null) { + $result.birthday = birthday; + } + if (phone != null) { + $result.phone = phone; + } + if (privacyAccepted != null) { + $result.privacyAccepted = privacyAccepted; + } + if (privacyAcceptedDate != null) { + $result.privacyAcceptedDate = privacyAcceptedDate; + } + if (permissionLevel != null) { + $result.permissionLevel = permissionLevel; + } + if (creator != null) { + $result.creator = creator; + } + if (created != null) { + $result.created = created; + } + if (changer != null) { + $result.changer = changer; + } + if (changed != null) { + $result.changed = changed; + } + return $result; + } + AccountInfo._() : super(); + factory AccountInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory AccountInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AccountInfo', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'firstname') + ..aOS(4, _omitFieldNames ? '' : 'lastname') + ..aOS(5, _omitFieldNames ? '' : 'street') + ..aOS(6, _omitFieldNames ? '' : 'city') + ..aOS(7, _omitFieldNames ? '' : 'zip') + ..aOS(8, _omitFieldNames ? '' : 'country') + ..aOM<$27.Timestamp>(9, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..aOS(10, _omitFieldNames ? '' : 'phone') + ..aOB(11, _omitFieldNames ? '' : 'privacyAccepted') + ..aOM<$27.Timestamp>(12, _omitFieldNames ? '' : 'privacyAcceptedDate', subBuilder: $27.Timestamp.create) + ..a<$core.int>(13, _omitFieldNames ? '' : 'permissionLevel', $pb.PbFieldType.O3) + ..aOS(14, _omitFieldNames ? '' : 'creator') + ..aOM<$27.Timestamp>(15, _omitFieldNames ? '' : 'created', subBuilder: $27.Timestamp.create) + ..aOS(16, _omitFieldNames ? '' : 'changer') + ..aOM<$27.Timestamp>(17, _omitFieldNames ? '' : 'changed', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + AccountInfo clone() => AccountInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + AccountInfo copyWith(void Function(AccountInfo) updates) => super.copyWith((message) => updates(message as AccountInfo)) as AccountInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static AccountInfo create() => AccountInfo._(); + AccountInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static AccountInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static AccountInfo? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(3) + $core.String get firstname => $_getSZ(1); + @$pb.TagNumber(3) + set firstname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(3) + $core.bool hasFirstname() => $_has(1); + @$pb.TagNumber(3) + void clearFirstname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get lastname => $_getSZ(2); + @$pb.TagNumber(4) + set lastname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(4) + $core.bool hasLastname() => $_has(2); + @$pb.TagNumber(4) + void clearLastname() => clearField(4); + + @$pb.TagNumber(5) + $core.String get street => $_getSZ(3); + @$pb.TagNumber(5) + set street($core.String v) { $_setString(3, v); } + @$pb.TagNumber(5) + $core.bool hasStreet() => $_has(3); + @$pb.TagNumber(5) + void clearStreet() => clearField(5); + + @$pb.TagNumber(6) + $core.String get city => $_getSZ(4); + @$pb.TagNumber(6) + set city($core.String v) { $_setString(4, v); } + @$pb.TagNumber(6) + $core.bool hasCity() => $_has(4); + @$pb.TagNumber(6) + void clearCity() => clearField(6); + + @$pb.TagNumber(7) + $core.String get zip => $_getSZ(5); + @$pb.TagNumber(7) + set zip($core.String v) { $_setString(5, v); } + @$pb.TagNumber(7) + $core.bool hasZip() => $_has(5); + @$pb.TagNumber(7) + void clearZip() => clearField(7); + + @$pb.TagNumber(8) + $core.String get country => $_getSZ(6); + @$pb.TagNumber(8) + set country($core.String v) { $_setString(6, v); } + @$pb.TagNumber(8) + $core.bool hasCountry() => $_has(6); + @$pb.TagNumber(8) + void clearCountry() => clearField(8); + + @$pb.TagNumber(9) + $27.Timestamp get birthday => $_getN(7); + @$pb.TagNumber(9) + set birthday($27.Timestamp v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasBirthday() => $_has(7); + @$pb.TagNumber(9) + void clearBirthday() => clearField(9); + @$pb.TagNumber(9) + $27.Timestamp ensureBirthday() => $_ensure(7); + + @$pb.TagNumber(10) + $core.String get phone => $_getSZ(8); + @$pb.TagNumber(10) + set phone($core.String v) { $_setString(8, v); } + @$pb.TagNumber(10) + $core.bool hasPhone() => $_has(8); + @$pb.TagNumber(10) + void clearPhone() => clearField(10); + + @$pb.TagNumber(11) + $core.bool get privacyAccepted => $_getBF(9); + @$pb.TagNumber(11) + set privacyAccepted($core.bool v) { $_setBool(9, v); } + @$pb.TagNumber(11) + $core.bool hasPrivacyAccepted() => $_has(9); + @$pb.TagNumber(11) + void clearPrivacyAccepted() => clearField(11); + + @$pb.TagNumber(12) + $27.Timestamp get privacyAcceptedDate => $_getN(10); + @$pb.TagNumber(12) + set privacyAcceptedDate($27.Timestamp v) { setField(12, v); } + @$pb.TagNumber(12) + $core.bool hasPrivacyAcceptedDate() => $_has(10); + @$pb.TagNumber(12) + void clearPrivacyAcceptedDate() => clearField(12); + @$pb.TagNumber(12) + $27.Timestamp ensurePrivacyAcceptedDate() => $_ensure(10); + + @$pb.TagNumber(13) + $core.int get permissionLevel => $_getIZ(11); + @$pb.TagNumber(13) + set permissionLevel($core.int v) { $_setSignedInt32(11, v); } + @$pb.TagNumber(13) + $core.bool hasPermissionLevel() => $_has(11); + @$pb.TagNumber(13) + void clearPermissionLevel() => clearField(13); + + @$pb.TagNumber(14) + $core.String get creator => $_getSZ(12); + @$pb.TagNumber(14) + set creator($core.String v) { $_setString(12, v); } + @$pb.TagNumber(14) + $core.bool hasCreator() => $_has(12); + @$pb.TagNumber(14) + void clearCreator() => clearField(14); + + @$pb.TagNumber(15) + $27.Timestamp get created => $_getN(13); + @$pb.TagNumber(15) + set created($27.Timestamp v) { setField(15, v); } + @$pb.TagNumber(15) + $core.bool hasCreated() => $_has(13); + @$pb.TagNumber(15) + void clearCreated() => clearField(15); + @$pb.TagNumber(15) + $27.Timestamp ensureCreated() => $_ensure(13); + + @$pb.TagNumber(16) + $core.String get changer => $_getSZ(14); + @$pb.TagNumber(16) + set changer($core.String v) { $_setString(14, v); } + @$pb.TagNumber(16) + $core.bool hasChanger() => $_has(14); + @$pb.TagNumber(16) + void clearChanger() => clearField(16); + + @$pb.TagNumber(17) + $27.Timestamp get changed => $_getN(15); + @$pb.TagNumber(17) + set changed($27.Timestamp v) { setField(17, v); } + @$pb.TagNumber(17) + $core.bool hasChanged() => $_has(15); + @$pb.TagNumber(17) + void clearChanged() => clearField(17); + @$pb.TagNumber(17) + $27.Timestamp ensureChanged() => $_ensure(15); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/account_info.pbenum.dart b/frontend/app/lib/pb/account_info.pbenum.dart new file mode 100644 index 0000000..70cea58 --- /dev/null +++ b/frontend/app/lib/pb/account_info.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/account_info.pbjson.dart b/frontend/app/lib/pb/account_info.pbjson.dart new file mode 100644 index 0000000..79b0e54 --- /dev/null +++ b/frontend/app/lib/pb/account_info.pbjson.dart @@ -0,0 +1,64 @@ +// +// Generated code. Do not modify. +// source: account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use accountInfoDescriptor instead') +const AccountInfo$json = { + '1': 'AccountInfo', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'firstname', '3': 3, '4': 1, '5': 9, '10': 'firstname'}, + {'1': 'lastname', '3': 4, '4': 1, '5': 9, '10': 'lastname'}, + {'1': 'street', '3': 5, '4': 1, '5': 9, '10': 'street'}, + {'1': 'city', '3': 6, '4': 1, '5': 9, '10': 'city'}, + {'1': 'zip', '3': 7, '4': 1, '5': 9, '10': 'zip'}, + {'1': 'country', '3': 8, '4': 1, '5': 9, '10': 'country'}, + {'1': 'birthday', '3': 9, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'birthday'}, + {'1': 'phone', '3': 10, '4': 1, '5': 9, '10': 'phone'}, + {'1': 'privacy_accepted', '3': 11, '4': 1, '5': 8, '10': 'privacyAccepted'}, + {'1': 'privacy_accepted_date', '3': 12, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'privacyAcceptedDate'}, + {'1': 'permission_level', '3': 13, '4': 1, '5': 5, '8': {}, '10': 'permissionLevel'}, + {'1': 'creator', '3': 14, '4': 1, '5': 9, '10': 'creator'}, + {'1': 'created', '3': 15, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'created'}, + {'1': 'changer', '3': 16, '4': 1, '5': 9, '10': 'changer'}, + {'1': 'changed', '3': 17, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'changed'}, + ], + '7': {}, +}; + +/// Descriptor for `AccountInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List accountInfoDescriptor = $convert.base64Decode( + 'CgtBY2NvdW50SW5mbxIdCgphY2NvdW50X2lkGAEgASgEUglhY2NvdW50SWQSHAoJZmlyc3RuYW' + '1lGAMgASgJUglmaXJzdG5hbWUSGgoIbGFzdG5hbWUYBCABKAlSCGxhc3RuYW1lEhYKBnN0cmVl' + 'dBgFIAEoCVIGc3RyZWV0EhIKBGNpdHkYBiABKAlSBGNpdHkSEAoDemlwGAcgASgJUgN6aXASGA' + 'oHY291bnRyeRgIIAEoCVIHY291bnRyeRJTCghiaXJ0aGRheRgJIAEoCzIaLmdvb2dsZS5wcm90' + 'b2J1Zi5UaW1lc3RhbXBCG5JBGEoWIjE5OTAtMTAtMDVUMDA6MDA6MDBaIlIIYmlydGhkYXkSFA' + 'oFcGhvbmUYCiABKAlSBXBob25lEikKEHByaXZhY3lfYWNjZXB0ZWQYCyABKAhSD3ByaXZhY3lB' + 'Y2NlcHRlZBJrChVwcml2YWN5X2FjY2VwdGVkX2RhdGUYDCABKAsyGi5nb29nbGUucHJvdG9idW' + 'YuVGltZXN0YW1wQhuSQRhKFiIyMDIzLTEwLTA1VDAwOjAwOjAwWiJSE3ByaXZhY3lBY2NlcHRl' + 'ZERhdGUSTgoQcGVybWlzc2lvbl9sZXZlbBgNIAEoBUIjkkEgMh5EZWZhdWx0IGlzIDAgKG5vbi' + '1wcml2aWxlZGdlZClSD3Blcm1pc3Npb25MZXZlbBIYCgdjcmVhdG9yGA4gASgJUgdjcmVhdG9y' + 'ElEKB2NyZWF0ZWQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhuSQRhKFiIyMD' + 'IzLTEwLTA1VDAwOjAwOjAwWiJSB2NyZWF0ZWQSGAoHY2hhbmdlchgQIAEoCVIHY2hhbmdlchJR' + 'CgdjaGFuZ2VkGBEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYShYiMjAyMy' + '0xMC0wNVQwMDowMDowMFoiUgdjaGFuZ2VkOqkDkkGlAwoNKgtBY2NvdW50SW5mbzKTA3siYWNj' + 'b3VudF9pZCI6ICIxIiwgImZpcnN0bmFtZSI6ICJKb2huIiwgImxhc3RuYW1lIjogIkRvZSIsIC' + 'JwaG9uZSI6ICIiLCAic3RyZWV0IjogIkRlYXRoIFN0YXIgMiIsICJ6aXAiOiAiMDgxNSIsICJj' + 'aXR5IjogIk5ldyBZb3JrIiwgImNvdW50cnkiOiAiVVNBIiwgImJpcnRoZGF5IjogIjE5OTAtMT' + 'AtMDVUMDA6MDA6MDBaIiwgInByaXZhY3lfYWNjZXB0ZWQiOiBmYWxzZSwgInByaXZhY3lfYWNj' + 'ZXB0ZWRfZGF0ZSI6ICIwMDAxLTAxLTAxVDAwOjAwOjAwWiIsICJjcmVhdG9yIjogImpvaG4uZG' + '9lQGV4YW1wbGUuY29tIiwgImNyZWF0ZWQiOiAiMjAyMy0xMC0wNVQwMjozMDo1M1oiLCAiY2hh' + 'bmdlciI6ICJqb2huLmRvZUBleGFtcGxlLmNvbSIsICJjaGFuZ2VkIjogIjIwMjMtMTAtMDVUMD' + 'I6MzA6NTNaIn0='); + diff --git a/frontend/app/lib/pb/document.pb.dart b/frontend/app/lib/pb/document.pb.dart new file mode 100644 index 0000000..515c25c --- /dev/null +++ b/frontend/app/lib/pb/document.pb.dart @@ -0,0 +1,259 @@ +// +// Generated code. Do not modify. +// source: document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class Document extends $pb.GeneratedMessage { + factory Document({ + $fixnum.Int64? personId, + $fixnum.Int64? mailId, + $core.String? name, + $core.String? type, + $core.String? path, + $core.String? url, + $core.bool? valid, + $core.String? validatedBy, + $27.Timestamp? validDate, + $core.String? creator, + $27.Timestamp? created, + $core.String? changer, + $27.Timestamp? changed, + $fixnum.Int64? id, + }) { + final $result = create(); + if (personId != null) { + $result.personId = personId; + } + if (mailId != null) { + $result.mailId = mailId; + } + if (name != null) { + $result.name = name; + } + if (type != null) { + $result.type = type; + } + if (path != null) { + $result.path = path; + } + if (url != null) { + $result.url = url; + } + if (valid != null) { + $result.valid = valid; + } + if (validatedBy != null) { + $result.validatedBy = validatedBy; + } + if (validDate != null) { + $result.validDate = validDate; + } + if (creator != null) { + $result.creator = creator; + } + if (created != null) { + $result.created = created; + } + if (changer != null) { + $result.changer = changer; + } + if (changed != null) { + $result.changed = changed; + } + if (id != null) { + $result.id = id; + } + return $result; + } + Document._() : super(); + factory Document.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Document.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Document', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'personId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'mailId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'name') + ..aOS(4, _omitFieldNames ? '' : 'type') + ..aOS(5, _omitFieldNames ? '' : 'path') + ..aOS(6, _omitFieldNames ? '' : 'url') + ..aOB(7, _omitFieldNames ? '' : 'valid') + ..aOS(8, _omitFieldNames ? '' : 'validatedBy') + ..aOM<$27.Timestamp>(9, _omitFieldNames ? '' : 'validDate', subBuilder: $27.Timestamp.create) + ..aOS(10, _omitFieldNames ? '' : 'creator') + ..aOM<$27.Timestamp>(11, _omitFieldNames ? '' : 'created', subBuilder: $27.Timestamp.create) + ..aOS(12, _omitFieldNames ? '' : 'changer') + ..aOM<$27.Timestamp>(13, _omitFieldNames ? '' : 'changed', subBuilder: $27.Timestamp.create) + ..a<$fixnum.Int64>(14, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Document clone() => Document()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Document copyWith(void Function(Document) updates) => super.copyWith((message) => updates(message as Document)) as Document; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Document create() => Document._(); + Document createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Document getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Document? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get personId => $_getI64(0); + @$pb.TagNumber(1) + set personId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasPersonId() => $_has(0); + @$pb.TagNumber(1) + void clearPersonId() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get mailId => $_getI64(1); + @$pb.TagNumber(2) + set mailId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasMailId() => $_has(1); + @$pb.TagNumber(2) + void clearMailId() => clearField(2); + + @$pb.TagNumber(3) + $core.String get name => $_getSZ(2); + @$pb.TagNumber(3) + set name($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasName() => $_has(2); + @$pb.TagNumber(3) + void clearName() => clearField(3); + + @$pb.TagNumber(4) + $core.String get type => $_getSZ(3); + @$pb.TagNumber(4) + set type($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasType() => $_has(3); + @$pb.TagNumber(4) + void clearType() => clearField(4); + + @$pb.TagNumber(5) + $core.String get path => $_getSZ(4); + @$pb.TagNumber(5) + set path($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasPath() => $_has(4); + @$pb.TagNumber(5) + void clearPath() => clearField(5); + + @$pb.TagNumber(6) + $core.String get url => $_getSZ(5); + @$pb.TagNumber(6) + set url($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasUrl() => $_has(5); + @$pb.TagNumber(6) + void clearUrl() => clearField(6); + + @$pb.TagNumber(7) + $core.bool get valid => $_getBF(6); + @$pb.TagNumber(7) + set valid($core.bool v) { $_setBool(6, v); } + @$pb.TagNumber(7) + $core.bool hasValid() => $_has(6); + @$pb.TagNumber(7) + void clearValid() => clearField(7); + + @$pb.TagNumber(8) + $core.String get validatedBy => $_getSZ(7); + @$pb.TagNumber(8) + set validatedBy($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasValidatedBy() => $_has(7); + @$pb.TagNumber(8) + void clearValidatedBy() => clearField(8); + + @$pb.TagNumber(9) + $27.Timestamp get validDate => $_getN(8); + @$pb.TagNumber(9) + set validDate($27.Timestamp v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasValidDate() => $_has(8); + @$pb.TagNumber(9) + void clearValidDate() => clearField(9); + @$pb.TagNumber(9) + $27.Timestamp ensureValidDate() => $_ensure(8); + + @$pb.TagNumber(10) + $core.String get creator => $_getSZ(9); + @$pb.TagNumber(10) + set creator($core.String v) { $_setString(9, v); } + @$pb.TagNumber(10) + $core.bool hasCreator() => $_has(9); + @$pb.TagNumber(10) + void clearCreator() => clearField(10); + + @$pb.TagNumber(11) + $27.Timestamp get created => $_getN(10); + @$pb.TagNumber(11) + set created($27.Timestamp v) { setField(11, v); } + @$pb.TagNumber(11) + $core.bool hasCreated() => $_has(10); + @$pb.TagNumber(11) + void clearCreated() => clearField(11); + @$pb.TagNumber(11) + $27.Timestamp ensureCreated() => $_ensure(10); + + @$pb.TagNumber(12) + $core.String get changer => $_getSZ(11); + @$pb.TagNumber(12) + set changer($core.String v) { $_setString(11, v); } + @$pb.TagNumber(12) + $core.bool hasChanger() => $_has(11); + @$pb.TagNumber(12) + void clearChanger() => clearField(12); + + @$pb.TagNumber(13) + $27.Timestamp get changed => $_getN(12); + @$pb.TagNumber(13) + set changed($27.Timestamp v) { setField(13, v); } + @$pb.TagNumber(13) + $core.bool hasChanged() => $_has(12); + @$pb.TagNumber(13) + void clearChanged() => clearField(13); + @$pb.TagNumber(13) + $27.Timestamp ensureChanged() => $_ensure(12); + + @$pb.TagNumber(14) + $fixnum.Int64 get id => $_getI64(13); + @$pb.TagNumber(14) + set id($fixnum.Int64 v) { $_setInt64(13, v); } + @$pb.TagNumber(14) + $core.bool hasId() => $_has(13); + @$pb.TagNumber(14) + void clearId() => clearField(14); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/document.pbenum.dart b/frontend/app/lib/pb/document.pbenum.dart new file mode 100644 index 0000000..64c9c9d --- /dev/null +++ b/frontend/app/lib/pb/document.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/document.pbjson.dart b/frontend/app/lib/pb/document.pbjson.dart new file mode 100644 index 0000000..98d8737 --- /dev/null +++ b/frontend/app/lib/pb/document.pbjson.dart @@ -0,0 +1,55 @@ +// +// Generated code. Do not modify. +// source: document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use documentDescriptor instead') +const Document$json = { + '1': 'Document', + '2': [ + {'1': 'person_id', '3': 1, '4': 1, '5': 4, '9': 0, '10': 'personId', '17': true}, + {'1': 'mail_id', '3': 2, '4': 1, '5': 4, '9': 1, '10': 'mailId', '17': true}, + {'1': 'name', '3': 3, '4': 1, '5': 9, '10': 'name'}, + {'1': 'type', '3': 4, '4': 1, '5': 9, '10': 'type'}, + {'1': 'path', '3': 5, '4': 1, '5': 9, '10': 'path'}, + {'1': 'url', '3': 6, '4': 1, '5': 9, '10': 'url'}, + {'1': 'valid', '3': 7, '4': 1, '5': 8, '10': 'valid'}, + {'1': 'validated_by', '3': 8, '4': 1, '5': 9, '10': 'validatedBy'}, + {'1': 'valid_date', '3': 9, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'validDate'}, + {'1': 'creator', '3': 10, '4': 1, '5': 9, '10': 'creator'}, + {'1': 'created', '3': 11, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'created'}, + {'1': 'changer', '3': 12, '4': 1, '5': 9, '10': 'changer'}, + {'1': 'changed', '3': 13, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'changed'}, + {'1': 'id', '3': 14, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, + '8': [ + {'1': '_person_id'}, + {'1': '_mail_id'}, + ], +}; + +/// Descriptor for `Document`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List documentDescriptor = $convert.base64Decode( + 'CghEb2N1bWVudBIgCglwZXJzb25faWQYASABKARIAFIIcGVyc29uSWSIAQESHAoHbWFpbF9pZB' + 'gCIAEoBEgBUgZtYWlsSWSIAQESEgoEbmFtZRgDIAEoCVIEbmFtZRISCgR0eXBlGAQgASgJUgR0' + 'eXBlEhIKBHBhdGgYBSABKAlSBHBhdGgSEAoDdXJsGAYgASgJUgN1cmwSFAoFdmFsaWQYByABKA' + 'hSBXZhbGlkEiEKDHZhbGlkYXRlZF9ieRgIIAEoCVILdmFsaWRhdGVkQnkSVgoKdmFsaWRfZGF0' + 'ZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCG5JBGEoWIjIwMjMtMTAtMDVUMD' + 'A6MDA6MDBaIlIJdmFsaWREYXRlEhgKB2NyZWF0b3IYCiABKAlSB2NyZWF0b3ISUQoHY3JlYXRl' + 'ZBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCG5JBGEoWIjIwMjMtMTAtMDVUMD' + 'A6MDA6MDBaIlIHY3JlYXRlZBIYCgdjaGFuZ2VyGAwgASgJUgdjaGFuZ2VyElEKB2NoYW5nZWQY' + 'DSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhuSQRhKFiIyMDIzLTEwLTA1VDAwOj' + 'AwOjAwWiJSB2NoYW5nZWQSDgoCaWQYDiABKARSAmlkOg+SQQwKCioIRG9jdW1lbnRCDAoKX3Bl' + 'cnNvbl9pZEIKCghfbWFpbF9pZA=='); + diff --git a/frontend/app/lib/pb/google/protobuf/timestamp.pb.dart b/frontend/app/lib/pb/google/protobuf/timestamp.pb.dart new file mode 100644 index 0000000..dc49c14 --- /dev/null +++ b/frontend/app/lib/pb/google/protobuf/timestamp.pb.dart @@ -0,0 +1,188 @@ +// +// Generated code. Do not modify. +// source: timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; +import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin; + +/// A Timestamp represents a point in time independent of any time zone or local +/// calendar, encoded as a count of seconds and fractions of seconds at +/// nanosecond resolution. The count is relative to an epoch at UTC midnight on +/// January 1, 1970, in the proleptic Gregorian calendar which extends the +/// Gregorian calendar backwards to year one. +/// +/// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +/// second table is needed for interpretation, using a [24-hour linear +/// smear](https://developers.google.com/time/smear). +/// +/// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +/// restricting to that range, we ensure that we can convert to and from [RFC +/// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +/// +/// # Examples +/// +/// Example 1: Compute Timestamp from POSIX `time()`. +/// +/// Timestamp timestamp; +/// timestamp.set_seconds(time(NULL)); +/// timestamp.set_nanos(0); +/// +/// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +/// +/// struct timeval tv; +/// gettimeofday(&tv, NULL); +/// +/// Timestamp timestamp; +/// timestamp.set_seconds(tv.tv_sec); +/// timestamp.set_nanos(tv.tv_usec * 1000); +/// +/// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +/// +/// FILETIME ft; +/// GetSystemTimeAsFileTime(&ft); +/// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +/// +/// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +/// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +/// Timestamp timestamp; +/// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +/// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +/// +/// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +/// +/// long millis = System.currentTimeMillis(); +/// +/// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +/// .setNanos((int) ((millis % 1000) * 1000000)).build(); +/// +/// Example 5: Compute Timestamp from Java `Instant.now()`. +/// +/// Instant now = Instant.now(); +/// +/// Timestamp timestamp = +/// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) +/// .setNanos(now.getNano()).build(); +/// +/// Example 6: Compute Timestamp from current time in Python. +/// +/// timestamp = Timestamp() +/// timestamp.GetCurrentTime() +/// +/// # JSON Mapping +/// +/// In JSON format, the Timestamp type is encoded as a string in the +/// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +/// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +/// where {year} is always expressed using four digits while {month}, {day}, +/// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +/// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +/// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +/// is required. A proto3 JSON serializer should always use UTC (as indicated by +/// "Z") when printing the Timestamp type and a proto3 JSON parser should be +/// able to accept both UTC and other timezones (as indicated by an offset). +/// +/// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +/// 01:30 UTC on January 15, 2017. +/// +/// In JavaScript, one can convert a Date object to this format using the +/// standard +/// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +/// method. In Python, a standard `datetime.datetime` object can be converted +/// to this format using +/// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +/// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +/// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +/// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() +/// ) to obtain a formatter capable of generating timestamps in this format. +class Timestamp extends $pb.GeneratedMessage with $mixin.TimestampMixin { + factory Timestamp({ + $fixnum.Int64? seconds, + $core.int? nanos, + }) { + final $result = create(); + if (seconds != null) { + $result.seconds = seconds; + } + if (nanos != null) { + $result.nanos = nanos; + } + return $result; + } + Timestamp._() : super(); + factory Timestamp.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Timestamp.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Timestamp', package: const $pb.PackageName(_omitMessageNames ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.TimestampMixin.toProto3JsonHelper, fromProto3Json: $mixin.TimestampMixin.fromProto3JsonHelper) + ..aInt64(1, _omitFieldNames ? '' : 'seconds') + ..a<$core.int>(2, _omitFieldNames ? '' : 'nanos', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Timestamp clone() => Timestamp()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Timestamp copyWith(void Function(Timestamp) updates) => super.copyWith((message) => updates(message as Timestamp)) as Timestamp; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Timestamp create() => Timestamp._(); + Timestamp createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Timestamp getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Timestamp? _defaultInstance; + + /// Represents seconds of UTC time since Unix epoch + /// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + /// 9999-12-31T23:59:59Z inclusive. + @$pb.TagNumber(1) + $fixnum.Int64 get seconds => $_getI64(0); + @$pb.TagNumber(1) + set seconds($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasSeconds() => $_has(0); + @$pb.TagNumber(1) + void clearSeconds() => clearField(1); + + /// Non-negative fractions of a second at nanosecond resolution. Negative + /// second values with fractions must still have non-negative nanos values + /// that count forward in time. Must be from 0 to 999,999,999 + /// inclusive. + @$pb.TagNumber(2) + $core.int get nanos => $_getIZ(1); + @$pb.TagNumber(2) + set nanos($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasNanos() => $_has(1); + @$pb.TagNumber(2) + void clearNanos() => clearField(2); + /// Creates a new instance from [dateTime]. + /// + /// Time zone information will not be preserved. + static Timestamp fromDateTime($core.DateTime dateTime) { + final result = create(); + $mixin.TimestampMixin.setFromDateTime(result, dateTime); + return result; + } +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/google/protobuf/timestamp.pbenum.dart b/frontend/app/lib/pb/google/protobuf/timestamp.pbenum.dart new file mode 100644 index 0000000..d77b416 --- /dev/null +++ b/frontend/app/lib/pb/google/protobuf/timestamp.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/google/protobuf/timestamp.pbjson.dart b/frontend/app/lib/pb/google/protobuf/timestamp.pbjson.dart new file mode 100644 index 0000000..0af4c77 --- /dev/null +++ b/frontend/app/lib/pb/google/protobuf/timestamp.pbjson.dart @@ -0,0 +1,29 @@ +// +// Generated code. Do not modify. +// source: timestamp.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use timestampDescriptor instead') +const Timestamp$json = { + '1': 'Timestamp', + '2': [ + {'1': 'seconds', '3': 1, '4': 1, '5': 3, '10': 'seconds'}, + {'1': 'nanos', '3': 2, '4': 1, '5': 5, '10': 'nanos'}, + ], +}; + +/// Descriptor for `Timestamp`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List timestampDescriptor = $convert.base64Decode( + 'CglUaW1lc3RhbXASGAoHc2Vjb25kcxgBIAEoA1IHc2Vjb25kcxIUCgVuYW5vcxgCIAEoBVIFbm' + 'Fub3M='); + diff --git a/frontend/app/lib/pb/google/protobuf/timestamp.proto b/frontend/app/lib/pb/google/protobuf/timestamp.proto new file mode 100644 index 0000000..d0698db --- /dev/null +++ b/frontend/app/lib/pb/google/protobuf/timestamp.proto @@ -0,0 +1,144 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/protobuf/types/known/timestamppb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; + +// A Timestamp represents a point in time independent of any time zone or local +// calendar, encoded as a count of seconds and fractions of seconds at +// nanosecond resolution. The count is relative to an epoch at UTC midnight on +// January 1, 1970, in the proleptic Gregorian calendar which extends the +// Gregorian calendar backwards to year one. +// +// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +// second table is needed for interpretation, using a [24-hour linear +// smear](https://developers.google.com/time/smear). +// +// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +// restricting to that range, we ensure that we can convert to and from [RFC +// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// Example 5: Compute Timestamp from Java `Instant.now()`. +// +// Instant now = Instant.now(); +// +// Timestamp timestamp = +// Timestamp.newBuilder().setSeconds(now.getEpochSecond()) +// .setNanos(now.getNano()).build(); +// +// Example 6: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard +// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using +// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with +// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use +// the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() +// ) to obtain a formatter capable of generating timestamps in this format. +// +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} \ No newline at end of file diff --git a/frontend/app/lib/pb/payment.pb.dart b/frontend/app/lib/pb/payment.pb.dart new file mode 100644 index 0000000..328f131 --- /dev/null +++ b/frontend/app/lib/pb/payment.pb.dart @@ -0,0 +1,257 @@ +// +// Generated code. Do not modify. +// source: payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class Payment extends $pb.GeneratedMessage { + factory Payment({ + $fixnum.Int64? id, + $fixnum.Int64? accountId, + $core.String? paymentCategory, + $core.String? bankname, + $core.String? iBAN, + $core.String? bIC, + $core.String? paypalAccount, + $core.String? paypalId, + $core.String? paymentSystem, + $core.String? type, + $core.String? creator, + $27.Timestamp? created, + $core.String? changer, + $27.Timestamp? changed, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (accountId != null) { + $result.accountId = accountId; + } + if (paymentCategory != null) { + $result.paymentCategory = paymentCategory; + } + if (bankname != null) { + $result.bankname = bankname; + } + if (iBAN != null) { + $result.iBAN = iBAN; + } + if (bIC != null) { + $result.bIC = bIC; + } + if (paypalAccount != null) { + $result.paypalAccount = paypalAccount; + } + if (paypalId != null) { + $result.paypalId = paypalId; + } + if (paymentSystem != null) { + $result.paymentSystem = paymentSystem; + } + if (type != null) { + $result.type = type; + } + if (creator != null) { + $result.creator = creator; + } + if (created != null) { + $result.created = created; + } + if (changer != null) { + $result.changer = changer; + } + if (changed != null) { + $result.changed = changed; + } + return $result; + } + Payment._() : super(); + factory Payment.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Payment.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Payment', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'paymentCategory') + ..aOS(4, _omitFieldNames ? '' : 'bankname') + ..aOS(5, _omitFieldNames ? '' : 'IBAN', protoName: 'IBAN') + ..aOS(6, _omitFieldNames ? '' : 'BIC', protoName: 'BIC') + ..aOS(7, _omitFieldNames ? '' : 'paypalAccount') + ..aOS(8, _omitFieldNames ? '' : 'paypalId') + ..aOS(9, _omitFieldNames ? '' : 'paymentSystem') + ..aOS(10, _omitFieldNames ? '' : 'type') + ..aOS(11, _omitFieldNames ? '' : 'creator') + ..aOM<$27.Timestamp>(12, _omitFieldNames ? '' : 'created', subBuilder: $27.Timestamp.create) + ..aOS(13, _omitFieldNames ? '' : 'changer') + ..aOM<$27.Timestamp>(14, _omitFieldNames ? '' : 'changed', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Payment clone() => Payment()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Payment copyWith(void Function(Payment) updates) => super.copyWith((message) => updates(message as Payment)) as Payment; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Payment create() => Payment._(); + Payment createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Payment getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Payment? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get accountId => $_getI64(1); + @$pb.TagNumber(2) + set accountId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasAccountId() => $_has(1); + @$pb.TagNumber(2) + void clearAccountId() => clearField(2); + + @$pb.TagNumber(3) + $core.String get paymentCategory => $_getSZ(2); + @$pb.TagNumber(3) + set paymentCategory($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasPaymentCategory() => $_has(2); + @$pb.TagNumber(3) + void clearPaymentCategory() => clearField(3); + + @$pb.TagNumber(4) + $core.String get bankname => $_getSZ(3); + @$pb.TagNumber(4) + set bankname($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasBankname() => $_has(3); + @$pb.TagNumber(4) + void clearBankname() => clearField(4); + + @$pb.TagNumber(5) + $core.String get iBAN => $_getSZ(4); + @$pb.TagNumber(5) + set iBAN($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasIBAN() => $_has(4); + @$pb.TagNumber(5) + void clearIBAN() => clearField(5); + + @$pb.TagNumber(6) + $core.String get bIC => $_getSZ(5); + @$pb.TagNumber(6) + set bIC($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasBIC() => $_has(5); + @$pb.TagNumber(6) + void clearBIC() => clearField(6); + + @$pb.TagNumber(7) + $core.String get paypalAccount => $_getSZ(6); + @$pb.TagNumber(7) + set paypalAccount($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasPaypalAccount() => $_has(6); + @$pb.TagNumber(7) + void clearPaypalAccount() => clearField(7); + + @$pb.TagNumber(8) + $core.String get paypalId => $_getSZ(7); + @$pb.TagNumber(8) + set paypalId($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasPaypalId() => $_has(7); + @$pb.TagNumber(8) + void clearPaypalId() => clearField(8); + + @$pb.TagNumber(9) + $core.String get paymentSystem => $_getSZ(8); + @$pb.TagNumber(9) + set paymentSystem($core.String v) { $_setString(8, v); } + @$pb.TagNumber(9) + $core.bool hasPaymentSystem() => $_has(8); + @$pb.TagNumber(9) + void clearPaymentSystem() => clearField(9); + + @$pb.TagNumber(10) + $core.String get type => $_getSZ(9); + @$pb.TagNumber(10) + set type($core.String v) { $_setString(9, v); } + @$pb.TagNumber(10) + $core.bool hasType() => $_has(9); + @$pb.TagNumber(10) + void clearType() => clearField(10); + + @$pb.TagNumber(11) + $core.String get creator => $_getSZ(10); + @$pb.TagNumber(11) + set creator($core.String v) { $_setString(10, v); } + @$pb.TagNumber(11) + $core.bool hasCreator() => $_has(10); + @$pb.TagNumber(11) + void clearCreator() => clearField(11); + + @$pb.TagNumber(12) + $27.Timestamp get created => $_getN(11); + @$pb.TagNumber(12) + set created($27.Timestamp v) { setField(12, v); } + @$pb.TagNumber(12) + $core.bool hasCreated() => $_has(11); + @$pb.TagNumber(12) + void clearCreated() => clearField(12); + @$pb.TagNumber(12) + $27.Timestamp ensureCreated() => $_ensure(11); + + @$pb.TagNumber(13) + $core.String get changer => $_getSZ(12); + @$pb.TagNumber(13) + set changer($core.String v) { $_setString(12, v); } + @$pb.TagNumber(13) + $core.bool hasChanger() => $_has(12); + @$pb.TagNumber(13) + void clearChanger() => clearField(13); + + @$pb.TagNumber(14) + $27.Timestamp get changed => $_getN(13); + @$pb.TagNumber(14) + set changed($27.Timestamp v) { setField(14, v); } + @$pb.TagNumber(14) + $core.bool hasChanged() => $_has(13); + @$pb.TagNumber(14) + void clearChanged() => clearField(14); + @$pb.TagNumber(14) + $27.Timestamp ensureChanged() => $_ensure(13); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/payment.pbenum.dart b/frontend/app/lib/pb/payment.pbenum.dart new file mode 100644 index 0000000..771e456 --- /dev/null +++ b/frontend/app/lib/pb/payment.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/payment.pbjson.dart b/frontend/app/lib/pb/payment.pbjson.dart new file mode 100644 index 0000000..8e66d40 --- /dev/null +++ b/frontend/app/lib/pb/payment.pbjson.dart @@ -0,0 +1,66 @@ +// +// Generated code. Do not modify. +// source: payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use paymentDescriptor instead') +const Payment$json = { + '1': 'Payment', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'account_id', '3': 2, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'payment_category', '3': 3, '4': 1, '5': 9, '10': 'paymentCategory'}, + {'1': 'bankname', '3': 4, '4': 1, '5': 9, '9': 0, '10': 'bankname', '17': true}, + {'1': 'IBAN', '3': 5, '4': 1, '5': 9, '9': 1, '10': 'IBAN', '17': true}, + {'1': 'BIC', '3': 6, '4': 1, '5': 9, '9': 2, '10': 'BIC', '17': true}, + {'1': 'paypal_account', '3': 7, '4': 1, '5': 9, '9': 3, '10': 'paypalAccount', '17': true}, + {'1': 'paypal_id', '3': 8, '4': 1, '5': 9, '9': 4, '10': 'paypalId', '17': true}, + {'1': 'payment_system', '3': 9, '4': 1, '5': 9, '9': 5, '10': 'paymentSystem', '17': true}, + {'1': 'type', '3': 10, '4': 1, '5': 9, '10': 'type'}, + {'1': 'creator', '3': 11, '4': 1, '5': 9, '10': 'creator'}, + {'1': 'created', '3': 12, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'created'}, + {'1': 'changer', '3': 13, '4': 1, '5': 9, '10': 'changer'}, + {'1': 'changed', '3': 14, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'changed'}, + ], + '7': {}, + '8': [ + {'1': '_bankname'}, + {'1': '_IBAN'}, + {'1': '_BIC'}, + {'1': '_paypal_account'}, + {'1': '_paypal_id'}, + {'1': '_payment_system'}, + ], +}; + +/// Descriptor for `Payment`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List paymentDescriptor = $convert.base64Decode( + 'CgdQYXltZW50Eg4KAmlkGAEgASgEUgJpZBIdCgphY2NvdW50X2lkGAIgASgEUglhY2NvdW50SW' + 'QSKQoQcGF5bWVudF9jYXRlZ29yeRgDIAEoCVIPcGF5bWVudENhdGVnb3J5Eh8KCGJhbmtuYW1l' + 'GAQgASgJSABSCGJhbmtuYW1liAEBEhcKBElCQU4YBSABKAlIAVIESUJBTogBARIVCgNCSUMYBi' + 'ABKAlIAlIDQklDiAEBEioKDnBheXBhbF9hY2NvdW50GAcgASgJSANSDXBheXBhbEFjY291bnSI' + 'AQESIAoJcGF5cGFsX2lkGAggASgJSARSCHBheXBhbElkiAEBEioKDnBheW1lbnRfc3lzdGVtGA' + 'kgASgJSAVSDXBheW1lbnRTeXN0ZW2IAQESEgoEdHlwZRgKIAEoCVIEdHlwZRIYCgdjcmVhdG9y' + 'GAsgASgJUgdjcmVhdG9yElEKB2NyZWF0ZWQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZX' + 'N0YW1wQhuSQRhKFiIyMDIzLTEwLTA1VDAwOjAwOjAwWiJSB2NyZWF0ZWQSGAoHY2hhbmdlchgN' + 'IAEoCVIHY2hhbmdlchJRCgdjaGFuZ2VkGA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdG' + 'FtcEIbkkEYShYiMjAyMy0xMC0wNVQwMDowMDowMFoiUgdjaGFuZ2VkOu4CkkHqAgoJKgdQYXlt' + 'ZW50MtwCeyJpZCI6ICIxIiwiYWNjb3VudF9pZCI6ICIxIiwgInBheW1lbnRfY2F0ZWdvcnkiOi' + 'AiVEJEOiBwYXlwYWwiLCAicGF5cGFsX2FjY291bnQiOiAiam9obi5kb2VAZXhhbXBsZS5jb20i' + 'LCAicGF5cGFsX2lkIjogInRoaXMtaXMtYS1wYXlwYWwtaWQiLCAicGF5bWVudF9zeXN0ZW0iOi' + 'AiVEJEOiBwYXlwYWwgc3lzdGVtIiwgInR5cGUiOiAiVEJEOiBzb21lIHR5cGUiLCAiY3JlYXRv' + 'ciI6ICJqb2huLmRvZUBleGFtcGxlLmNvbSIsICJjcmVhdGVkIjogIjIwMjMtMTAtMDVUMDI6Mz' + 'A6NTNaIiwgImNoYW5nZXIiOiAiam9obi5kb2VAZXhhbXBsZS5jb20iLCAiY2hhbmdlZCI6ICIy' + 'MDIzLTEwLTA1VDAyOjMwOjUzWiJ9QgsKCV9iYW5rbmFtZUIHCgVfSUJBTkIGCgRfQklDQhEKD1' + '9wYXlwYWxfYWNjb3VudEIMCgpfcGF5cGFsX2lkQhEKD19wYXltZW50X3N5c3RlbQ=='); + diff --git a/frontend/app/lib/pb/person.pb.dart b/frontend/app/lib/pb/person.pb.dart new file mode 100644 index 0000000..265a285 --- /dev/null +++ b/frontend/app/lib/pb/person.pb.dart @@ -0,0 +1,245 @@ +// +// Generated code. Do not modify. +// source: person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class Person extends $pb.GeneratedMessage { + factory Person({ + $fixnum.Int64? id, + $fixnum.Int64? accountId, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $27.Timestamp? birthday, + $core.String? creator, + $27.Timestamp? created, + $core.String? changer, + $27.Timestamp? changed, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (accountId != null) { + $result.accountId = accountId; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (birthday != null) { + $result.birthday = birthday; + } + if (creator != null) { + $result.creator = creator; + } + if (created != null) { + $result.created = created; + } + if (changer != null) { + $result.changer = changer; + } + if (changed != null) { + $result.changed = changed; + } + return $result; + } + Person._() : super(); + factory Person.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Person.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Person', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'firstname') + ..aOS(4, _omitFieldNames ? '' : 'lastname') + ..aOS(5, _omitFieldNames ? '' : 'street') + ..aOS(6, _omitFieldNames ? '' : 'city') + ..aOS(7, _omitFieldNames ? '' : 'zip') + ..aOS(8, _omitFieldNames ? '' : 'country') + ..aOM<$27.Timestamp>(9, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..aOS(10, _omitFieldNames ? '' : 'creator') + ..aOM<$27.Timestamp>(11, _omitFieldNames ? '' : 'created', subBuilder: $27.Timestamp.create) + ..aOS(12, _omitFieldNames ? '' : 'changer') + ..aOM<$27.Timestamp>(13, _omitFieldNames ? '' : 'changed', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Person clone() => Person()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Person copyWith(void Function(Person) updates) => super.copyWith((message) => updates(message as Person)) as Person; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Person create() => Person._(); + Person createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Person getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Person? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get accountId => $_getI64(1); + @$pb.TagNumber(2) + set accountId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasAccountId() => $_has(1); + @$pb.TagNumber(2) + void clearAccountId() => clearField(2); + + @$pb.TagNumber(3) + $core.String get firstname => $_getSZ(2); + @$pb.TagNumber(3) + set firstname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasFirstname() => $_has(2); + @$pb.TagNumber(3) + void clearFirstname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get lastname => $_getSZ(3); + @$pb.TagNumber(4) + set lastname($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasLastname() => $_has(3); + @$pb.TagNumber(4) + void clearLastname() => clearField(4); + + @$pb.TagNumber(5) + $core.String get street => $_getSZ(4); + @$pb.TagNumber(5) + set street($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasStreet() => $_has(4); + @$pb.TagNumber(5) + void clearStreet() => clearField(5); + + @$pb.TagNumber(6) + $core.String get city => $_getSZ(5); + @$pb.TagNumber(6) + set city($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasCity() => $_has(5); + @$pb.TagNumber(6) + void clearCity() => clearField(6); + + @$pb.TagNumber(7) + $core.String get zip => $_getSZ(6); + @$pb.TagNumber(7) + set zip($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasZip() => $_has(6); + @$pb.TagNumber(7) + void clearZip() => clearField(7); + + @$pb.TagNumber(8) + $core.String get country => $_getSZ(7); + @$pb.TagNumber(8) + set country($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasCountry() => $_has(7); + @$pb.TagNumber(8) + void clearCountry() => clearField(8); + + @$pb.TagNumber(9) + $27.Timestamp get birthday => $_getN(8); + @$pb.TagNumber(9) + set birthday($27.Timestamp v) { setField(9, v); } + @$pb.TagNumber(9) + $core.bool hasBirthday() => $_has(8); + @$pb.TagNumber(9) + void clearBirthday() => clearField(9); + @$pb.TagNumber(9) + $27.Timestamp ensureBirthday() => $_ensure(8); + + @$pb.TagNumber(10) + $core.String get creator => $_getSZ(9); + @$pb.TagNumber(10) + set creator($core.String v) { $_setString(9, v); } + @$pb.TagNumber(10) + $core.bool hasCreator() => $_has(9); + @$pb.TagNumber(10) + void clearCreator() => clearField(10); + + @$pb.TagNumber(11) + $27.Timestamp get created => $_getN(10); + @$pb.TagNumber(11) + set created($27.Timestamp v) { setField(11, v); } + @$pb.TagNumber(11) + $core.bool hasCreated() => $_has(10); + @$pb.TagNumber(11) + void clearCreated() => clearField(11); + @$pb.TagNumber(11) + $27.Timestamp ensureCreated() => $_ensure(10); + + @$pb.TagNumber(12) + $core.String get changer => $_getSZ(11); + @$pb.TagNumber(12) + set changer($core.String v) { $_setString(11, v); } + @$pb.TagNumber(12) + $core.bool hasChanger() => $_has(11); + @$pb.TagNumber(12) + void clearChanger() => clearField(12); + + @$pb.TagNumber(13) + $27.Timestamp get changed => $_getN(12); + @$pb.TagNumber(13) + set changed($27.Timestamp v) { setField(13, v); } + @$pb.TagNumber(13) + $core.bool hasChanged() => $_has(12); + @$pb.TagNumber(13) + void clearChanged() => clearField(13); + @$pb.TagNumber(13) + $27.Timestamp ensureChanged() => $_ensure(12); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/person.pbenum.dart b/frontend/app/lib/pb/person.pbenum.dart new file mode 100644 index 0000000..3d2a943 --- /dev/null +++ b/frontend/app/lib/pb/person.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/person.pbjson.dart b/frontend/app/lib/pb/person.pbjson.dart new file mode 100644 index 0000000..0594753 --- /dev/null +++ b/frontend/app/lib/pb/person.pbjson.dart @@ -0,0 +1,57 @@ +// +// Generated code. Do not modify. +// source: person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use personDescriptor instead') +const Person$json = { + '1': 'Person', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'account_id', '3': 2, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'firstname', '3': 3, '4': 1, '5': 9, '10': 'firstname'}, + {'1': 'lastname', '3': 4, '4': 1, '5': 9, '10': 'lastname'}, + {'1': 'street', '3': 5, '4': 1, '5': 9, '10': 'street'}, + {'1': 'city', '3': 6, '4': 1, '5': 9, '10': 'city'}, + {'1': 'zip', '3': 7, '4': 1, '5': 9, '10': 'zip'}, + {'1': 'country', '3': 8, '4': 1, '5': 9, '10': 'country'}, + {'1': 'birthday', '3': 9, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'birthday'}, + {'1': 'creator', '3': 10, '4': 1, '5': 9, '10': 'creator'}, + {'1': 'created', '3': 11, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'created'}, + {'1': 'changer', '3': 12, '4': 1, '5': 9, '10': 'changer'}, + {'1': 'changed', '3': 13, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'changed'}, + ], + '7': {}, +}; + +/// Descriptor for `Person`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List personDescriptor = $convert.base64Decode( + 'CgZQZXJzb24SDgoCaWQYASABKARSAmlkEh0KCmFjY291bnRfaWQYAiABKARSCWFjY291bnRJZB' + 'IcCglmaXJzdG5hbWUYAyABKAlSCWZpcnN0bmFtZRIaCghsYXN0bmFtZRgEIAEoCVIIbGFzdG5h' + 'bWUSFgoGc3RyZWV0GAUgASgJUgZzdHJlZXQSEgoEY2l0eRgGIAEoCVIEY2l0eRIQCgN6aXAYBy' + 'ABKAlSA3ppcBIYCgdjb3VudHJ5GAggASgJUgdjb3VudHJ5ElMKCGJpcnRoZGF5GAkgASgLMhou' + 'Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYShYiMTk5MC0xMC0wNVQwMDowMDowMFoiUg' + 'hiaXJ0aGRheRIYCgdjcmVhdG9yGAogASgJUgdjcmVhdG9yElEKB2NyZWF0ZWQYCyABKAsyGi5n' + 'b29nbGUucHJvdG9idWYuVGltZXN0YW1wQhuSQRhKFiIyMDIzLTEwLTA1VDAwOjAwOjAwWiJSB2' + 'NyZWF0ZWQSGAoHY2hhbmdlchgMIAEoCVIHY2hhbmdlchJRCgdjaGFuZ2VkGA0gASgLMhouZ29v' + 'Z2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYShYiMjAyMy0xMC0wNVQwMDowMDowMFoiUgdjaG' + 'FuZ2VkOrwDkkG4AwoIKgZQZXJzb24yqwN7ImlkIjogIjEiLCJlbWFpbCI6ICJqb2huLmRvZUBl' + 'eGFtcGxlLmNvbSIsICJmaXJzdG5hbWUiOiAiSm9obiIsICJsYXN0bmFtZSI6ICJEb2UiLCAicG' + 'hvbmUiOiAiIiwgInN0cmVldCI6ICJEZWF0aCBTdGFyIDIiLCAiemlwIjogIjA4MTUiLCAiY2l0' + 'eSI6ICJOZXcgWW9yayIsICJjb3VudHJ5IjogIlVTQSIsICJiaXJ0aGRheSI6ICIxOTkwLTEwLT' + 'A1VDAwOjAwOjAwWiIsICJwcml2YWN5X2FjY2VwdGVkIjogZmFsc2UsICJwcml2YWN5X2FjY2Vw' + 'dGVkX2RhdGUiOiAiMDAwMS0wMS0wMVQwMDowMDowMFoiLCAiY3JlYXRvciI6ICJqb2huLmRvZU' + 'BleGFtcGxlLmNvbSIsICJjcmVhdGVkIjogIjIwMjMtMTAtMDVUMDI6MzA6NTNaIiwgImNoYW5n' + 'ZXIiOiAiam9obi5kb2VAZXhhbXBsZS5jb20iLCAiY2hhbmdlZCI6ICIyMDIzLTEwLTA1VDAyOj' + 'MwOjUzWiJ9'); + diff --git a/frontend/app/lib/pb/returns_log.pb.dart b/frontend/app/lib/pb/returns_log.pb.dart new file mode 100644 index 0000000..1ade51c --- /dev/null +++ b/frontend/app/lib/pb/returns_log.pb.dart @@ -0,0 +1,173 @@ +// +// Generated code. Do not modify. +// source: returns_log.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class ReturnsLog extends $pb.GeneratedMessage { + factory ReturnsLog({ + $fixnum.Int64? id, + $fixnum.Int64? returnId, + $fixnum.Int64? mailId, + $core.String? status, + $core.String? creator, + $27.Timestamp? created, + $core.String? changer, + $27.Timestamp? changed, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (returnId != null) { + $result.returnId = returnId; + } + if (mailId != null) { + $result.mailId = mailId; + } + if (status != null) { + $result.status = status; + } + if (creator != null) { + $result.creator = creator; + } + if (created != null) { + $result.created = created; + } + if (changer != null) { + $result.changer = changer; + } + if (changed != null) { + $result.changed = changed; + } + return $result; + } + ReturnsLog._() : super(); + factory ReturnsLog.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ReturnsLog.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ReturnsLog', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'returnId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(3, _omitFieldNames ? '' : 'mailId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(4, _omitFieldNames ? '' : 'status') + ..aOS(5, _omitFieldNames ? '' : 'creator') + ..aOM<$27.Timestamp>(6, _omitFieldNames ? '' : 'created', subBuilder: $27.Timestamp.create) + ..aOS(7, _omitFieldNames ? '' : 'changer') + ..aOM<$27.Timestamp>(8, _omitFieldNames ? '' : 'changed', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ReturnsLog clone() => ReturnsLog()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ReturnsLog copyWith(void Function(ReturnsLog) updates) => super.copyWith((message) => updates(message as ReturnsLog)) as ReturnsLog; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ReturnsLog create() => ReturnsLog._(); + ReturnsLog createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ReturnsLog getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ReturnsLog? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get returnId => $_getI64(1); + @$pb.TagNumber(2) + set returnId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasReturnId() => $_has(1); + @$pb.TagNumber(2) + void clearReturnId() => clearField(2); + + @$pb.TagNumber(3) + $fixnum.Int64 get mailId => $_getI64(2); + @$pb.TagNumber(3) + set mailId($fixnum.Int64 v) { $_setInt64(2, v); } + @$pb.TagNumber(3) + $core.bool hasMailId() => $_has(2); + @$pb.TagNumber(3) + void clearMailId() => clearField(3); + + @$pb.TagNumber(4) + $core.String get status => $_getSZ(3); + @$pb.TagNumber(4) + set status($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasStatus() => $_has(3); + @$pb.TagNumber(4) + void clearStatus() => clearField(4); + + @$pb.TagNumber(5) + $core.String get creator => $_getSZ(4); + @$pb.TagNumber(5) + set creator($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasCreator() => $_has(4); + @$pb.TagNumber(5) + void clearCreator() => clearField(5); + + @$pb.TagNumber(6) + $27.Timestamp get created => $_getN(5); + @$pb.TagNumber(6) + set created($27.Timestamp v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasCreated() => $_has(5); + @$pb.TagNumber(6) + void clearCreated() => clearField(6); + @$pb.TagNumber(6) + $27.Timestamp ensureCreated() => $_ensure(5); + + @$pb.TagNumber(7) + $core.String get changer => $_getSZ(6); + @$pb.TagNumber(7) + set changer($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasChanger() => $_has(6); + @$pb.TagNumber(7) + void clearChanger() => clearField(7); + + @$pb.TagNumber(8) + $27.Timestamp get changed => $_getN(7); + @$pb.TagNumber(8) + set changed($27.Timestamp v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasChanged() => $_has(7); + @$pb.TagNumber(8) + void clearChanged() => clearField(8); + @$pb.TagNumber(8) + $27.Timestamp ensureChanged() => $_ensure(7); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/returns_log.pbenum.dart b/frontend/app/lib/pb/returns_log.pbenum.dart new file mode 100644 index 0000000..be0cc3e --- /dev/null +++ b/frontend/app/lib/pb/returns_log.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: returns_log.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/returns_log.pbjson.dart b/frontend/app/lib/pb/returns_log.pbjson.dart new file mode 100644 index 0000000..6dda1c4 --- /dev/null +++ b/frontend/app/lib/pb/returns_log.pbjson.dart @@ -0,0 +1,48 @@ +// +// Generated code. Do not modify. +// source: returns_log.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use returnsLogDescriptor instead') +const ReturnsLog$json = { + '1': 'ReturnsLog', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'return_id', '3': 2, '4': 1, '5': 4, '10': 'returnId'}, + {'1': 'mail_id', '3': 3, '4': 1, '5': 4, '10': 'mailId'}, + {'1': 'status', '3': 4, '4': 1, '5': 9, '10': 'status'}, + {'1': 'creator', '3': 5, '4': 1, '5': 9, '10': 'creator'}, + {'1': 'created', '3': 6, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'created'}, + {'1': 'changer', '3': 7, '4': 1, '5': 9, '10': 'changer'}, + {'1': 'changed', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'changed'}, + ], + '7': {}, +}; + +/// Descriptor for `ReturnsLog`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List returnsLogDescriptor = $convert.base64Decode( + 'CgpSZXR1cm5zTG9nEg4KAmlkGAEgASgEUgJpZBIbCglyZXR1cm5faWQYAiABKARSCHJldHVybk' + 'lkEhcKB21haWxfaWQYAyABKARSBm1haWxJZBIWCgZzdGF0dXMYBCABKAlSBnN0YXR1cxIYCgdj' + 'cmVhdG9yGAUgASgJUgdjcmVhdG9yElEKB2NyZWF0ZWQYBiABKAsyGi5nb29nbGUucHJvdG9idW' + 'YuVGltZXN0YW1wQhuSQRhKFiIyMDIzLTEwLTA1VDAwOjAwOjAwWiJSB2NyZWF0ZWQSGAoHY2hh' + 'bmdlchgHIAEoCVIHY2hhbmdlchJRCgdjaGFuZ2VkGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLl' + 'RpbWVzdGFtcEIbkkEYShYiMjAyMy0xMC0wNVQwMDowMDowMFoiUgdjaGFuZ2VkOsADkkG8AwoM' + 'KgpSZXR1cm5zTG9nMqsDeyJpZCI6ICIxIiwiZW1haWwiOiAiam9obi5kb2VAZXhhbXBsZS5jb2' + '0iLCAiZmlyc3RuYW1lIjogIkpvaG4iLCAibGFzdG5hbWUiOiAiRG9lIiwgInBob25lIjogIiIs' + 'ICJzdHJlZXQiOiAiRGVhdGggU3RhciAyIiwgInppcCI6ICIwODE1IiwgImNpdHkiOiAiTmV3IF' + 'lvcmsiLCAiY291bnRyeSI6ICJVU0EiLCAiYmlydGhkYXkiOiAiMTk5MC0xMC0wNVQwMDowMDow' + 'MFoiLCAicHJpdmFjeV9hY2NlcHRlZCI6IGZhbHNlLCAicHJpdmFjeV9hY2NlcHRlZF9kYXRlIj' + 'ogIjAwMDEtMDEtMDFUMDA6MDA6MDBaIiwgImNyZWF0b3IiOiAiam9obi5kb2VAZXhhbXBsZS5j' + 'b20iLCAiY3JlYXRlZCI6ICIyMDIzLTEwLTA1VDAyOjMwOjUzWiIsICJjaGFuZ2VyIjogImpvaG' + '4uZG9lQGV4YW1wbGUuY29tIiwgImNoYW5nZWQiOiAiMjAyMy0xMC0wNVQwMjozMDo1M1oifQ=='); + diff --git a/frontend/app/lib/pb/rpc_block_session.pb.dart b/frontend/app/lib/pb/rpc_block_session.pb.dart new file mode 100644 index 0000000..e26c2a5 --- /dev/null +++ b/frontend/app/lib/pb/rpc_block_session.pb.dart @@ -0,0 +1,132 @@ +// +// Generated code. Do not modify. +// source: rpc_block_session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class BlockSessionRequest extends $pb.GeneratedMessage { + factory BlockSessionRequest({ + $core.String? sessionId, + }) { + final $result = create(); + if (sessionId != null) { + $result.sessionId = sessionId; + } + return $result; + } + BlockSessionRequest._() : super(); + factory BlockSessionRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory BlockSessionRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'BlockSessionRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'sessionId') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + BlockSessionRequest clone() => BlockSessionRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + BlockSessionRequest copyWith(void Function(BlockSessionRequest) updates) => super.copyWith((message) => updates(message as BlockSessionRequest)) as BlockSessionRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static BlockSessionRequest create() => BlockSessionRequest._(); + BlockSessionRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static BlockSessionRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static BlockSessionRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get sessionId => $_getSZ(0); + @$pb.TagNumber(1) + set sessionId($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasSessionId() => $_has(0); + @$pb.TagNumber(1) + void clearSessionId() => clearField(1); +} + +class BlockSessionResponse extends $pb.GeneratedMessage { + factory BlockSessionResponse({ + $core.String? sessionId, + $core.bool? blocked, + }) { + final $result = create(); + if (sessionId != null) { + $result.sessionId = sessionId; + } + if (blocked != null) { + $result.blocked = blocked; + } + return $result; + } + BlockSessionResponse._() : super(); + factory BlockSessionResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory BlockSessionResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'BlockSessionResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'sessionId') + ..aOB(2, _omitFieldNames ? '' : 'blocked') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + BlockSessionResponse clone() => BlockSessionResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + BlockSessionResponse copyWith(void Function(BlockSessionResponse) updates) => super.copyWith((message) => updates(message as BlockSessionResponse)) as BlockSessionResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static BlockSessionResponse create() => BlockSessionResponse._(); + BlockSessionResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static BlockSessionResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static BlockSessionResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get sessionId => $_getSZ(0); + @$pb.TagNumber(1) + set sessionId($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasSessionId() => $_has(0); + @$pb.TagNumber(1) + void clearSessionId() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get blocked => $_getBF(1); + @$pb.TagNumber(2) + set blocked($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasBlocked() => $_has(1); + @$pb.TagNumber(2) + void clearBlocked() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_block_session.pbenum.dart b/frontend/app/lib/pb/rpc_block_session.pbenum.dart new file mode 100644 index 0000000..aa684ed --- /dev/null +++ b/frontend/app/lib/pb/rpc_block_session.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_block_session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_block_session.pbjson.dart b/frontend/app/lib/pb/rpc_block_session.pbjson.dart new file mode 100644 index 0000000..6c0074e --- /dev/null +++ b/frontend/app/lib/pb/rpc_block_session.pbjson.dart @@ -0,0 +1,49 @@ +// +// Generated code. Do not modify. +// source: rpc_block_session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use blockSessionRequestDescriptor instead') +const BlockSessionRequest$json = { + '1': 'BlockSessionRequest', + '2': [ + {'1': 'session_id', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'sessionId'}, + ], + '7': {}, +}; + +/// Descriptor for `BlockSessionRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List blockSessionRequestDescriptor = $convert.base64Decode( + 'ChNCbG9ja1Nlc3Npb25SZXF1ZXN0ElEKCnNlc3Npb25faWQYASABKAlCMpJBL0omIjVlMWQ2N2' + 'RhLTdjOWItNDM2NS1hNGQ1LTNjYzBhMDUxMjQxZSKiAgR1dWlkUglzZXNzaW9uSWQ6apJBZwot' + 'Kg1CbG9jayBTZXNzaW9uMg9CbG9jayBhIFNlc3Npb27SAQpzZXNzaW9uX2lkMjZ7InNlc3Npb2' + '5faWQiOiAiNWUxZDY3ZGEtN2M5Yi00MzY1LWE0ZDUtM2NjMGEwNTEyNDFlIn0='); + +@$core.Deprecated('Use blockSessionResponseDescriptor instead') +const BlockSessionResponse$json = { + '1': 'BlockSessionResponse', + '2': [ + {'1': 'session_id', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'sessionId'}, + {'1': 'blocked', '3': 2, '4': 1, '5': 8, '8': {}, '10': 'blocked'}, + ], + '7': {}, +}; + +/// Descriptor for `BlockSessionResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List blockSessionResponseDescriptor = $convert.base64Decode( + 'ChRCbG9ja1Nlc3Npb25SZXNwb25zZRJRCgpzZXNzaW9uX2lkGAEgASgJQjKSQS9KJiI1ZTFkNj' + 'dkYS03YzliLTQzNjUtYTRkNS0zY2MwYTA1MTI0MWUiogIEdXVpZFIJc2Vzc2lvbklkEiMKB2Js' + 'b2NrZWQYAiABKAhCCZJBBkoEdHJ1ZVIHYmxvY2tlZDpfkkFcChEqD0Jsb2NrZWQgU2Vzc2lvbj' + 'JHeyJzZXNzaW9uX2lkIjogIjVlMWQ2N2RhLTdjOWItNDM2NS1hNGQ1LTNjYzBhMDUxMjQxZSIs' + 'ICJibG9ja2VkIjogdHJ1ZX0='); + diff --git a/frontend/app/lib/pb/rpc_create_account.pb.dart b/frontend/app/lib/pb/rpc_create_account.pb.dart new file mode 100644 index 0000000..d5c1508 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account.pb.dart @@ -0,0 +1,136 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account.pb.dart' as $29; + +class CreateAccountRequest extends $pb.GeneratedMessage { + factory CreateAccountRequest({ + $core.String? email, + $core.String? password, + }) { + final $result = create(); + if (email != null) { + $result.email = email; + } + if (password != null) { + $result.password = password; + } + return $result; + } + CreateAccountRequest._() : super(); + factory CreateAccountRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateAccountRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreateAccountRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'email') + ..aOS(2, _omitFieldNames ? '' : 'password') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateAccountRequest clone() => CreateAccountRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateAccountRequest copyWith(void Function(CreateAccountRequest) updates) => super.copyWith((message) => updates(message as CreateAccountRequest)) as CreateAccountRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreateAccountRequest create() => CreateAccountRequest._(); + CreateAccountRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateAccountRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateAccountRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get email => $_getSZ(0); + @$pb.TagNumber(1) + set email($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasEmail() => $_has(0); + @$pb.TagNumber(1) + void clearEmail() => clearField(1); + + @$pb.TagNumber(2) + $core.String get password => $_getSZ(1); + @$pb.TagNumber(2) + set password($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPassword() => $_has(1); + @$pb.TagNumber(2) + void clearPassword() => clearField(2); +} + +class CreateAccountResponse extends $pb.GeneratedMessage { + factory CreateAccountResponse({ + $29.Account? account, + }) { + final $result = create(); + if (account != null) { + $result.account = account; + } + return $result; + } + CreateAccountResponse._() : super(); + factory CreateAccountResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateAccountResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreateAccountResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$29.Account>(1, _omitFieldNames ? '' : 'account', subBuilder: $29.Account.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateAccountResponse clone() => CreateAccountResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateAccountResponse copyWith(void Function(CreateAccountResponse) updates) => super.copyWith((message) => updates(message as CreateAccountResponse)) as CreateAccountResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreateAccountResponse create() => CreateAccountResponse._(); + CreateAccountResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateAccountResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateAccountResponse? _defaultInstance; + + @$pb.TagNumber(1) + $29.Account get account => $_getN(0); + @$pb.TagNumber(1) + set account($29.Account v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccount() => $_has(0); + @$pb.TagNumber(1) + void clearAccount() => clearField(1); + @$pb.TagNumber(1) + $29.Account ensureAccount() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_create_account.pbenum.dart b/frontend/app/lib/pb/rpc_create_account.pbenum.dart new file mode 100644 index 0000000..6e09c97 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_create_account.pbjson.dart b/frontend/app/lib/pb/rpc_create_account.pbjson.dart new file mode 100644 index 0000000..3a99698 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account.pbjson.dart @@ -0,0 +1,47 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use createAccountRequestDescriptor instead') +const CreateAccountRequest$json = { + '1': 'CreateAccountRequest', + '2': [ + {'1': 'email', '3': 1, '4': 1, '5': 9, '10': 'email'}, + {'1': 'password', '3': 2, '4': 1, '5': 9, '10': 'password'}, + ], + '7': {}, +}; + +/// Descriptor for `CreateAccountRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createAccountRequestDescriptor = $convert.base64Decode( + 'ChRDcmVhdGVBY2NvdW50UmVxdWVzdBIUCgVlbWFpbBgBIAEoCVIFZW1haWwSGgoIcGFzc3dvcm' + 'QYAiABKAlSCHBhc3N3b3JkOoQBkkGAAQo2Kg5DcmVhdGUgQWNjb3VudDIRQ3JlYXRlIGFuIEFj' + 'Y291bnTSAQVlbWFpbNIBCHBhc3N3b3JkMkZ7ImVtYWlsIjogImpvaG4uZG9lQGV4YW1wbGUuY2' + '9tIiwgInBhc3N3b3JkIjogIk1heVRoZUZvcmNlQmVXaXRoWW91ISJ9'); + +@$core.Deprecated('Use createAccountResponseDescriptor instead') +const CreateAccountResponse$json = { + '1': 'CreateAccountResponse', + '2': [ + {'1': 'account', '3': 1, '4': 1, '5': 11, '6': '.pb.Account', '8': {}, '10': 'account'}, + ], + '7': {}, +}; + +/// Descriptor for `CreateAccountResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createAccountResponseDescriptor = $convert.base64Decode( + 'ChVDcmVhdGVBY2NvdW50UmVzcG9uc2USKgoHYWNjb3VudBgBIAEoCzILLnBiLkFjY291bnRCA5' + 'JBAFIHYWNjb3VudDozkkEwCi4qD0NyZWF0ZWQgQWNjb3VudDIbUmV0dXJucyB0aGUgY3JlYXRl' + 'ZCBBY2NvdW50'); + diff --git a/frontend/app/lib/pb/rpc_create_account_info.pb.dart b/frontend/app/lib/pb/rpc_create_account_info.pb.dart new file mode 100644 index 0000000..e8b6311 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account_info.pb.dart @@ -0,0 +1,252 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account_info.pb.dart' as $28; +import 'google/protobuf/timestamp.pb.dart' as $27; + +class CreateAccountInfoRequest extends $pb.GeneratedMessage { + factory CreateAccountInfoRequest({ + $fixnum.Int64? accountId, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $core.String? phone, + $27.Timestamp? birthday, + $core.bool? privacyAccepted, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (phone != null) { + $result.phone = phone; + } + if (birthday != null) { + $result.birthday = birthday; + } + if (privacyAccepted != null) { + $result.privacyAccepted = privacyAccepted; + } + return $result; + } + CreateAccountInfoRequest._() : super(); + factory CreateAccountInfoRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateAccountInfoRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreateAccountInfoRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'firstname') + ..aOS(4, _omitFieldNames ? '' : 'lastname') + ..aOS(5, _omitFieldNames ? '' : 'street') + ..aOS(6, _omitFieldNames ? '' : 'city') + ..aOS(7, _omitFieldNames ? '' : 'zip') + ..aOS(8, _omitFieldNames ? '' : 'country') + ..aOS(9, _omitFieldNames ? '' : 'phone') + ..aOM<$27.Timestamp>(10, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..aOB(11, _omitFieldNames ? '' : 'privacyAccepted') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateAccountInfoRequest clone() => CreateAccountInfoRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateAccountInfoRequest copyWith(void Function(CreateAccountInfoRequest) updates) => super.copyWith((message) => updates(message as CreateAccountInfoRequest)) as CreateAccountInfoRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreateAccountInfoRequest create() => CreateAccountInfoRequest._(); + CreateAccountInfoRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateAccountInfoRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateAccountInfoRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(3) + $core.String get firstname => $_getSZ(1); + @$pb.TagNumber(3) + set firstname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(3) + $core.bool hasFirstname() => $_has(1); + @$pb.TagNumber(3) + void clearFirstname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get lastname => $_getSZ(2); + @$pb.TagNumber(4) + set lastname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(4) + $core.bool hasLastname() => $_has(2); + @$pb.TagNumber(4) + void clearLastname() => clearField(4); + + @$pb.TagNumber(5) + $core.String get street => $_getSZ(3); + @$pb.TagNumber(5) + set street($core.String v) { $_setString(3, v); } + @$pb.TagNumber(5) + $core.bool hasStreet() => $_has(3); + @$pb.TagNumber(5) + void clearStreet() => clearField(5); + + @$pb.TagNumber(6) + $core.String get city => $_getSZ(4); + @$pb.TagNumber(6) + set city($core.String v) { $_setString(4, v); } + @$pb.TagNumber(6) + $core.bool hasCity() => $_has(4); + @$pb.TagNumber(6) + void clearCity() => clearField(6); + + @$pb.TagNumber(7) + $core.String get zip => $_getSZ(5); + @$pb.TagNumber(7) + set zip($core.String v) { $_setString(5, v); } + @$pb.TagNumber(7) + $core.bool hasZip() => $_has(5); + @$pb.TagNumber(7) + void clearZip() => clearField(7); + + @$pb.TagNumber(8) + $core.String get country => $_getSZ(6); + @$pb.TagNumber(8) + set country($core.String v) { $_setString(6, v); } + @$pb.TagNumber(8) + $core.bool hasCountry() => $_has(6); + @$pb.TagNumber(8) + void clearCountry() => clearField(8); + + @$pb.TagNumber(9) + $core.String get phone => $_getSZ(7); + @$pb.TagNumber(9) + set phone($core.String v) { $_setString(7, v); } + @$pb.TagNumber(9) + $core.bool hasPhone() => $_has(7); + @$pb.TagNumber(9) + void clearPhone() => clearField(9); + + @$pb.TagNumber(10) + $27.Timestamp get birthday => $_getN(8); + @$pb.TagNumber(10) + set birthday($27.Timestamp v) { setField(10, v); } + @$pb.TagNumber(10) + $core.bool hasBirthday() => $_has(8); + @$pb.TagNumber(10) + void clearBirthday() => clearField(10); + @$pb.TagNumber(10) + $27.Timestamp ensureBirthday() => $_ensure(8); + + @$pb.TagNumber(11) + $core.bool get privacyAccepted => $_getBF(9); + @$pb.TagNumber(11) + set privacyAccepted($core.bool v) { $_setBool(9, v); } + @$pb.TagNumber(11) + $core.bool hasPrivacyAccepted() => $_has(9); + @$pb.TagNumber(11) + void clearPrivacyAccepted() => clearField(11); +} + +class CreateAccountInfoResponse extends $pb.GeneratedMessage { + factory CreateAccountInfoResponse({ + $28.AccountInfo? accountInfo, + }) { + final $result = create(); + if (accountInfo != null) { + $result.accountInfo = accountInfo; + } + return $result; + } + CreateAccountInfoResponse._() : super(); + factory CreateAccountInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreateAccountInfoResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreateAccountInfoResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$28.AccountInfo>(1, _omitFieldNames ? '' : 'accountInfo', subBuilder: $28.AccountInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreateAccountInfoResponse clone() => CreateAccountInfoResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreateAccountInfoResponse copyWith(void Function(CreateAccountInfoResponse) updates) => super.copyWith((message) => updates(message as CreateAccountInfoResponse)) as CreateAccountInfoResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreateAccountInfoResponse create() => CreateAccountInfoResponse._(); + CreateAccountInfoResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreateAccountInfoResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreateAccountInfoResponse? _defaultInstance; + + @$pb.TagNumber(1) + $28.AccountInfo get accountInfo => $_getN(0); + @$pb.TagNumber(1) + set accountInfo($28.AccountInfo v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccountInfo() => $_has(0); + @$pb.TagNumber(1) + void clearAccountInfo() => clearField(1); + @$pb.TagNumber(1) + $28.AccountInfo ensureAccountInfo() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_create_account_info.pbenum.dart b/frontend/app/lib/pb/rpc_create_account_info.pbenum.dart new file mode 100644 index 0000000..f60d4eb --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account_info.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_create_account_info.pbjson.dart b/frontend/app/lib/pb/rpc_create_account_info.pbjson.dart new file mode 100644 index 0000000..f5ff3e6 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_account_info.pbjson.dart @@ -0,0 +1,67 @@ +// +// Generated code. Do not modify. +// source: rpc_create_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use createAccountInfoRequestDescriptor instead') +const CreateAccountInfoRequest$json = { + '1': 'CreateAccountInfoRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'firstname', '3': 3, '4': 1, '5': 9, '10': 'firstname'}, + {'1': 'lastname', '3': 4, '4': 1, '5': 9, '10': 'lastname'}, + {'1': 'street', '3': 5, '4': 1, '5': 9, '10': 'street'}, + {'1': 'city', '3': 6, '4': 1, '5': 9, '10': 'city'}, + {'1': 'zip', '3': 7, '4': 1, '5': 9, '10': 'zip'}, + {'1': 'country', '3': 8, '4': 1, '5': 9, '10': 'country'}, + {'1': 'phone', '3': 9, '4': 1, '5': 9, '10': 'phone'}, + {'1': 'birthday', '3': 10, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'birthday'}, + {'1': 'privacy_accepted', '3': 11, '4': 1, '5': 8, '8': {}, '9': 0, '10': 'privacyAccepted', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_privacy_accepted'}, + ], +}; + +/// Descriptor for `CreateAccountInfoRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createAccountInfoRequestDescriptor = $convert.base64Decode( + 'ChhDcmVhdGVBY2NvdW50SW5mb1JlcXVlc3QSHQoKYWNjb3VudF9pZBgBIAEoBFIJYWNjb3VudE' + 'lkEhwKCWZpcnN0bmFtZRgDIAEoCVIJZmlyc3RuYW1lEhoKCGxhc3RuYW1lGAQgASgJUghsYXN0' + 'bmFtZRIWCgZzdHJlZXQYBSABKAlSBnN0cmVldBISCgRjaXR5GAYgASgJUgRjaXR5EhAKA3ppcB' + 'gHIAEoCVIDemlwEhgKB2NvdW50cnkYCCABKAlSB2NvdW50cnkSFAoFcGhvbmUYCSABKAlSBXBo' + 'b25lElMKCGJpcnRoZGF5GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYSh' + 'YiMTk5MC0xMC0wNVQwMDowMDowMFoiUghiaXJ0aGRheRI5ChBwcml2YWN5X2FjY2VwdGVkGAsg' + 'ASgIQgmSQQZKBHRydWVIAFIPcHJpdmFjeUFjY2VwdGVkiAEBOrICkkGuAgp6KhJDcmVhdGUgQW' + 'Njb3VudEluZm8yFUNyZWF0ZSBhbiBBY2NvdW50SW5mb9IBCmFjY291bnRfaWTSAQlmaXJzdG5h' + 'bWXSAQhsYXN0bmFtZdIBBnN0cmVldNIBBGNpdHnSAQN6aXDSAQdjb3VudHJ50gEIYmlydGhkYX' + 'kyrwF7ImFjY291bnRfaWQiOiAiMSIsICJmaXJzdG5hbWUiOiAiSm9obiIsICJsYXN0bmFtZSI6' + 'ICJEb2UiLCAic3RyZWV0IjogIk1haW4gU3RyZWV0IDEiLCAiemlwIjogIjA4MTUiLCAiY2l0eS' + 'I6ICJOZXcgWW9yayIsICJjb3VudHJ5IjogIlVTQSIsICJiaXJ0aGRheSI6ICIxOTkwLTEwLTA1' + 'VDAwOjAwOjAwWiJ9QhMKEV9wcml2YWN5X2FjY2VwdGVk'); + +@$core.Deprecated('Use createAccountInfoResponseDescriptor instead') +const CreateAccountInfoResponse$json = { + '1': 'CreateAccountInfoResponse', + '2': [ + {'1': 'account_info', '3': 1, '4': 1, '5': 11, '6': '.pb.AccountInfo', '8': {}, '10': 'accountInfo'}, + ], + '7': {}, +}; + +/// Descriptor for `CreateAccountInfoResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createAccountInfoResponseDescriptor = $convert.base64Decode( + 'ChlDcmVhdGVBY2NvdW50SW5mb1Jlc3BvbnNlEjcKDGFjY291bnRfaW5mbxgBIAEoCzIPLnBiLk' + 'FjY291bnRJbmZvQgOSQQBSC2FjY291bnRJbmZvOjuSQTgKNioTQ3JlYXRlZCBBY2NvdW50SW5m' + 'bzIfUmV0dXJucyB0aGUgY3JlYXRlZCBBY2NvdW50SW5mbw=='); + diff --git a/frontend/app/lib/pb/rpc_create_payment.pb.dart b/frontend/app/lib/pb/rpc_create_payment.pb.dart new file mode 100644 index 0000000..082d8ef --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_payment.pb.dart @@ -0,0 +1,235 @@ +// +// Generated code. Do not modify. +// source: rpc_create_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'payment.pb.dart' as $30; + +class CreatePaymentRequest extends $pb.GeneratedMessage { + factory CreatePaymentRequest({ + $fixnum.Int64? accountId, + $core.String? paymentCategory, + $core.String? bankname, + $core.String? iBAN, + $core.String? bIC, + $core.String? paypalAccount, + $core.String? paypalId, + $core.String? paymentSystem, + $core.String? type, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (paymentCategory != null) { + $result.paymentCategory = paymentCategory; + } + if (bankname != null) { + $result.bankname = bankname; + } + if (iBAN != null) { + $result.iBAN = iBAN; + } + if (bIC != null) { + $result.bIC = bIC; + } + if (paypalAccount != null) { + $result.paypalAccount = paypalAccount; + } + if (paypalId != null) { + $result.paypalId = paypalId; + } + if (paymentSystem != null) { + $result.paymentSystem = paymentSystem; + } + if (type != null) { + $result.type = type; + } + return $result; + } + CreatePaymentRequest._() : super(); + factory CreatePaymentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreatePaymentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreatePaymentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'paymentCategory') + ..aOS(3, _omitFieldNames ? '' : 'bankname') + ..aOS(4, _omitFieldNames ? '' : 'IBAN', protoName: 'IBAN') + ..aOS(5, _omitFieldNames ? '' : 'BIC', protoName: 'BIC') + ..aOS(6, _omitFieldNames ? '' : 'paypalAccount') + ..aOS(7, _omitFieldNames ? '' : 'paypalId') + ..aOS(8, _omitFieldNames ? '' : 'paymentSystem') + ..aOS(9, _omitFieldNames ? '' : 'type') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreatePaymentRequest clone() => CreatePaymentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreatePaymentRequest copyWith(void Function(CreatePaymentRequest) updates) => super.copyWith((message) => updates(message as CreatePaymentRequest)) as CreatePaymentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreatePaymentRequest create() => CreatePaymentRequest._(); + CreatePaymentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreatePaymentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreatePaymentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get paymentCategory => $_getSZ(1); + @$pb.TagNumber(2) + set paymentCategory($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPaymentCategory() => $_has(1); + @$pb.TagNumber(2) + void clearPaymentCategory() => clearField(2); + + @$pb.TagNumber(3) + $core.String get bankname => $_getSZ(2); + @$pb.TagNumber(3) + set bankname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasBankname() => $_has(2); + @$pb.TagNumber(3) + void clearBankname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get iBAN => $_getSZ(3); + @$pb.TagNumber(4) + set iBAN($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasIBAN() => $_has(3); + @$pb.TagNumber(4) + void clearIBAN() => clearField(4); + + @$pb.TagNumber(5) + $core.String get bIC => $_getSZ(4); + @$pb.TagNumber(5) + set bIC($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasBIC() => $_has(4); + @$pb.TagNumber(5) + void clearBIC() => clearField(5); + + @$pb.TagNumber(6) + $core.String get paypalAccount => $_getSZ(5); + @$pb.TagNumber(6) + set paypalAccount($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasPaypalAccount() => $_has(5); + @$pb.TagNumber(6) + void clearPaypalAccount() => clearField(6); + + @$pb.TagNumber(7) + $core.String get paypalId => $_getSZ(6); + @$pb.TagNumber(7) + set paypalId($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasPaypalId() => $_has(6); + @$pb.TagNumber(7) + void clearPaypalId() => clearField(7); + + @$pb.TagNumber(8) + $core.String get paymentSystem => $_getSZ(7); + @$pb.TagNumber(8) + set paymentSystem($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasPaymentSystem() => $_has(7); + @$pb.TagNumber(8) + void clearPaymentSystem() => clearField(8); + + @$pb.TagNumber(9) + $core.String get type => $_getSZ(8); + @$pb.TagNumber(9) + set type($core.String v) { $_setString(8, v); } + @$pb.TagNumber(9) + $core.bool hasType() => $_has(8); + @$pb.TagNumber(9) + void clearType() => clearField(9); +} + +class CreatePaymentResponse extends $pb.GeneratedMessage { + factory CreatePaymentResponse({ + $30.Payment? payment, + }) { + final $result = create(); + if (payment != null) { + $result.payment = payment; + } + return $result; + } + CreatePaymentResponse._() : super(); + factory CreatePaymentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreatePaymentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreatePaymentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$30.Payment>(1, _omitFieldNames ? '' : 'payment', subBuilder: $30.Payment.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreatePaymentResponse clone() => CreatePaymentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreatePaymentResponse copyWith(void Function(CreatePaymentResponse) updates) => super.copyWith((message) => updates(message as CreatePaymentResponse)) as CreatePaymentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreatePaymentResponse create() => CreatePaymentResponse._(); + CreatePaymentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreatePaymentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreatePaymentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $30.Payment get payment => $_getN(0); + @$pb.TagNumber(1) + set payment($30.Payment v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPayment() => $_has(0); + @$pb.TagNumber(1) + void clearPayment() => clearField(1); + @$pb.TagNumber(1) + $30.Payment ensurePayment() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_create_payment.pbenum.dart b/frontend/app/lib/pb/rpc_create_payment.pbenum.dart new file mode 100644 index 0000000..30d4bb1 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_payment.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_create_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_create_payment.pbjson.dart b/frontend/app/lib/pb/rpc_create_payment.pbjson.dart new file mode 100644 index 0000000..ffe63b1 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_payment.pbjson.dart @@ -0,0 +1,71 @@ +// +// Generated code. Do not modify. +// source: rpc_create_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use createPaymentRequestDescriptor instead') +const CreatePaymentRequest$json = { + '1': 'CreatePaymentRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'payment_category', '3': 2, '4': 1, '5': 9, '10': 'paymentCategory'}, + {'1': 'bankname', '3': 3, '4': 1, '5': 9, '9': 0, '10': 'bankname', '17': true}, + {'1': 'IBAN', '3': 4, '4': 1, '5': 9, '9': 1, '10': 'IBAN', '17': true}, + {'1': 'BIC', '3': 5, '4': 1, '5': 9, '9': 2, '10': 'BIC', '17': true}, + {'1': 'paypal_account', '3': 6, '4': 1, '5': 9, '9': 3, '10': 'paypalAccount', '17': true}, + {'1': 'paypal_id', '3': 7, '4': 1, '5': 9, '9': 4, '10': 'paypalId', '17': true}, + {'1': 'payment_system', '3': 8, '4': 1, '5': 9, '9': 5, '10': 'paymentSystem', '17': true}, + {'1': 'type', '3': 9, '4': 1, '5': 9, '10': 'type'}, + ], + '7': {}, + '8': [ + {'1': '_bankname'}, + {'1': '_IBAN'}, + {'1': '_BIC'}, + {'1': '_paypal_account'}, + {'1': '_paypal_id'}, + {'1': '_payment_system'}, + ], +}; + +/// Descriptor for `CreatePaymentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createPaymentRequestDescriptor = $convert.base64Decode( + 'ChRDcmVhdGVQYXltZW50UmVxdWVzdBIdCgphY2NvdW50X2lkGAEgASgEUglhY2NvdW50SWQSKQ' + 'oQcGF5bWVudF9jYXRlZ29yeRgCIAEoCVIPcGF5bWVudENhdGVnb3J5Eh8KCGJhbmtuYW1lGAMg' + 'ASgJSABSCGJhbmtuYW1liAEBEhcKBElCQU4YBCABKAlIAVIESUJBTogBARIVCgNCSUMYBSABKA' + 'lIAlIDQklDiAEBEioKDnBheXBhbF9hY2NvdW50GAYgASgJSANSDXBheXBhbEFjY291bnSIAQES' + 'IAoJcGF5cGFsX2lkGAcgASgJSARSCHBheXBhbElkiAEBEioKDnBheW1lbnRfc3lzdGVtGAggAS' + 'gJSAVSDXBheW1lbnRTeXN0ZW2IAQESEgoEdHlwZRgJIAEoCVIEdHlwZTqZApJBlQIKSioOQ3Jl' + 'YXRlIFBheW1lbnQyEUNyZWF0ZSBhbiBQYXltZW500gEKYWNjb3VudF9pZNIBEHBheW1lbnRfY2' + 'F0ZWdvcnnSAQR0eXBlMsYBeyJhY2NvdW50X2lkIjogIjEiLCAicGF5bWVudF9jYXRlZ29yeSI6' + 'ICJUQkQ6IHBheXBhbCIsICJwYXlwYWxfYWNjb3VudCI6ICJqb2huLmRvZUBleGFtcGxlLmNvbS' + 'IsICJwYXlwYWxfaWQiOiAidGhpcy1pcy1hLXBheXBhbC1pZCIsICJwYXltZW50X3N5c3RlbSI6' + 'ICJUQkQ6IHBheXBhbCBzeXN0ZW0iLCAidHlwZSI6ICJUQkQ6IHNvbWUgdHlwZSJ9QgsKCV9iYW' + '5rbmFtZUIHCgVfSUJBTkIGCgRfQklDQhEKD19wYXlwYWxfYWNjb3VudEIMCgpfcGF5cGFsX2lk' + 'QhEKD19wYXltZW50X3N5c3RlbQ=='); + +@$core.Deprecated('Use createPaymentResponseDescriptor instead') +const CreatePaymentResponse$json = { + '1': 'CreatePaymentResponse', + '2': [ + {'1': 'payment', '3': 1, '4': 1, '5': 11, '6': '.pb.Payment', '8': {}, '10': 'payment'}, + ], + '7': {}, +}; + +/// Descriptor for `CreatePaymentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createPaymentResponseDescriptor = $convert.base64Decode( + 'ChVDcmVhdGVQYXltZW50UmVzcG9uc2USKgoHcGF5bWVudBgBIAEoCzILLnBiLlBheW1lbnRCA5' + 'JBAFIHcGF5bWVudDozkkEwCi4qD0NyZWF0ZWQgUGF5bWVudDIbUmV0dXJucyB0aGUgY3JlYXRl' + 'ZCBQYXltZW50'); + diff --git a/frontend/app/lib/pb/rpc_create_person.pb.dart b/frontend/app/lib/pb/rpc_create_person.pb.dart new file mode 100644 index 0000000..3e165d4 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_person.pb.dart @@ -0,0 +1,224 @@ +// +// Generated code. Do not modify. +// source: rpc_create_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; +import 'person.pb.dart' as $31; + +class CreatePersonRequest extends $pb.GeneratedMessage { + factory CreatePersonRequest({ + $fixnum.Int64? accountId, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $27.Timestamp? birthday, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (birthday != null) { + $result.birthday = birthday; + } + return $result; + } + CreatePersonRequest._() : super(); + factory CreatePersonRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreatePersonRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreatePersonRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'firstname') + ..aOS(3, _omitFieldNames ? '' : 'lastname') + ..aOS(4, _omitFieldNames ? '' : 'street') + ..aOS(5, _omitFieldNames ? '' : 'city') + ..aOS(6, _omitFieldNames ? '' : 'zip') + ..aOS(7, _omitFieldNames ? '' : 'country') + ..aOM<$27.Timestamp>(8, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreatePersonRequest clone() => CreatePersonRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreatePersonRequest copyWith(void Function(CreatePersonRequest) updates) => super.copyWith((message) => updates(message as CreatePersonRequest)) as CreatePersonRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreatePersonRequest create() => CreatePersonRequest._(); + CreatePersonRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreatePersonRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreatePersonRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get firstname => $_getSZ(1); + @$pb.TagNumber(2) + set firstname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasFirstname() => $_has(1); + @$pb.TagNumber(2) + void clearFirstname() => clearField(2); + + @$pb.TagNumber(3) + $core.String get lastname => $_getSZ(2); + @$pb.TagNumber(3) + set lastname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasLastname() => $_has(2); + @$pb.TagNumber(3) + void clearLastname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get street => $_getSZ(3); + @$pb.TagNumber(4) + set street($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasStreet() => $_has(3); + @$pb.TagNumber(4) + void clearStreet() => clearField(4); + + @$pb.TagNumber(5) + $core.String get city => $_getSZ(4); + @$pb.TagNumber(5) + set city($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasCity() => $_has(4); + @$pb.TagNumber(5) + void clearCity() => clearField(5); + + @$pb.TagNumber(6) + $core.String get zip => $_getSZ(5); + @$pb.TagNumber(6) + set zip($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasZip() => $_has(5); + @$pb.TagNumber(6) + void clearZip() => clearField(6); + + @$pb.TagNumber(7) + $core.String get country => $_getSZ(6); + @$pb.TagNumber(7) + set country($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasCountry() => $_has(6); + @$pb.TagNumber(7) + void clearCountry() => clearField(7); + + @$pb.TagNumber(8) + $27.Timestamp get birthday => $_getN(7); + @$pb.TagNumber(8) + set birthday($27.Timestamp v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasBirthday() => $_has(7); + @$pb.TagNumber(8) + void clearBirthday() => clearField(8); + @$pb.TagNumber(8) + $27.Timestamp ensureBirthday() => $_ensure(7); +} + +class CreatePersonResponse extends $pb.GeneratedMessage { + factory CreatePersonResponse({ + $31.Person? person, + }) { + final $result = create(); + if (person != null) { + $result.person = person; + } + return $result; + } + CreatePersonResponse._() : super(); + factory CreatePersonResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory CreatePersonResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CreatePersonResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$31.Person>(1, _omitFieldNames ? '' : 'person', subBuilder: $31.Person.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + CreatePersonResponse clone() => CreatePersonResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + CreatePersonResponse copyWith(void Function(CreatePersonResponse) updates) => super.copyWith((message) => updates(message as CreatePersonResponse)) as CreatePersonResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static CreatePersonResponse create() => CreatePersonResponse._(); + CreatePersonResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static CreatePersonResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static CreatePersonResponse? _defaultInstance; + + @$pb.TagNumber(1) + $31.Person get person => $_getN(0); + @$pb.TagNumber(1) + set person($31.Person v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPerson() => $_has(0); + @$pb.TagNumber(1) + void clearPerson() => clearField(1); + @$pb.TagNumber(1) + $31.Person ensurePerson() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_create_person.pbenum.dart b/frontend/app/lib/pb/rpc_create_person.pbenum.dart new file mode 100644 index 0000000..3af5c20 --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_person.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_create_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_create_person.pbjson.dart b/frontend/app/lib/pb/rpc_create_person.pbjson.dart new file mode 100644 index 0000000..5f7b61b --- /dev/null +++ b/frontend/app/lib/pb/rpc_create_person.pbjson.dart @@ -0,0 +1,60 @@ +// +// Generated code. Do not modify. +// source: rpc_create_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use createPersonRequestDescriptor instead') +const CreatePersonRequest$json = { + '1': 'CreatePersonRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'firstname', '3': 2, '4': 1, '5': 9, '10': 'firstname'}, + {'1': 'lastname', '3': 3, '4': 1, '5': 9, '10': 'lastname'}, + {'1': 'street', '3': 4, '4': 1, '5': 9, '10': 'street'}, + {'1': 'city', '3': 5, '4': 1, '5': 9, '10': 'city'}, + {'1': 'zip', '3': 6, '4': 1, '5': 9, '10': 'zip'}, + {'1': 'country', '3': 7, '4': 1, '5': 9, '10': 'country'}, + {'1': 'birthday', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'birthday'}, + ], + '7': {}, +}; + +/// Descriptor for `CreatePersonRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createPersonRequestDescriptor = $convert.base64Decode( + 'ChNDcmVhdGVQZXJzb25SZXF1ZXN0Eh0KCmFjY291bnRfaWQYASABKARSCWFjY291bnRJZBIcCg' + 'lmaXJzdG5hbWUYAiABKAlSCWZpcnN0bmFtZRIaCghsYXN0bmFtZRgDIAEoCVIIbGFzdG5hbWUS' + 'FgoGc3RyZWV0GAQgASgJUgZzdHJlZXQSEgoEY2l0eRgFIAEoCVIEY2l0eRIQCgN6aXAYBiABKA' + 'lSA3ppcBIYCgdjb3VudHJ5GAcgASgJUgdjb3VudHJ5ElMKCGJpcnRoZGF5GAggASgLMhouZ29v' + 'Z2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYShYiMTk5MC0xMC0wNVQwMDowMDowMFoiUghiaX' + 'J0aGRheTqpApJBpQIKcCoNQ3JlYXRlIFBlcnNvbjIQQ3JlYXRlIGFuIFBlcnNvbtIBCmFjY291' + 'bnRfaWTSAQlmaXJzdG5hbWXSAQhsYXN0bmFtZdIBBnN0cmVldNIBBGNpdHnSAQN6aXDSAQdjb3' + 'VudHJ50gEIYmlydGhkYXkysAF7ICJhY2NvdW50X2lkIjogIjEiLCAiZmlyc3RuYW1lIjogIkpv' + 'aG4iLCAibGFzdG5hbWUiOiAiRG9lIiwgInN0cmVldCI6ICJNYWluIFN0cmVldCAxIiwgInppcC' + 'I6ICIwODE1IiwgImNpdHkiOiAiTmV3IFlvcmsiLCAiY291bnRyeSI6ICJVU0EiLCAiYmlydGhk' + 'YXkiOiAiMTk5MC0xMC0wNVQwMDowMDowMFoifQ=='); + +@$core.Deprecated('Use createPersonResponseDescriptor instead') +const CreatePersonResponse$json = { + '1': 'CreatePersonResponse', + '2': [ + {'1': 'person', '3': 1, '4': 1, '5': 11, '6': '.pb.Person', '8': {}, '10': 'person'}, + ], + '7': {}, +}; + +/// Descriptor for `CreatePersonResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List createPersonResponseDescriptor = $convert.base64Decode( + 'ChRDcmVhdGVQZXJzb25SZXNwb25zZRInCgZwZXJzb24YASABKAsyCi5wYi5QZXJzb25CA5JBAF' + 'IGcGVyc29uOjGSQS4KLCoOQ3JlYXRlZCBQZXJzb24yGlJldHVybnMgdGhlIGNyZWF0ZWQgUGVy' + 'c29u'); + diff --git a/frontend/app/lib/pb/rpc_delete_document.pb.dart b/frontend/app/lib/pb/rpc_delete_document.pb.dart new file mode 100644 index 0000000..b471494 --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_document.pb.dart @@ -0,0 +1,133 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +class DeleteDocumentRequest extends $pb.GeneratedMessage { + factory DeleteDocumentRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + DeleteDocumentRequest._() : super(); + factory DeleteDocumentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeleteDocumentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeleteDocumentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeleteDocumentRequest clone() => DeleteDocumentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeleteDocumentRequest copyWith(void Function(DeleteDocumentRequest) updates) => super.copyWith((message) => updates(message as DeleteDocumentRequest)) as DeleteDocumentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeleteDocumentRequest create() => DeleteDocumentRequest._(); + DeleteDocumentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeleteDocumentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeleteDocumentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class DeleteDocumentResponse extends $pb.GeneratedMessage { + factory DeleteDocumentResponse({ + $fixnum.Int64? id, + $core.bool? deleted, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (deleted != null) { + $result.deleted = deleted; + } + return $result; + } + DeleteDocumentResponse._() : super(); + factory DeleteDocumentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeleteDocumentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeleteDocumentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOB(2, _omitFieldNames ? '' : 'deleted') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeleteDocumentResponse clone() => DeleteDocumentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeleteDocumentResponse copyWith(void Function(DeleteDocumentResponse) updates) => super.copyWith((message) => updates(message as DeleteDocumentResponse)) as DeleteDocumentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeleteDocumentResponse create() => DeleteDocumentResponse._(); + DeleteDocumentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeleteDocumentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeleteDocumentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get deleted => $_getBF(1); + @$pb.TagNumber(2) + set deleted($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasDeleted() => $_has(1); + @$pb.TagNumber(2) + void clearDeleted() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_delete_document.pbenum.dart b/frontend/app/lib/pb/rpc_delete_document.pbenum.dart new file mode 100644 index 0000000..56c8377 --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_document.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_delete_document.pbjson.dart b/frontend/app/lib/pb/rpc_delete_document.pbjson.dart new file mode 100644 index 0000000..35c319c --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_document.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use deleteDocumentRequestDescriptor instead') +const DeleteDocumentRequest$json = { + '1': 'DeleteDocumentRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `DeleteDocumentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deleteDocumentRequestDescriptor = $convert.base64Decode( + 'ChVEZWxldGVEb2N1bWVudFJlcXVlc3QSDgoCaWQYASABKARSAmlkOjuSQTgKKSoPRGVsZXRlIE' + 'RvY3VtZW50MhFEZWxldGUgYSBEb2N1bWVudNIBAmlkMgt7ImlkIjogIjEifQ=='); + +@$core.Deprecated('Use deleteDocumentResponseDescriptor instead') +const DeleteDocumentResponse$json = { + '1': 'DeleteDocumentResponse', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'deleted', '3': 2, '4': 1, '5': 8, '10': 'deleted'}, + ], + '7': {}, +}; + +/// Descriptor for `DeleteDocumentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deleteDocumentResponseDescriptor = $convert.base64Decode( + 'ChZEZWxldGVEb2N1bWVudFJlc3BvbnNlEg4KAmlkGAEgASgEUgJpZBIYCgdkZWxldGVkGAIgAS' + 'gIUgdkZWxldGVkOj2SQToKGioYRGVsZXRlIERvY3VtZW50IFJlc3BvbnNlMhx7ImlkIjogIjEi' + 'LCAiZGVsZXRlZCI6IHRydWV9'); + diff --git a/frontend/app/lib/pb/rpc_delete_payment.pb.dart b/frontend/app/lib/pb/rpc_delete_payment.pb.dart new file mode 100644 index 0000000..62cdcac --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_payment.pb.dart @@ -0,0 +1,133 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +class DeletePaymentRequest extends $pb.GeneratedMessage { + factory DeletePaymentRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + DeletePaymentRequest._() : super(); + factory DeletePaymentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeletePaymentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeletePaymentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeletePaymentRequest clone() => DeletePaymentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeletePaymentRequest copyWith(void Function(DeletePaymentRequest) updates) => super.copyWith((message) => updates(message as DeletePaymentRequest)) as DeletePaymentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeletePaymentRequest create() => DeletePaymentRequest._(); + DeletePaymentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeletePaymentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeletePaymentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class DeletePaymentResponse extends $pb.GeneratedMessage { + factory DeletePaymentResponse({ + $fixnum.Int64? id, + $core.bool? deleted, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (deleted != null) { + $result.deleted = deleted; + } + return $result; + } + DeletePaymentResponse._() : super(); + factory DeletePaymentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeletePaymentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeletePaymentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOB(2, _omitFieldNames ? '' : 'deleted') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeletePaymentResponse clone() => DeletePaymentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeletePaymentResponse copyWith(void Function(DeletePaymentResponse) updates) => super.copyWith((message) => updates(message as DeletePaymentResponse)) as DeletePaymentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeletePaymentResponse create() => DeletePaymentResponse._(); + DeletePaymentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeletePaymentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeletePaymentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get deleted => $_getBF(1); + @$pb.TagNumber(2) + set deleted($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasDeleted() => $_has(1); + @$pb.TagNumber(2) + void clearDeleted() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_delete_payment.pbenum.dart b/frontend/app/lib/pb/rpc_delete_payment.pbenum.dart new file mode 100644 index 0000000..13f3a74 --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_payment.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_delete_payment.pbjson.dart b/frontend/app/lib/pb/rpc_delete_payment.pbjson.dart new file mode 100644 index 0000000..5571a0f --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_payment.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use deletePaymentRequestDescriptor instead') +const DeletePaymentRequest$json = { + '1': 'DeletePaymentRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `DeletePaymentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deletePaymentRequestDescriptor = $convert.base64Decode( + 'ChREZWxldGVQYXltZW50UmVxdWVzdBIOCgJpZBgBIAEoBFICaWQ6OZJBNgonKg5EZWxldGUgUG' + 'F5bWVudDIQRGVsZXRlIGEgUGF5bWVudNIBAmlkMgt7ImlkIjogIjEifQ=='); + +@$core.Deprecated('Use deletePaymentResponseDescriptor instead') +const DeletePaymentResponse$json = { + '1': 'DeletePaymentResponse', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'deleted', '3': 2, '4': 1, '5': 8, '10': 'deleted'}, + ], + '7': {}, +}; + +/// Descriptor for `DeletePaymentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deletePaymentResponseDescriptor = $convert.base64Decode( + 'ChVEZWxldGVQYXltZW50UmVzcG9uc2USDgoCaWQYASABKARSAmlkEhgKB2RlbGV0ZWQYAiABKA' + 'hSB2RlbGV0ZWQ6PJJBOQoZKhdEZWxldGUgUGF5bWVudCBSZXNwb25zZTIceyJpZCI6ICIxIiwg' + 'ImRlbGV0ZWQiOiB0cnVlfQ=='); + diff --git a/frontend/app/lib/pb/rpc_delete_person.pb.dart b/frontend/app/lib/pb/rpc_delete_person.pb.dart new file mode 100644 index 0000000..693d2a0 --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_person.pb.dart @@ -0,0 +1,133 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +class DeletePersonRequest extends $pb.GeneratedMessage { + factory DeletePersonRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + DeletePersonRequest._() : super(); + factory DeletePersonRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeletePersonRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeletePersonRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeletePersonRequest clone() => DeletePersonRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeletePersonRequest copyWith(void Function(DeletePersonRequest) updates) => super.copyWith((message) => updates(message as DeletePersonRequest)) as DeletePersonRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeletePersonRequest create() => DeletePersonRequest._(); + DeletePersonRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeletePersonRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeletePersonRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class DeletePersonResponse extends $pb.GeneratedMessage { + factory DeletePersonResponse({ + $fixnum.Int64? id, + $core.bool? deleted, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (deleted != null) { + $result.deleted = deleted; + } + return $result; + } + DeletePersonResponse._() : super(); + factory DeletePersonResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeletePersonResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeletePersonResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOB(2, _omitFieldNames ? '' : 'deleted') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeletePersonResponse clone() => DeletePersonResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeletePersonResponse copyWith(void Function(DeletePersonResponse) updates) => super.copyWith((message) => updates(message as DeletePersonResponse)) as DeletePersonResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeletePersonResponse create() => DeletePersonResponse._(); + DeletePersonResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeletePersonResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeletePersonResponse? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get deleted => $_getBF(1); + @$pb.TagNumber(2) + set deleted($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasDeleted() => $_has(1); + @$pb.TagNumber(2) + void clearDeleted() => clearField(2); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_delete_person.pbenum.dart b/frontend/app/lib/pb/rpc_delete_person.pbenum.dart new file mode 100644 index 0000000..9425fb1 --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_person.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_delete_person.pbjson.dart b/frontend/app/lib/pb/rpc_delete_person.pbjson.dart new file mode 100644 index 0000000..d77eafe --- /dev/null +++ b/frontend/app/lib/pb/rpc_delete_person.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_delete_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use deletePersonRequestDescriptor instead') +const DeletePersonRequest$json = { + '1': 'DeletePersonRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `DeletePersonRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deletePersonRequestDescriptor = $convert.base64Decode( + 'ChNEZWxldGVQZXJzb25SZXF1ZXN0Eg4KAmlkGAEgASgEUgJpZDo3kkE0CiUqDURlbGV0ZSBQZX' + 'Jzb24yD0RlbGV0ZSBhIFBlcnNvbtIBAmlkMgt7ImlkIjogIjEifQ=='); + +@$core.Deprecated('Use deletePersonResponseDescriptor instead') +const DeletePersonResponse$json = { + '1': 'DeletePersonResponse', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'deleted', '3': 2, '4': 1, '5': 8, '10': 'deleted'}, + ], + '7': {}, +}; + +/// Descriptor for `DeletePersonResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deletePersonResponseDescriptor = $convert.base64Decode( + 'ChREZWxldGVQZXJzb25SZXNwb25zZRIOCgJpZBgBIAEoBFICaWQSGAoHZGVsZXRlZBgCIAEoCF' + 'IHZGVsZXRlZDo7kkE4ChgqFkRlbGV0ZSBQZXJzb24gUmVzcG9uc2UyHHsiaWQiOiAiMSIsICJk' + 'ZWxldGVkIjogdHJ1ZX0='); + diff --git a/frontend/app/lib/pb/rpc_get_account.pb.dart b/frontend/app/lib/pb/rpc_get_account.pb.dart new file mode 100644 index 0000000..ab7db4c --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account.pb.dart @@ -0,0 +1,123 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account.pb.dart' as $29; + +class GetAccountRequest extends $pb.GeneratedMessage { + factory GetAccountRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + GetAccountRequest._() : super(); + factory GetAccountRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetAccountRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetAccountRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetAccountRequest clone() => GetAccountRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetAccountRequest copyWith(void Function(GetAccountRequest) updates) => super.copyWith((message) => updates(message as GetAccountRequest)) as GetAccountRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetAccountRequest create() => GetAccountRequest._(); + GetAccountRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetAccountRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetAccountRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class GetAccountResponse extends $pb.GeneratedMessage { + factory GetAccountResponse({ + $29.Account? account, + }) { + final $result = create(); + if (account != null) { + $result.account = account; + } + return $result; + } + GetAccountResponse._() : super(); + factory GetAccountResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetAccountResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetAccountResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$29.Account>(1, _omitFieldNames ? '' : 'account', subBuilder: $29.Account.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetAccountResponse clone() => GetAccountResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetAccountResponse copyWith(void Function(GetAccountResponse) updates) => super.copyWith((message) => updates(message as GetAccountResponse)) as GetAccountResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetAccountResponse create() => GetAccountResponse._(); + GetAccountResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetAccountResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetAccountResponse? _defaultInstance; + + @$pb.TagNumber(1) + $29.Account get account => $_getN(0); + @$pb.TagNumber(1) + set account($29.Account v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccount() => $_has(0); + @$pb.TagNumber(1) + void clearAccount() => clearField(1); + @$pb.TagNumber(1) + $29.Account ensureAccount() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_get_account.pbenum.dart b/frontend/app/lib/pb/rpc_get_account.pbenum.dart new file mode 100644 index 0000000..0292510 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_get_account.pbjson.dart b/frontend/app/lib/pb/rpc_get_account.pbjson.dart new file mode 100644 index 0000000..bf5309a --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account.pbjson.dart @@ -0,0 +1,44 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use getAccountRequestDescriptor instead') +const GetAccountRequest$json = { + '1': 'GetAccountRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `GetAccountRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getAccountRequestDescriptor = $convert.base64Decode( + 'ChFHZXRBY2NvdW50UmVxdWVzdBIOCgJpZBgBIAEoBFICaWQ6Q5JBQAowKgpHZXRBY2NvdW50Mh' + '1HZXQgQWNjb3VudEluZm8gYnkgYWNjb3VudF9pZNIBAmlkMgx7ImlkIjogIjEiIH0='); + +@$core.Deprecated('Use getAccountResponseDescriptor instead') +const GetAccountResponse$json = { + '1': 'GetAccountResponse', + '2': [ + {'1': 'account', '3': 1, '4': 1, '5': 11, '6': '.pb.Account', '8': {}, '10': 'account'}, + ], + '7': {}, +}; + +/// Descriptor for `GetAccountResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getAccountResponseDescriptor = $convert.base64Decode( + 'ChJHZXRBY2NvdW50UmVzcG9uc2USKgoHYWNjb3VudBgBIAEoCzILLnBiLkFjY291bnRCA5JBAF' + 'IHYWNjb3VudDozkkEwCi4qE0dldEFjY291bnQgUmVzcG9uc2UyF1JldHVybnMgdGhlIEFjY291' + 'bnRJbmZv'); + diff --git a/frontend/app/lib/pb/rpc_get_account_info.pb.dart b/frontend/app/lib/pb/rpc_get_account_info.pb.dart new file mode 100644 index 0000000..92c48f9 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account_info.pb.dart @@ -0,0 +1,123 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account_info.pb.dart' as $28; + +class GetAccountInfoRequest extends $pb.GeneratedMessage { + factory GetAccountInfoRequest({ + $fixnum.Int64? accountId, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + return $result; + } + GetAccountInfoRequest._() : super(); + factory GetAccountInfoRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetAccountInfoRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetAccountInfoRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetAccountInfoRequest clone() => GetAccountInfoRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetAccountInfoRequest copyWith(void Function(GetAccountInfoRequest) updates) => super.copyWith((message) => updates(message as GetAccountInfoRequest)) as GetAccountInfoRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetAccountInfoRequest create() => GetAccountInfoRequest._(); + GetAccountInfoRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetAccountInfoRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetAccountInfoRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); +} + +class GetAccountInfoResponse extends $pb.GeneratedMessage { + factory GetAccountInfoResponse({ + $28.AccountInfo? accountInfo, + }) { + final $result = create(); + if (accountInfo != null) { + $result.accountInfo = accountInfo; + } + return $result; + } + GetAccountInfoResponse._() : super(); + factory GetAccountInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetAccountInfoResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetAccountInfoResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$28.AccountInfo>(1, _omitFieldNames ? '' : 'accountInfo', subBuilder: $28.AccountInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetAccountInfoResponse clone() => GetAccountInfoResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetAccountInfoResponse copyWith(void Function(GetAccountInfoResponse) updates) => super.copyWith((message) => updates(message as GetAccountInfoResponse)) as GetAccountInfoResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetAccountInfoResponse create() => GetAccountInfoResponse._(); + GetAccountInfoResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetAccountInfoResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetAccountInfoResponse? _defaultInstance; + + @$pb.TagNumber(1) + $28.AccountInfo get accountInfo => $_getN(0); + @$pb.TagNumber(1) + set accountInfo($28.AccountInfo v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccountInfo() => $_has(0); + @$pb.TagNumber(1) + void clearAccountInfo() => clearField(1); + @$pb.TagNumber(1) + $28.AccountInfo ensureAccountInfo() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_get_account_info.pbenum.dart b/frontend/app/lib/pb/rpc_get_account_info.pbenum.dart new file mode 100644 index 0000000..2a2b0b3 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account_info.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_get_account_info.pbjson.dart b/frontend/app/lib/pb/rpc_get_account_info.pbjson.dart new file mode 100644 index 0000000..1d19aec --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_account_info.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_get_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use getAccountInfoRequestDescriptor instead') +const GetAccountInfoRequest$json = { + '1': 'GetAccountInfoRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + ], + '7': {}, +}; + +/// Descriptor for `GetAccountInfoRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getAccountInfoRequestDescriptor = $convert.base64Decode( + 'ChVHZXRBY2NvdW50SW5mb1JlcXVlc3QSHQoKYWNjb3VudF9pZBgBIAEoBFIJYWNjb3VudElkOl' + 'eSQVQKPCoOR2V0QWNjb3VudEluZm8yHUdldCBBY2NvdW50SW5mbyBieSBhY2NvdW50X2lk0gEK' + 'YWNjb3VudF9pZDIUeyJhY2NvdW50X2lkIjogIjEiIH0='); + +@$core.Deprecated('Use getAccountInfoResponseDescriptor instead') +const GetAccountInfoResponse$json = { + '1': 'GetAccountInfoResponse', + '2': [ + {'1': 'account_info', '3': 1, '4': 1, '5': 11, '6': '.pb.AccountInfo', '8': {}, '10': 'accountInfo'}, + ], + '7': {}, +}; + +/// Descriptor for `GetAccountInfoResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getAccountInfoResponseDescriptor = $convert.base64Decode( + 'ChZHZXRBY2NvdW50SW5mb1Jlc3BvbnNlEjcKDGFjY291bnRfaW5mbxgBIAEoCzIPLnBiLkFjY2' + '91bnRJbmZvQgOSQQBSC2FjY291bnRJbmZvOjeSQTQKMioXR2V0QWNjb3VudEluZm8gUmVzcG9u' + 'c2UyF1JldHVybnMgdGhlIEFjY291bnRJbmZv'); + diff --git a/frontend/app/lib/pb/rpc_get_payment.pb.dart b/frontend/app/lib/pb/rpc_get_payment.pb.dart new file mode 100644 index 0000000..65116df --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_payment.pb.dart @@ -0,0 +1,123 @@ +// +// Generated code. Do not modify. +// source: rpc_get_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'payment.pb.dart' as $30; + +class GetPaymentRequest extends $pb.GeneratedMessage { + factory GetPaymentRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + GetPaymentRequest._() : super(); + factory GetPaymentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetPaymentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetPaymentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetPaymentRequest clone() => GetPaymentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetPaymentRequest copyWith(void Function(GetPaymentRequest) updates) => super.copyWith((message) => updates(message as GetPaymentRequest)) as GetPaymentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetPaymentRequest create() => GetPaymentRequest._(); + GetPaymentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetPaymentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetPaymentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class GetPaymentResponse extends $pb.GeneratedMessage { + factory GetPaymentResponse({ + $30.Payment? payment, + }) { + final $result = create(); + if (payment != null) { + $result.payment = payment; + } + return $result; + } + GetPaymentResponse._() : super(); + factory GetPaymentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetPaymentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetPaymentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$30.Payment>(1, _omitFieldNames ? '' : 'payment', subBuilder: $30.Payment.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetPaymentResponse clone() => GetPaymentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetPaymentResponse copyWith(void Function(GetPaymentResponse) updates) => super.copyWith((message) => updates(message as GetPaymentResponse)) as GetPaymentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetPaymentResponse create() => GetPaymentResponse._(); + GetPaymentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetPaymentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetPaymentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $30.Payment get payment => $_getN(0); + @$pb.TagNumber(1) + set payment($30.Payment v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPayment() => $_has(0); + @$pb.TagNumber(1) + void clearPayment() => clearField(1); + @$pb.TagNumber(1) + $30.Payment ensurePayment() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_get_payment.pbenum.dart b/frontend/app/lib/pb/rpc_get_payment.pbenum.dart new file mode 100644 index 0000000..cfd3cde --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_payment.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_get_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_get_payment.pbjson.dart b/frontend/app/lib/pb/rpc_get_payment.pbjson.dart new file mode 100644 index 0000000..d43eb5d --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_payment.pbjson.dart @@ -0,0 +1,44 @@ +// +// Generated code. Do not modify. +// source: rpc_get_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use getPaymentRequestDescriptor instead') +const GetPaymentRequest$json = { + '1': 'GetPaymentRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `GetPaymentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getPaymentRequestDescriptor = $convert.base64Decode( + 'ChFHZXRQYXltZW50UmVxdWVzdBIOCgJpZBgBIAEoBFICaWQ6OpJBNwonKgpHZXRQYXltZW50Mh' + 'RHZXQgYW4gUGF5bWVudCBieSBJRNIBAmlkMgx7ImlkIjogIjEiIH0='); + +@$core.Deprecated('Use getPaymentResponseDescriptor instead') +const GetPaymentResponse$json = { + '1': 'GetPaymentResponse', + '2': [ + {'1': 'payment', '3': 1, '4': 1, '5': 11, '6': '.pb.Payment', '8': {}, '10': 'payment'}, + ], + '7': {}, +}; + +/// Descriptor for `GetPaymentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getPaymentResponseDescriptor = $convert.base64Decode( + 'ChJHZXRQYXltZW50UmVzcG9uc2USKgoHcGF5bWVudBgBIAEoCzILLnBiLlBheW1lbnRCA5JBAF' + 'IHcGF5bWVudDovkkEsCioqE0dldFBheW1lbnQgUmVzcG9uc2UyE1JldHVybnMgdGhlIFBheW1l' + 'bnQ='); + diff --git a/frontend/app/lib/pb/rpc_get_person.pb.dart b/frontend/app/lib/pb/rpc_get_person.pb.dart new file mode 100644 index 0000000..153be84 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_person.pb.dart @@ -0,0 +1,123 @@ +// +// Generated code. Do not modify. +// source: rpc_get_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'person.pb.dart' as $31; + +class GetPersonRequest extends $pb.GeneratedMessage { + factory GetPersonRequest({ + $fixnum.Int64? id, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + return $result; + } + GetPersonRequest._() : super(); + factory GetPersonRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetPersonRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetPersonRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetPersonRequest clone() => GetPersonRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetPersonRequest copyWith(void Function(GetPersonRequest) updates) => super.copyWith((message) => updates(message as GetPersonRequest)) as GetPersonRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetPersonRequest create() => GetPersonRequest._(); + GetPersonRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetPersonRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetPersonRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); +} + +class GetPersonResponse extends $pb.GeneratedMessage { + factory GetPersonResponse({ + $31.Person? person, + }) { + final $result = create(); + if (person != null) { + $result.person = person; + } + return $result; + } + GetPersonResponse._() : super(); + factory GetPersonResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetPersonResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetPersonResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$31.Person>(1, _omitFieldNames ? '' : 'person', subBuilder: $31.Person.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetPersonResponse clone() => GetPersonResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetPersonResponse copyWith(void Function(GetPersonResponse) updates) => super.copyWith((message) => updates(message as GetPersonResponse)) as GetPersonResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetPersonResponse create() => GetPersonResponse._(); + GetPersonResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetPersonResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetPersonResponse? _defaultInstance; + + @$pb.TagNumber(1) + $31.Person get person => $_getN(0); + @$pb.TagNumber(1) + set person($31.Person v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPerson() => $_has(0); + @$pb.TagNumber(1) + void clearPerson() => clearField(1); + @$pb.TagNumber(1) + $31.Person ensurePerson() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_get_person.pbenum.dart b/frontend/app/lib/pb/rpc_get_person.pbenum.dart new file mode 100644 index 0000000..5912e89 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_person.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_get_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_get_person.pbjson.dart b/frontend/app/lib/pb/rpc_get_person.pbjson.dart new file mode 100644 index 0000000..25ecf45 --- /dev/null +++ b/frontend/app/lib/pb/rpc_get_person.pbjson.dart @@ -0,0 +1,43 @@ +// +// Generated code. Do not modify. +// source: rpc_get_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use getPersonRequestDescriptor instead') +const GetPersonRequest$json = { + '1': 'GetPersonRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + ], + '7': {}, +}; + +/// Descriptor for `GetPersonRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getPersonRequestDescriptor = $convert.base64Decode( + 'ChBHZXRQZXJzb25SZXF1ZXN0Eg4KAmlkGAEgASgEUgJpZDo4kkE1CiUqCUdldFBlcnNvbjITR2' + 'V0IGFuIFBlcnNvbiBieSBJRNIBAmlkMgx7ImlkIjogIjEiIH0='); + +@$core.Deprecated('Use getPersonResponseDescriptor instead') +const GetPersonResponse$json = { + '1': 'GetPersonResponse', + '2': [ + {'1': 'person', '3': 1, '4': 1, '5': 11, '6': '.pb.Person', '8': {}, '10': 'person'}, + ], + '7': {}, +}; + +/// Descriptor for `GetPersonResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getPersonResponseDescriptor = $convert.base64Decode( + 'ChFHZXRQZXJzb25SZXNwb25zZRInCgZwZXJzb24YASABKAsyCi5wYi5QZXJzb25CA5JBAFIGcG' + 'Vyc29uOi2SQSoKKCoSR2V0UGVyc29uIFJlc3BvbnNlMhJSZXR1cm5zIHRoZSBQZXJzb24='); + diff --git a/frontend/app/lib/pb/rpc_list_account_info.pb.dart b/frontend/app/lib/pb/rpc_list_account_info.pb.dart new file mode 100644 index 0000000..26e2431 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_account_info.pb.dart @@ -0,0 +1,128 @@ +// +// Generated code. Do not modify. +// source: rpc_list_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account_info.pb.dart' as $28; + +class ListAccountInfoRequest extends $pb.GeneratedMessage { + factory ListAccountInfoRequest({ + $core.int? pageId, + $core.int? pageSize, + }) { + final $result = create(); + if (pageId != null) { + $result.pageId = pageId; + } + if (pageSize != null) { + $result.pageSize = pageSize; + } + return $result; + } + ListAccountInfoRequest._() : super(); + factory ListAccountInfoRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListAccountInfoRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListAccountInfoRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'pageId', $pb.PbFieldType.OU3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'pageSize', $pb.PbFieldType.OU3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListAccountInfoRequest clone() => ListAccountInfoRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListAccountInfoRequest copyWith(void Function(ListAccountInfoRequest) updates) => super.copyWith((message) => updates(message as ListAccountInfoRequest)) as ListAccountInfoRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListAccountInfoRequest create() => ListAccountInfoRequest._(); + ListAccountInfoRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListAccountInfoRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListAccountInfoRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get pageId => $_getIZ(0); + @$pb.TagNumber(1) + set pageId($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasPageId() => $_has(0); + @$pb.TagNumber(1) + void clearPageId() => clearField(1); + + @$pb.TagNumber(2) + $core.int get pageSize => $_getIZ(1); + @$pb.TagNumber(2) + set pageSize($core.int v) { $_setUnsignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasPageSize() => $_has(1); + @$pb.TagNumber(2) + void clearPageSize() => clearField(2); +} + +class ListAccountInfoResponse extends $pb.GeneratedMessage { + factory ListAccountInfoResponse({ + $core.Iterable<$28.AccountInfo>? accountInfo, + }) { + final $result = create(); + if (accountInfo != null) { + $result.accountInfo.addAll(accountInfo); + } + return $result; + } + ListAccountInfoResponse._() : super(); + factory ListAccountInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListAccountInfoResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListAccountInfoResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$28.AccountInfo>(1, _omitFieldNames ? '' : 'accountInfo', $pb.PbFieldType.PM, subBuilder: $28.AccountInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListAccountInfoResponse clone() => ListAccountInfoResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListAccountInfoResponse copyWith(void Function(ListAccountInfoResponse) updates) => super.copyWith((message) => updates(message as ListAccountInfoResponse)) as ListAccountInfoResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListAccountInfoResponse create() => ListAccountInfoResponse._(); + ListAccountInfoResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListAccountInfoResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListAccountInfoResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$28.AccountInfo> get accountInfo => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_account_info.pbenum.dart b/frontend/app/lib/pb/rpc_list_account_info.pbenum.dart new file mode 100644 index 0000000..25f91fb --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_account_info.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_account_info.pbjson.dart b/frontend/app/lib/pb/rpc_list_account_info.pbjson.dart new file mode 100644 index 0000000..6d5c4d3 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_account_info.pbjson.dart @@ -0,0 +1,47 @@ +// +// Generated code. Do not modify. +// source: rpc_list_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listAccountInfoRequestDescriptor instead') +const ListAccountInfoRequest$json = { + '1': 'ListAccountInfoRequest', + '2': [ + {'1': 'page_id', '3': 1, '4': 1, '5': 13, '10': 'pageId'}, + {'1': 'page_size', '3': 2, '4': 1, '5': 13, '10': 'pageSize'}, + ], + '7': {}, +}; + +/// Descriptor for `ListAccountInfoRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listAccountInfoRequestDescriptor = $convert.base64Decode( + 'ChZMaXN0QWNjb3VudEluZm9SZXF1ZXN0EhcKB3BhZ2VfaWQYASABKA1SBnBhZ2VJZBIbCglwYW' + 'dlX3NpemUYAiABKA1SCHBhZ2VTaXplOmqSQWcKQyoPTGlzdEFjY291bnRJbmZvMhpSZXR1cm5z' + 'IGEgTGlzdCBvZiBBY2NvdW50c9IBB3BhZ2VfaWTSAQlwYWdlX3NpemUyIHsicGFnZV9pZCI6ID' + 'EsICJwYWdlX3NpemUiOiAxMCB9'); + +@$core.Deprecated('Use listAccountInfoResponseDescriptor instead') +const ListAccountInfoResponse$json = { + '1': 'ListAccountInfoResponse', + '2': [ + {'1': 'account_info', '3': 1, '4': 3, '5': 11, '6': '.pb.AccountInfo', '8': {}, '10': 'accountInfo'}, + ], + '7': {}, +}; + +/// Descriptor for `ListAccountInfoResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listAccountInfoResponseDescriptor = $convert.base64Decode( + 'ChdMaXN0QWNjb3VudEluZm9SZXNwb25zZRI3CgxhY2NvdW50X2luZm8YASADKAsyDy5wYi5BY2' + 'NvdW50SW5mb0IDkkEAUgthY2NvdW50SW5mbzo4kkE1CjMqGExpc3RBY2NvdW50SW5mbyBSZXNw' + 'b25zZTIXUmV0dXJucyB0aGUgQWNjb3VudEluZm8='); + diff --git a/frontend/app/lib/pb/rpc_list_accounts.pb.dart b/frontend/app/lib/pb/rpc_list_accounts.pb.dart new file mode 100644 index 0000000..341c749 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_accounts.pb.dart @@ -0,0 +1,128 @@ +// +// Generated code. Do not modify. +// source: rpc_list_accounts.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account.pb.dart' as $29; + +class ListAccountsRequest extends $pb.GeneratedMessage { + factory ListAccountsRequest({ + $core.int? pageId, + $core.int? pageSize, + }) { + final $result = create(); + if (pageId != null) { + $result.pageId = pageId; + } + if (pageSize != null) { + $result.pageSize = pageSize; + } + return $result; + } + ListAccountsRequest._() : super(); + factory ListAccountsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListAccountsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListAccountsRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'pageId', $pb.PbFieldType.OU3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'pageSize', $pb.PbFieldType.OU3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListAccountsRequest clone() => ListAccountsRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListAccountsRequest copyWith(void Function(ListAccountsRequest) updates) => super.copyWith((message) => updates(message as ListAccountsRequest)) as ListAccountsRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListAccountsRequest create() => ListAccountsRequest._(); + ListAccountsRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListAccountsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListAccountsRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get pageId => $_getIZ(0); + @$pb.TagNumber(1) + set pageId($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasPageId() => $_has(0); + @$pb.TagNumber(1) + void clearPageId() => clearField(1); + + @$pb.TagNumber(2) + $core.int get pageSize => $_getIZ(1); + @$pb.TagNumber(2) + set pageSize($core.int v) { $_setUnsignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasPageSize() => $_has(1); + @$pb.TagNumber(2) + void clearPageSize() => clearField(2); +} + +class ListAccountsResponse extends $pb.GeneratedMessage { + factory ListAccountsResponse({ + $core.Iterable<$29.Account>? accounts, + }) { + final $result = create(); + if (accounts != null) { + $result.accounts.addAll(accounts); + } + return $result; + } + ListAccountsResponse._() : super(); + factory ListAccountsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListAccountsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListAccountsResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$29.Account>(1, _omitFieldNames ? '' : 'accounts', $pb.PbFieldType.PM, subBuilder: $29.Account.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListAccountsResponse clone() => ListAccountsResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListAccountsResponse copyWith(void Function(ListAccountsResponse) updates) => super.copyWith((message) => updates(message as ListAccountsResponse)) as ListAccountsResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListAccountsResponse create() => ListAccountsResponse._(); + ListAccountsResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListAccountsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListAccountsResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$29.Account> get accounts => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_accounts.pbenum.dart b/frontend/app/lib/pb/rpc_list_accounts.pbenum.dart new file mode 100644 index 0000000..d18fe94 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_accounts.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_accounts.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_accounts.pbjson.dart b/frontend/app/lib/pb/rpc_list_accounts.pbjson.dart new file mode 100644 index 0000000..8617af7 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_accounts.pbjson.dart @@ -0,0 +1,47 @@ +// +// Generated code. Do not modify. +// source: rpc_list_accounts.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listAccountsRequestDescriptor instead') +const ListAccountsRequest$json = { + '1': 'ListAccountsRequest', + '2': [ + {'1': 'page_id', '3': 1, '4': 1, '5': 13, '10': 'pageId'}, + {'1': 'page_size', '3': 2, '4': 1, '5': 13, '10': 'pageSize'}, + ], + '7': {}, +}; + +/// Descriptor for `ListAccountsRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listAccountsRequestDescriptor = $convert.base64Decode( + 'ChNMaXN0QWNjb3VudHNSZXF1ZXN0EhcKB3BhZ2VfaWQYASABKA1SBnBhZ2VJZBIbCglwYWdlX3' + 'NpemUYAiABKA1SCHBhZ2VTaXplOmeSQWQKQCoMTGlzdEFjY291bnRzMhpSZXR1cm5zIGEgTGlz' + 'dCBvZiBBY2NvdW50c9IBB3BhZ2VfaWTSAQlwYWdlX3NpemUyIHsicGFnZV9pZCI6IDEsICJwYW' + 'dlX3NpemUiOiAxMCB9'); + +@$core.Deprecated('Use listAccountsResponseDescriptor instead') +const ListAccountsResponse$json = { + '1': 'ListAccountsResponse', + '2': [ + {'1': 'accounts', '3': 1, '4': 3, '5': 11, '6': '.pb.Account', '8': {}, '10': 'accounts'}, + ], + '7': {}, +}; + +/// Descriptor for `ListAccountsResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listAccountsResponseDescriptor = $convert.base64Decode( + 'ChRMaXN0QWNjb3VudHNSZXNwb25zZRIsCghhY2NvdW50cxgBIAMoCzILLnBiLkFjY291bnRCA5' + 'JBAFIIYWNjb3VudHM6MZJBLgosKhVMaXN0QWNjb3VudHMgUmVzcG9uc2UyE1JldHVybnMgdGhl' + 'IEFjY291bnQ='); + diff --git a/frontend/app/lib/pb/rpc_list_payments.pb.dart b/frontend/app/lib/pb/rpc_list_payments.pb.dart new file mode 100644 index 0000000..2478efc --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_payments.pb.dart @@ -0,0 +1,115 @@ +// +// Generated code. Do not modify. +// source: rpc_list_payments.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'payment.pb.dart' as $30; + +class ListPaymentsRequest extends $pb.GeneratedMessage { + factory ListPaymentsRequest({ + $fixnum.Int64? accountId, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + return $result; + } + ListPaymentsRequest._() : super(); + factory ListPaymentsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListPaymentsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListPaymentsRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListPaymentsRequest clone() => ListPaymentsRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListPaymentsRequest copyWith(void Function(ListPaymentsRequest) updates) => super.copyWith((message) => updates(message as ListPaymentsRequest)) as ListPaymentsRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListPaymentsRequest create() => ListPaymentsRequest._(); + ListPaymentsRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListPaymentsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListPaymentsRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); +} + +class ListPaymentsResponse extends $pb.GeneratedMessage { + factory ListPaymentsResponse({ + $core.Iterable<$30.Payment>? payments, + }) { + final $result = create(); + if (payments != null) { + $result.payments.addAll(payments); + } + return $result; + } + ListPaymentsResponse._() : super(); + factory ListPaymentsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListPaymentsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListPaymentsResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$30.Payment>(1, _omitFieldNames ? '' : 'payments', $pb.PbFieldType.PM, subBuilder: $30.Payment.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListPaymentsResponse clone() => ListPaymentsResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListPaymentsResponse copyWith(void Function(ListPaymentsResponse) updates) => super.copyWith((message) => updates(message as ListPaymentsResponse)) as ListPaymentsResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListPaymentsResponse create() => ListPaymentsResponse._(); + ListPaymentsResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListPaymentsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListPaymentsResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$30.Payment> get payments => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_payments.pbenum.dart b/frontend/app/lib/pb/rpc_list_payments.pbenum.dart new file mode 100644 index 0000000..60975d1 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_payments.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_payments.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_payments.pbjson.dart b/frontend/app/lib/pb/rpc_list_payments.pbjson.dart new file mode 100644 index 0000000..1055398 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_payments.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_list_payments.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listPaymentsRequestDescriptor instead') +const ListPaymentsRequest$json = { + '1': 'ListPaymentsRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + ], + '7': {}, +}; + +/// Descriptor for `ListPaymentsRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listPaymentsRequestDescriptor = $convert.base64Decode( + 'ChNMaXN0UGF5bWVudHNSZXF1ZXN0Eh0KCmFjY291bnRfaWQYASABKARSCWFjY291bnRJZDpQkk' + 'FNCjcqDExpc3RQYXltZW50czIaUmV0dXJucyBhIExpc3Qgb2YgUGF5bWVudHPSAQphY2NvdW50' + 'X2lkMhJ7ImFjY291bnRfaWQiOiAxIH0='); + +@$core.Deprecated('Use listPaymentsResponseDescriptor instead') +const ListPaymentsResponse$json = { + '1': 'ListPaymentsResponse', + '2': [ + {'1': 'payments', '3': 1, '4': 3, '5': 11, '6': '.pb.Payment', '8': {}, '10': 'payments'}, + ], + '7': {}, +}; + +/// Descriptor for `ListPaymentsResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listPaymentsResponseDescriptor = $convert.base64Decode( + 'ChRMaXN0UGF5bWVudHNSZXNwb25zZRIsCghwYXltZW50cxgBIAMoCzILLnBiLlBheW1lbnRCA5' + 'JBAFIIcGF5bWVudHM6MZJBLgosKhVMaXN0UGF5bWVudHMgUmVzcG9uc2UyE1JldHVybnMgdGhl' + 'IFBheW1lbnQ='); + diff --git a/frontend/app/lib/pb/rpc_list_persons.pb.dart b/frontend/app/lib/pb/rpc_list_persons.pb.dart new file mode 100644 index 0000000..fe13d8b --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_persons.pb.dart @@ -0,0 +1,115 @@ +// +// Generated code. Do not modify. +// source: rpc_list_persons.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'person.pb.dart' as $31; + +class ListPersonsRequest extends $pb.GeneratedMessage { + factory ListPersonsRequest({ + $fixnum.Int64? accountId, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + return $result; + } + ListPersonsRequest._() : super(); + factory ListPersonsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListPersonsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListPersonsRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListPersonsRequest clone() => ListPersonsRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListPersonsRequest copyWith(void Function(ListPersonsRequest) updates) => super.copyWith((message) => updates(message as ListPersonsRequest)) as ListPersonsRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListPersonsRequest create() => ListPersonsRequest._(); + ListPersonsRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListPersonsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListPersonsRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); +} + +class ListPersonsResponse extends $pb.GeneratedMessage { + factory ListPersonsResponse({ + $core.Iterable<$31.Person>? persons, + }) { + final $result = create(); + if (persons != null) { + $result.persons.addAll(persons); + } + return $result; + } + ListPersonsResponse._() : super(); + factory ListPersonsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListPersonsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListPersonsResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$31.Person>(1, _omitFieldNames ? '' : 'persons', $pb.PbFieldType.PM, subBuilder: $31.Person.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListPersonsResponse clone() => ListPersonsResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListPersonsResponse copyWith(void Function(ListPersonsResponse) updates) => super.copyWith((message) => updates(message as ListPersonsResponse)) as ListPersonsResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListPersonsResponse create() => ListPersonsResponse._(); + ListPersonsResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListPersonsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListPersonsResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$31.Person> get persons => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_persons.pbenum.dart b/frontend/app/lib/pb/rpc_list_persons.pbenum.dart new file mode 100644 index 0000000..2b664c4 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_persons.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_persons.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_persons.pbjson.dart b/frontend/app/lib/pb/rpc_list_persons.pbjson.dart new file mode 100644 index 0000000..bc10ba9 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_persons.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_list_persons.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listPersonsRequestDescriptor instead') +const ListPersonsRequest$json = { + '1': 'ListPersonsRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + ], + '7': {}, +}; + +/// Descriptor for `ListPersonsRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listPersonsRequestDescriptor = $convert.base64Decode( + 'ChJMaXN0UGVyc29uc1JlcXVlc3QSHQoKYWNjb3VudF9pZBgBIAEoBFIJYWNjb3VudElkOk6SQU' + 'sKNSoLTGlzdFBlcnNvbnMyGVJldHVybnMgYSBMaXN0IG9mIFBlcnNvbnPSAQphY2NvdW50X2lk' + 'MhJ7ImFjY291bnRfaWQiOiAxIH0='); + +@$core.Deprecated('Use listPersonsResponseDescriptor instead') +const ListPersonsResponse$json = { + '1': 'ListPersonsResponse', + '2': [ + {'1': 'persons', '3': 1, '4': 3, '5': 11, '6': '.pb.Person', '8': {}, '10': 'persons'}, + ], + '7': {}, +}; + +/// Descriptor for `ListPersonsResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listPersonsResponseDescriptor = $convert.base64Decode( + 'ChNMaXN0UGVyc29uc1Jlc3BvbnNlEikKB3BlcnNvbnMYASADKAsyCi5wYi5QZXJzb25CA5JBAF' + 'IHcGVyc29uczovkkEsCioqFExpc3RQZXJzb25zIFJlc3BvbnNlMhJSZXR1cm5zIHRoZSBQZXJz' + 'b24='); + diff --git a/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pb.dart b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pb.dart new file mode 100644 index 0000000..90a2f62 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pb.dart @@ -0,0 +1,115 @@ +// +// Generated code. Do not modify. +// source: rpc_list_returns_log_by_person_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'returns_log.pb.dart' as $32; + +class ListReturnsLogRequest extends $pb.GeneratedMessage { + factory ListReturnsLogRequest({ + $fixnum.Int64? personId, + }) { + final $result = create(); + if (personId != null) { + $result.personId = personId; + } + return $result; + } + ListReturnsLogRequest._() : super(); + factory ListReturnsLogRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListReturnsLogRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListReturnsLogRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'personId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListReturnsLogRequest clone() => ListReturnsLogRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListReturnsLogRequest copyWith(void Function(ListReturnsLogRequest) updates) => super.copyWith((message) => updates(message as ListReturnsLogRequest)) as ListReturnsLogRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListReturnsLogRequest create() => ListReturnsLogRequest._(); + ListReturnsLogRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListReturnsLogRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListReturnsLogRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get personId => $_getI64(0); + @$pb.TagNumber(1) + set personId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasPersonId() => $_has(0); + @$pb.TagNumber(1) + void clearPersonId() => clearField(1); +} + +class ListReturnsLogResponse extends $pb.GeneratedMessage { + factory ListReturnsLogResponse({ + $core.Iterable<$32.ReturnsLog>? returnsLog, + }) { + final $result = create(); + if (returnsLog != null) { + $result.returnsLog.addAll(returnsLog); + } + return $result; + } + ListReturnsLogResponse._() : super(); + factory ListReturnsLogResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListReturnsLogResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListReturnsLogResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$32.ReturnsLog>(1, _omitFieldNames ? '' : 'returnsLog', $pb.PbFieldType.PM, subBuilder: $32.ReturnsLog.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListReturnsLogResponse clone() => ListReturnsLogResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListReturnsLogResponse copyWith(void Function(ListReturnsLogResponse) updates) => super.copyWith((message) => updates(message as ListReturnsLogResponse)) as ListReturnsLogResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListReturnsLogResponse create() => ListReturnsLogResponse._(); + ListReturnsLogResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListReturnsLogResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListReturnsLogResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$32.ReturnsLog> get returnsLog => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbenum.dart b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbenum.dart new file mode 100644 index 0000000..4a25147 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_returns_log_by_person_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbjson.dart b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbjson.dart new file mode 100644 index 0000000..925ac54 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_returns_log_by_person_id.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_list_returns_log_by_person_id.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listReturnsLogRequestDescriptor instead') +const ListReturnsLogRequest$json = { + '1': 'ListReturnsLogRequest', + '2': [ + {'1': 'person_id', '3': 1, '4': 1, '5': 4, '10': 'personId'}, + ], + '7': {}, +}; + +/// Descriptor for `ListReturnsLogRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listReturnsLogRequestDescriptor = $convert.base64Decode( + 'ChVMaXN0UmV0dXJuc0xvZ1JlcXVlc3QSGwoJcGVyc29uX2lkGAEgASgEUghwZXJzb25JZDpSkk' + 'FPCjoqDkxpc3RSZXR1cm5zTG9nMhxSZXR1cm5zIGEgTGlzdCBvZiBSZXR1cm5zTG9n0gEJcGVy' + 'c29uX2lkMhF7InBlcnNvbl9pZCI6IDEgfQ=='); + +@$core.Deprecated('Use listReturnsLogResponseDescriptor instead') +const ListReturnsLogResponse$json = { + '1': 'ListReturnsLogResponse', + '2': [ + {'1': 'returns_log', '3': 1, '4': 3, '5': 11, '6': '.pb.ReturnsLog', '8': {}, '10': 'returnsLog'}, + ], + '7': {}, +}; + +/// Descriptor for `ListReturnsLogResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listReturnsLogResponseDescriptor = $convert.base64Decode( + 'ChZMaXN0UmV0dXJuc0xvZ1Jlc3BvbnNlEjQKC3JldHVybnNfbG9nGAEgAygLMg4ucGIuUmV0dX' + 'Juc0xvZ0IDkkEAUgpyZXR1cm5zTG9nOjaSQTMKMSoXTGlzdFJldHVybnNMb2cgUmVzcG9uc2Uy' + 'FlJldHVybnMgdGhlIFJldHVybnNMb2c='); + diff --git a/frontend/app/lib/pb/rpc_list_sessions.pb.dart b/frontend/app/lib/pb/rpc_list_sessions.pb.dart new file mode 100644 index 0000000..1856def --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_sessions.pb.dart @@ -0,0 +1,115 @@ +// +// Generated code. Do not modify. +// source: rpc_list_sessions.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'session.pb.dart' as $33; + +class ListSessionsRequest extends $pb.GeneratedMessage { + factory ListSessionsRequest({ + $fixnum.Int64? accountId, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + return $result; + } + ListSessionsRequest._() : super(); + factory ListSessionsRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListSessionsRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListSessionsRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListSessionsRequest clone() => ListSessionsRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListSessionsRequest copyWith(void Function(ListSessionsRequest) updates) => super.copyWith((message) => updates(message as ListSessionsRequest)) as ListSessionsRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListSessionsRequest create() => ListSessionsRequest._(); + ListSessionsRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListSessionsRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListSessionsRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); +} + +class ListSessionsResponse extends $pb.GeneratedMessage { + factory ListSessionsResponse({ + $core.Iterable<$33.Session>? sessions, + }) { + final $result = create(); + if (sessions != null) { + $result.sessions.addAll(sessions); + } + return $result; + } + ListSessionsResponse._() : super(); + factory ListSessionsResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ListSessionsResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ListSessionsResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..pc<$33.Session>(1, _omitFieldNames ? '' : 'sessions', $pb.PbFieldType.PM, subBuilder: $33.Session.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ListSessionsResponse clone() => ListSessionsResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ListSessionsResponse copyWith(void Function(ListSessionsResponse) updates) => super.copyWith((message) => updates(message as ListSessionsResponse)) as ListSessionsResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ListSessionsResponse create() => ListSessionsResponse._(); + ListSessionsResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ListSessionsResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ListSessionsResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$33.Session> get sessions => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_list_sessions.pbenum.dart b/frontend/app/lib/pb/rpc_list_sessions.pbenum.dart new file mode 100644 index 0000000..1c4fe8a --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_sessions.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_list_sessions.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_list_sessions.pbjson.dart b/frontend/app/lib/pb/rpc_list_sessions.pbjson.dart new file mode 100644 index 0000000..e86eae8 --- /dev/null +++ b/frontend/app/lib/pb/rpc_list_sessions.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: rpc_list_sessions.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use listSessionsRequestDescriptor instead') +const ListSessionsRequest$json = { + '1': 'ListSessionsRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '8': {}, '10': 'accountId'}, + ], + '7': {}, +}; + +/// Descriptor for `ListSessionsRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listSessionsRequestDescriptor = $convert.base64Decode( + 'ChNMaXN0U2Vzc2lvbnNSZXF1ZXN0Ei0KCmFjY291bnRfaWQYASABKARCDpJBC0oBMaICBWludD' + 'Y0UglhY2NvdW50SWQ6UpJBTwo3KgxMaXN0U2Vzc2lvbnMyGlJldHVybnMgYSBMaXN0IG9mIEFj' + 'Y291bnRz0gEKYWNjb3VudF9pZDIUeyJhY2NvdW50X2lkIjogIjEiIH0='); + +@$core.Deprecated('Use listSessionsResponseDescriptor instead') +const ListSessionsResponse$json = { + '1': 'ListSessionsResponse', + '2': [ + {'1': 'sessions', '3': 1, '4': 3, '5': 11, '6': '.pb.Session', '8': {}, '10': 'sessions'}, + ], + '7': {}, +}; + +/// Descriptor for `ListSessionsResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List listSessionsResponseDescriptor = $convert.base64Decode( + 'ChRMaXN0U2Vzc2lvbnNSZXNwb25zZRIsCghzZXNzaW9ucxgBIAMoCzILLnBiLlNlc3Npb25CA5' + 'JBAFIIc2Vzc2lvbnM6MpJBLwotKhVMaXN0U2Vzc2lvbnMgUmVzcG9uc2UyFFJldHVybnMgdGhl' + 'IFNlc3Npb25z'); + diff --git a/frontend/app/lib/pb/rpc_login.pb.dart b/frontend/app/lib/pb/rpc_login.pb.dart new file mode 100644 index 0000000..1b2c155 --- /dev/null +++ b/frontend/app/lib/pb/rpc_login.pb.dart @@ -0,0 +1,209 @@ +// +// Generated code. Do not modify. +// source: rpc_login.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class LoginRequest extends $pb.GeneratedMessage { + factory LoginRequest({ + $core.String? email, + $core.String? password, + }) { + final $result = create(); + if (email != null) { + $result.email = email; + } + if (password != null) { + $result.password = password; + } + return $result; + } + LoginRequest._() : super(); + factory LoginRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LoginRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'LoginRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'email') + ..aOS(2, _omitFieldNames ? '' : 'password') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LoginRequest clone() => LoginRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LoginRequest copyWith(void Function(LoginRequest) updates) => super.copyWith((message) => updates(message as LoginRequest)) as LoginRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static LoginRequest create() => LoginRequest._(); + LoginRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LoginRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LoginRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get email => $_getSZ(0); + @$pb.TagNumber(1) + set email($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasEmail() => $_has(0); + @$pb.TagNumber(1) + void clearEmail() => clearField(1); + + @$pb.TagNumber(2) + $core.String get password => $_getSZ(1); + @$pb.TagNumber(2) + set password($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPassword() => $_has(1); + @$pb.TagNumber(2) + void clearPassword() => clearField(2); +} + +class LoginResponse extends $pb.GeneratedMessage { + factory LoginResponse({ + $core.String? sessionId, + $core.String? accessToken, + $27.Timestamp? accessTokenExpiresAt, + $core.String? refreshToken, + $27.Timestamp? refreshTokenExpiresAt, + $fixnum.Int64? accountId, + }) { + final $result = create(); + if (sessionId != null) { + $result.sessionId = sessionId; + } + if (accessToken != null) { + $result.accessToken = accessToken; + } + if (accessTokenExpiresAt != null) { + $result.accessTokenExpiresAt = accessTokenExpiresAt; + } + if (refreshToken != null) { + $result.refreshToken = refreshToken; + } + if (refreshTokenExpiresAt != null) { + $result.refreshTokenExpiresAt = refreshTokenExpiresAt; + } + if (accountId != null) { + $result.accountId = accountId; + } + return $result; + } + LoginResponse._() : super(); + factory LoginResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LoginResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'LoginResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'sessionId') + ..aOS(2, _omitFieldNames ? '' : 'accessToken') + ..aOM<$27.Timestamp>(3, _omitFieldNames ? '' : 'accessTokenExpiresAt', subBuilder: $27.Timestamp.create) + ..aOS(4, _omitFieldNames ? '' : 'refreshToken') + ..aOM<$27.Timestamp>(5, _omitFieldNames ? '' : 'refreshTokenExpiresAt', subBuilder: $27.Timestamp.create) + ..a<$fixnum.Int64>(6, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LoginResponse clone() => LoginResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LoginResponse copyWith(void Function(LoginResponse) updates) => super.copyWith((message) => updates(message as LoginResponse)) as LoginResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static LoginResponse create() => LoginResponse._(); + LoginResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LoginResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LoginResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get sessionId => $_getSZ(0); + @$pb.TagNumber(1) + set sessionId($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasSessionId() => $_has(0); + @$pb.TagNumber(1) + void clearSessionId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get accessToken => $_getSZ(1); + @$pb.TagNumber(2) + set accessToken($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasAccessToken() => $_has(1); + @$pb.TagNumber(2) + void clearAccessToken() => clearField(2); + + @$pb.TagNumber(3) + $27.Timestamp get accessTokenExpiresAt => $_getN(2); + @$pb.TagNumber(3) + set accessTokenExpiresAt($27.Timestamp v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasAccessTokenExpiresAt() => $_has(2); + @$pb.TagNumber(3) + void clearAccessTokenExpiresAt() => clearField(3); + @$pb.TagNumber(3) + $27.Timestamp ensureAccessTokenExpiresAt() => $_ensure(2); + + @$pb.TagNumber(4) + $core.String get refreshToken => $_getSZ(3); + @$pb.TagNumber(4) + set refreshToken($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasRefreshToken() => $_has(3); + @$pb.TagNumber(4) + void clearRefreshToken() => clearField(4); + + @$pb.TagNumber(5) + $27.Timestamp get refreshTokenExpiresAt => $_getN(4); + @$pb.TagNumber(5) + set refreshTokenExpiresAt($27.Timestamp v) { setField(5, v); } + @$pb.TagNumber(5) + $core.bool hasRefreshTokenExpiresAt() => $_has(4); + @$pb.TagNumber(5) + void clearRefreshTokenExpiresAt() => clearField(5); + @$pb.TagNumber(5) + $27.Timestamp ensureRefreshTokenExpiresAt() => $_ensure(4); + + @$pb.TagNumber(6) + $fixnum.Int64 get accountId => $_getI64(5); + @$pb.TagNumber(6) + set accountId($fixnum.Int64 v) { $_setInt64(5, v); } + @$pb.TagNumber(6) + $core.bool hasAccountId() => $_has(5); + @$pb.TagNumber(6) + void clearAccountId() => clearField(6); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_login.pbenum.dart b/frontend/app/lib/pb/rpc_login.pbenum.dart new file mode 100644 index 0000000..4b431da --- /dev/null +++ b/frontend/app/lib/pb/rpc_login.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_login.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_login.pbjson.dart b/frontend/app/lib/pb/rpc_login.pbjson.dart new file mode 100644 index 0000000..800e0ac --- /dev/null +++ b/frontend/app/lib/pb/rpc_login.pbjson.dart @@ -0,0 +1,70 @@ +// +// Generated code. Do not modify. +// source: rpc_login.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use loginRequestDescriptor instead') +const LoginRequest$json = { + '1': 'LoginRequest', + '2': [ + {'1': 'email', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'email'}, + {'1': 'password', '3': 2, '4': 1, '5': 9, '8': {}, '10': 'password'}, + ], + '7': {}, +}; + +/// Descriptor for `LoginRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List loginRequestDescriptor = $convert.base64Decode( + 'CgxMb2dpblJlcXVlc3QSMQoFZW1haWwYASABKAlCG5JBGEoWImpvaG4uZG9lQGV4YW1wbGUuY2' + '9tIlIFZW1haWwSQwoIcGFzc3dvcmQYAiABKAlCJ5JBJEoXIk1heVRoZUZvcmNlQmVXaXRoWW91' + 'ISKiAghwYXNzd29yZFIIcGFzc3dvcmQ6eZJBdgosKgVMb2dpbjIQTG9naW4gYW4gQWNjb3VudN' + 'IBBWVtYWls0gEIcGFzc3dvcmQyRnsiZW1haWwiOiAiam9obi5kb2VAZXhhbXBsZS5jb20iLCAi' + 'cGFzc3dvcmQiOiAiTWF5VGhlRm9yY2VCZVdpdGhZb3UhIn0='); + +@$core.Deprecated('Use loginResponseDescriptor instead') +const LoginResponse$json = { + '1': 'LoginResponse', + '2': [ + {'1': 'session_id', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'sessionId'}, + {'1': 'access_token', '3': 2, '4': 1, '5': 9, '8': {}, '10': 'accessToken'}, + {'1': 'access_token_expires_at', '3': 3, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'accessTokenExpiresAt'}, + {'1': 'refresh_token', '3': 4, '4': 1, '5': 9, '8': {}, '10': 'refreshToken'}, + {'1': 'refresh_token_expires_at', '3': 5, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'refreshTokenExpiresAt'}, + {'1': 'account_id', '3': 6, '4': 1, '5': 4, '8': {}, '10': 'accountId'}, + ], + '7': {}, +}; + +/// Descriptor for `LoginResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List loginResponseDescriptor = $convert.base64Decode( + 'Cg1Mb2dpblJlc3BvbnNlElEKCnNlc3Npb25faWQYASABKAlCMpJBL0omIjVlMWQ2N2RhLTdjOW' + 'ItNDM2NS1hNGQ1LTNjYzBhMDUxMjQxZSKiAgR1dWlkUglzZXNzaW9uSWQS6QIKDGFjY2Vzc190' + 'b2tlbhgCIAEoCULFApJBwQJKvgIidjQucHVibGljLmV5SmxiV0ZwYkNJNkltRXlRR0l1WkdVaU' + 'xDSmxlSEFpT2lJeU1ESXpMVEV3TFRBMVZEQXhPakUzT2pBNUt6QXlPakF3SWl3aWFXRjBJam9p' + 'TWpBeU15MHhNQzB3TlZRd01Ub3dNam93T1Nzd01qb3dNQ0lzSW1sa0lqb2laamxoTWpFMk9XUX' + 'RNV1l4WVMwMFlUaGlMVGd6WldFdE56a3hNelk1WWpZM1ptWXhJaXdpYm1KbUlqb2lNakF5TXkw' + 'eE1DMHdOVlF3TVRvd01qb3dPU3N3TWpvd01DSjlBaDBiVmJ4OVMxTFItcGY4aExXVlJRUFVmSz' + 'l6ckhadkE3QXBKNWFaWHdoQTdIMWota0hoY2NCak9BR1lYWlFULXRzN0pxM1NKbHpvNXZ0VWpH' + 'QnREZyJSC2FjY2Vzc1Rva2VuElEKF2FjY2Vzc190b2tlbl9leHBpcmVzX2F0GAMgASgLMhouZ2' + '9vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcFIUYWNjZXNzVG9rZW5FeHBpcmVzQXQS6wIKDXJlZnJl' + 'c2hfdG9rZW4YBCABKAlCxQKSQcECSr4CInY0LnB1YmxpYy5leUpsYldGcGJDSTZJbUV5UUdJdV' + 'pHVWlMQ0psZUhBaU9pSXlNREl6TFRFd0xUQTJWREF4T2pBeU9qQTVLekF5T2pBd0lpd2lhV0Yw' + 'SWpvaU1qQXlNeTB4TUMwd05WUXdNVG93TWpvd09Tc3dNam93TUNJc0ltbGtJam9pTldVeFpEWT' + 'NaR0V0TjJNNVlpMDBNelkxTFdFMFpEVXRNMk5qTUdFd05URXlOREZsSWl3aWJtSm1Jam9pTWpB' + 'eU15MHhNQzB3TlZRd01Ub3dNam93T1Nzd01qb3dNQ0o5Qm9YMzZ3MHBvMXZ2SFNqc0JQX0tXZU' + 'Z4VjF4UmJRYXlxYkp1SW9LMmpLcXkxQnQyUm9IeUpiTG9DRU8xNUNSVDVEblE2UDBBSGxCempz' + 'WHQ2MWFERHciUgxyZWZyZXNoVG9rZW4SUwoYcmVmcmVzaF90b2tlbl9leHBpcmVzX2F0GAUgAS' + 'gLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcFIVcmVmcmVzaFRva2VuRXhwaXJlc0F0EicK' + 'CmFjY291bnRfaWQYBiABKARCCJJBBUoDIjEiUglhY2NvdW50SWQ6FZJBEgoQKg5Mb2dpbiBSZX' + 'Nwb25zZQ=='); + diff --git a/frontend/app/lib/pb/rpc_refresh_token.pb.dart b/frontend/app/lib/pb/rpc_refresh_token.pb.dart new file mode 100644 index 0000000..0011b5e --- /dev/null +++ b/frontend/app/lib/pb/rpc_refresh_token.pb.dart @@ -0,0 +1,136 @@ +// +// Generated code. Do not modify. +// source: rpc_refresh_token.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class RefreshTokenRequest extends $pb.GeneratedMessage { + factory RefreshTokenRequest({ + $core.String? refreshToken, + }) { + final $result = create(); + if (refreshToken != null) { + $result.refreshToken = refreshToken; + } + return $result; + } + RefreshTokenRequest._() : super(); + factory RefreshTokenRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory RefreshTokenRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RefreshTokenRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'refreshToken') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + RefreshTokenRequest clone() => RefreshTokenRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + RefreshTokenRequest copyWith(void Function(RefreshTokenRequest) updates) => super.copyWith((message) => updates(message as RefreshTokenRequest)) as RefreshTokenRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RefreshTokenRequest create() => RefreshTokenRequest._(); + RefreshTokenRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static RefreshTokenRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static RefreshTokenRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get refreshToken => $_getSZ(0); + @$pb.TagNumber(1) + set refreshToken($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasRefreshToken() => $_has(0); + @$pb.TagNumber(1) + void clearRefreshToken() => clearField(1); +} + +class RefreshTokenResponse extends $pb.GeneratedMessage { + factory RefreshTokenResponse({ + $core.String? accessToken, + $27.Timestamp? accessTokenExpiresAt, + }) { + final $result = create(); + if (accessToken != null) { + $result.accessToken = accessToken; + } + if (accessTokenExpiresAt != null) { + $result.accessTokenExpiresAt = accessTokenExpiresAt; + } + return $result; + } + RefreshTokenResponse._() : super(); + factory RefreshTokenResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory RefreshTokenResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RefreshTokenResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'accessToken') + ..aOM<$27.Timestamp>(2, _omitFieldNames ? '' : 'accessTokenExpiresAt', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + RefreshTokenResponse clone() => RefreshTokenResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + RefreshTokenResponse copyWith(void Function(RefreshTokenResponse) updates) => super.copyWith((message) => updates(message as RefreshTokenResponse)) as RefreshTokenResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RefreshTokenResponse create() => RefreshTokenResponse._(); + RefreshTokenResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static RefreshTokenResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static RefreshTokenResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get accessToken => $_getSZ(0); + @$pb.TagNumber(1) + set accessToken($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccessToken() => $_has(0); + @$pb.TagNumber(1) + void clearAccessToken() => clearField(1); + + @$pb.TagNumber(2) + $27.Timestamp get accessTokenExpiresAt => $_getN(1); + @$pb.TagNumber(2) + set accessTokenExpiresAt($27.Timestamp v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasAccessTokenExpiresAt() => $_has(1); + @$pb.TagNumber(2) + void clearAccessTokenExpiresAt() => clearField(2); + @$pb.TagNumber(2) + $27.Timestamp ensureAccessTokenExpiresAt() => $_ensure(1); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_refresh_token.pbenum.dart b/frontend/app/lib/pb/rpc_refresh_token.pbenum.dart new file mode 100644 index 0000000..7499f0c --- /dev/null +++ b/frontend/app/lib/pb/rpc_refresh_token.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_refresh_token.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_refresh_token.pbjson.dart b/frontend/app/lib/pb/rpc_refresh_token.pbjson.dart new file mode 100644 index 0000000..875d1b7 --- /dev/null +++ b/frontend/app/lib/pb/rpc_refresh_token.pbjson.dart @@ -0,0 +1,72 @@ +// +// Generated code. Do not modify. +// source: rpc_refresh_token.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use refreshTokenRequestDescriptor instead') +const RefreshTokenRequest$json = { + '1': 'RefreshTokenRequest', + '2': [ + {'1': 'refresh_token', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'refreshToken'}, + ], + '7': {}, +}; + +/// Descriptor for `RefreshTokenRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List refreshTokenRequestDescriptor = $convert.base64Decode( + 'ChNSZWZyZXNoVG9rZW5SZXF1ZXN0EvoCCg1yZWZyZXNoX3Rva2VuGAEgASgJQtQCkkHQAioNUm' + 'VmcmVzaCBUb2tlbkq+AiJ2NC5wdWJsaWMuZXlKbGJXRnBiQ0k2SW1FeVFHSXVaR1VpTENKbGVI' + 'QWlPaUl5TURJekxURXdMVEEyVkRBeE9qQXlPakE1S3pBeU9qQXdJaXdpYVdGMElqb2lNakF5TX' + 'kweE1DMHdOVlF3TVRvd01qb3dPU3N3TWpvd01DSXNJbWxrSWpvaU5XVXhaRFkzWkdFdE4yTTVZ' + 'aTAwTXpZMUxXRTBaRFV0TTJOak1HRXdOVEV5TkRGbElpd2libUptSWpvaU1qQXlNeTB4TUMwd0' + '5WUXdNVG93TWpvd09Tc3dNam93TUNKOUJvWDM2dzBwbzF2dkhTanNCUF9LV2VGeFYxeFJiUWF5' + 'cWJKdUlvSzJqS3F5MUJ0MlJvSHlKYkxvQ0VPMTVDUlQ1RG5RNlAwQUhsQnpqc1h0NjFhRER3Il' + 'IMcmVmcmVzaFRva2VuOrkDkkG1AwpfKhVSZWZyZXNoIFRva2VuIFJlcXVlc3QyNkdldCBhIG5l' + 'dyBBY2Nlc3MgVG9rZW4gYnkgc3VibWl0dGluZyB0aGUgUmVmcmVzaCBUb2tlbtIBDXJlZnJlc2' + 'hfdG9rZW4y0QJ7InJlZnJlc2hfdG9rZW4iOiAidjQucHVibGljLmV5SmxiV0ZwYkNJNkltRXlR' + 'R0l1WkdVaUxDSmxlSEFpT2lJeU1ESXpMVEV3TFRBMlZEQXhPakF5T2pBNUt6QXlPakF3SWl3aW' + 'FXRjBJam9pTWpBeU15MHhNQzB3TlZRd01Ub3dNam93T1Nzd01qb3dNQ0lzSW1sa0lqb2lOV1V4' + 'WkRZM1pHRXROMk01WWkwME16WTFMV0UwWkRVdE0yTmpNR0V3TlRFeU5ERmxJaXdpYm1KbUlqb2' + 'lNakF5TXkweE1DMHdOVlF3TVRvd01qb3dPU3N3TWpvd01DSjlCb1gzNncwcG8xdnZIU2pzQlBf' + 'S1dlRnhWMXhSYlFheXFiSnVJb0syaktxeTFCdDJSb0h5SmJMb0NFTzE1Q1JUNURuUTZQMEFIbE' + 'J6anNYdDYxYUREdyJ9'); + +@$core.Deprecated('Use refreshTokenResponseDescriptor instead') +const RefreshTokenResponse$json = { + '1': 'RefreshTokenResponse', + '2': [ + {'1': 'access_token', '3': 1, '4': 1, '5': 9, '8': {}, '10': 'accessToken'}, + {'1': 'access_token_expires_at', '3': 2, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'accessTokenExpiresAt'}, + ], + '7': {}, +}; + +/// Descriptor for `RefreshTokenResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List refreshTokenResponseDescriptor = $convert.base64Decode( + 'ChRSZWZyZXNoVG9rZW5SZXNwb25zZRL3AgoMYWNjZXNzX3Rva2VuGAEgASgJQtMCkkHPAioMQW' + 'NjZXNzIFRva2VuSr4CInY0LnB1YmxpYy5leUpsYldGcGJDSTZJbUV5UUdJdVpHVWlMQ0psZUhB' + 'aU9pSXlNREl6TFRFd0xUQTFWREF4T2pFM09qQTVLekF5T2pBd0lpd2lhV0YwSWpvaU1qQXlNeT' + 'B4TUMwd05WUXdNVG93TWpvd09Tc3dNam93TUNJc0ltbGtJam9pWmpsaE1qRTJPV1F0TVdZeFlT' + 'MDBZVGhpTFRnelpXRXROemt4TXpZNVlqWTNabVl4SWl3aWJtSm1Jam9pTWpBeU15MHhNQzB3Tl' + 'ZRd01Ub3dNam93T1Nzd01qb3dNQ0o5QWgwYlZieDlTMUxSLXBmOGhMV1ZSUVBVZks5enJIWnZB' + 'N0FwSjVhWlh3aEE3SDFqLWtIaGNjQmpPQUdZWFpRVC10czdKcTNTSmx6bzV2dFVqR0J0RGciUg' + 'thY2Nlc3NUb2tlbhJRChdhY2Nlc3NfdG9rZW5fZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5w' + 'cm90b2J1Zi5UaW1lc3RhbXBSFGFjY2Vzc1Rva2VuRXhwaXJlc0F0OvECkkHtAgoYKhZSZWZyZX' + 'NoIFRva2VuIFJlc3BvbnNlMtACeyJhY2Nlc3NfdG9rZW4iOiAidjQucHVibGljLmV5SmxiV0Zw' + 'YkNJNkltRXlRR0l1WkdVaUxDSmxlSEFpT2lJeU1ESXpMVEV3TFRBMVZEQXhPakUzT2pBNUt6QX' + 'lPakF3SWl3aWFXRjBJam9pTWpBeU15MHhNQzB3TlZRd01Ub3dNam93T1Nzd01qb3dNQ0lzSW1s' + 'a0lqb2laamxoTWpFMk9XUXRNV1l4WVMwMFlUaGlMVGd6WldFdE56a3hNelk1WWpZM1ptWXhJaX' + 'dpYm1KbUlqb2lNakF5TXkweE1DMHdOVlF3TVRvd01qb3dPU3N3TWpvd01DSjlBaDBiVmJ4OVMx' + 'TFItcGY4aExXVlJRUFVmSzl6ckhadkE3QXBKNWFaWHdoQTdIMWota0hoY2NCak9BR1lYWlFULX' + 'RzN0pxM1NKbHpvNXZ0VWpHQnREZyJ9'); + diff --git a/frontend/app/lib/pb/rpc_update_account.pb.dart b/frontend/app/lib/pb/rpc_update_account.pb.dart new file mode 100644 index 0000000..e1b01d8 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account.pb.dart @@ -0,0 +1,151 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account.pb.dart' as $29; + +class UpdateAccountRequest extends $pb.GeneratedMessage { + factory UpdateAccountRequest({ + $fixnum.Int64? accountId, + $core.String? email, + $core.String? password, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (email != null) { + $result.email = email; + } + if (password != null) { + $result.password = password; + } + return $result; + } + UpdateAccountRequest._() : super(); + factory UpdateAccountRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'email') + ..aOS(3, _omitFieldNames ? '' : 'password') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountRequest clone() => UpdateAccountRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountRequest copyWith(void Function(UpdateAccountRequest) updates) => super.copyWith((message) => updates(message as UpdateAccountRequest)) as UpdateAccountRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountRequest create() => UpdateAccountRequest._(); + UpdateAccountRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get email => $_getSZ(1); + @$pb.TagNumber(2) + set email($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasEmail() => $_has(1); + @$pb.TagNumber(2) + void clearEmail() => clearField(2); + + @$pb.TagNumber(3) + $core.String get password => $_getSZ(2); + @$pb.TagNumber(3) + set password($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasPassword() => $_has(2); + @$pb.TagNumber(3) + void clearPassword() => clearField(3); +} + +class UpdateAccountResponse extends $pb.GeneratedMessage { + factory UpdateAccountResponse({ + $29.Account? account, + }) { + final $result = create(); + if (account != null) { + $result.account = account; + } + return $result; + } + UpdateAccountResponse._() : super(); + factory UpdateAccountResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$29.Account>(1, _omitFieldNames ? '' : 'account', subBuilder: $29.Account.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountResponse clone() => UpdateAccountResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountResponse copyWith(void Function(UpdateAccountResponse) updates) => super.copyWith((message) => updates(message as UpdateAccountResponse)) as UpdateAccountResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountResponse create() => UpdateAccountResponse._(); + UpdateAccountResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountResponse? _defaultInstance; + + @$pb.TagNumber(1) + $29.Account get account => $_getN(0); + @$pb.TagNumber(1) + set account($29.Account v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccount() => $_has(0); + @$pb.TagNumber(1) + void clearAccount() => clearField(1); + @$pb.TagNumber(1) + $29.Account ensureAccount() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_update_account.pbenum.dart b/frontend/app/lib/pb/rpc_update_account.pbenum.dart new file mode 100644 index 0000000..3001d6b --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_update_account.pbjson.dart b/frontend/app/lib/pb/rpc_update_account.pbjson.dart new file mode 100644 index 0000000..dbf5c0d --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account.pbjson.dart @@ -0,0 +1,53 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use updateAccountRequestDescriptor instead') +const UpdateAccountRequest$json = { + '1': 'UpdateAccountRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'email', '3': 2, '4': 1, '5': 9, '9': 0, '10': 'email', '17': true}, + {'1': 'password', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'password', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_email'}, + {'1': '_password'}, + ], +}; + +/// Descriptor for `UpdateAccountRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountRequestDescriptor = $convert.base64Decode( + 'ChRVcGRhdGVBY2NvdW50UmVxdWVzdBIdCgphY2NvdW50X2lkGAEgASgEUglhY2NvdW50SWQSGQ' + 'oFZW1haWwYAiABKAlIAFIFZW1haWyIAQESHwoIcGFzc3dvcmQYAyABKAlIAVIIcGFzc3dvcmSI' + 'AQE6cZJBbgo2Kg5VcGRhdGUgQWNjb3VudDIRVXBkYXRlIGFuIEFjY291bnTSAQVlbWFpbNIBCH' + 'Bhc3N3b3JkMjR7ImFjY291bnRfaWQiOiAiMSIsICJlbWFpbCI6ICJqb2huLmRvZUBleGFtcGxl' + 'LmNvbSJ9QggKBl9lbWFpbEILCglfcGFzc3dvcmQ='); + +@$core.Deprecated('Use updateAccountResponseDescriptor instead') +const UpdateAccountResponse$json = { + '1': 'UpdateAccountResponse', + '2': [ + {'1': 'account', '3': 1, '4': 1, '5': 11, '6': '.pb.Account', '8': {}, '10': 'account'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdateAccountResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountResponseDescriptor = $convert.base64Decode( + 'ChVVcGRhdGVBY2NvdW50UmVzcG9uc2USKgoHYWNjb3VudBgBIAEoCzILLnBiLkFjY291bnRCA5' + 'JBAFIHYWNjb3VudDozkkEwCi4qD1VwZGF0ZWQgQWNjb3VudDIbUmV0dXJucyB0aGUgdXBkYXRl' + 'ZCBBY2NvdW50'); + diff --git a/frontend/app/lib/pb/rpc_update_account_info.pb.dart b/frontend/app/lib/pb/rpc_update_account_info.pb.dart new file mode 100644 index 0000000..e6199e9 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_info.pb.dart @@ -0,0 +1,238 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account_info.pb.dart' as $28; +import 'google/protobuf/timestamp.pb.dart' as $27; + +class UpdateAccountInfoRequest extends $pb.GeneratedMessage { + factory UpdateAccountInfoRequest({ + $fixnum.Int64? accountId, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $core.String? phone, + $27.Timestamp? birthday, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (phone != null) { + $result.phone = phone; + } + if (birthday != null) { + $result.birthday = birthday; + } + return $result; + } + UpdateAccountInfoRequest._() : super(); + factory UpdateAccountInfoRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountInfoRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountInfoRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(4, _omitFieldNames ? '' : 'firstname') + ..aOS(5, _omitFieldNames ? '' : 'lastname') + ..aOS(6, _omitFieldNames ? '' : 'street') + ..aOS(7, _omitFieldNames ? '' : 'city') + ..aOS(8, _omitFieldNames ? '' : 'zip') + ..aOS(9, _omitFieldNames ? '' : 'country') + ..aOS(10, _omitFieldNames ? '' : 'phone') + ..aOM<$27.Timestamp>(11, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountInfoRequest clone() => UpdateAccountInfoRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountInfoRequest copyWith(void Function(UpdateAccountInfoRequest) updates) => super.copyWith((message) => updates(message as UpdateAccountInfoRequest)) as UpdateAccountInfoRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountInfoRequest create() => UpdateAccountInfoRequest._(); + UpdateAccountInfoRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountInfoRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountInfoRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(4) + $core.String get firstname => $_getSZ(1); + @$pb.TagNumber(4) + set firstname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(4) + $core.bool hasFirstname() => $_has(1); + @$pb.TagNumber(4) + void clearFirstname() => clearField(4); + + @$pb.TagNumber(5) + $core.String get lastname => $_getSZ(2); + @$pb.TagNumber(5) + set lastname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(5) + $core.bool hasLastname() => $_has(2); + @$pb.TagNumber(5) + void clearLastname() => clearField(5); + + @$pb.TagNumber(6) + $core.String get street => $_getSZ(3); + @$pb.TagNumber(6) + set street($core.String v) { $_setString(3, v); } + @$pb.TagNumber(6) + $core.bool hasStreet() => $_has(3); + @$pb.TagNumber(6) + void clearStreet() => clearField(6); + + @$pb.TagNumber(7) + $core.String get city => $_getSZ(4); + @$pb.TagNumber(7) + set city($core.String v) { $_setString(4, v); } + @$pb.TagNumber(7) + $core.bool hasCity() => $_has(4); + @$pb.TagNumber(7) + void clearCity() => clearField(7); + + @$pb.TagNumber(8) + $core.String get zip => $_getSZ(5); + @$pb.TagNumber(8) + set zip($core.String v) { $_setString(5, v); } + @$pb.TagNumber(8) + $core.bool hasZip() => $_has(5); + @$pb.TagNumber(8) + void clearZip() => clearField(8); + + @$pb.TagNumber(9) + $core.String get country => $_getSZ(6); + @$pb.TagNumber(9) + set country($core.String v) { $_setString(6, v); } + @$pb.TagNumber(9) + $core.bool hasCountry() => $_has(6); + @$pb.TagNumber(9) + void clearCountry() => clearField(9); + + @$pb.TagNumber(10) + $core.String get phone => $_getSZ(7); + @$pb.TagNumber(10) + set phone($core.String v) { $_setString(7, v); } + @$pb.TagNumber(10) + $core.bool hasPhone() => $_has(7); + @$pb.TagNumber(10) + void clearPhone() => clearField(10); + + @$pb.TagNumber(11) + $27.Timestamp get birthday => $_getN(8); + @$pb.TagNumber(11) + set birthday($27.Timestamp v) { setField(11, v); } + @$pb.TagNumber(11) + $core.bool hasBirthday() => $_has(8); + @$pb.TagNumber(11) + void clearBirthday() => clearField(11); + @$pb.TagNumber(11) + $27.Timestamp ensureBirthday() => $_ensure(8); +} + +class UpdateAccountInfoResponse extends $pb.GeneratedMessage { + factory UpdateAccountInfoResponse({ + $28.AccountInfo? accountInfo, + }) { + final $result = create(); + if (accountInfo != null) { + $result.accountInfo = accountInfo; + } + return $result; + } + UpdateAccountInfoResponse._() : super(); + factory UpdateAccountInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountInfoResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountInfoResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$28.AccountInfo>(1, _omitFieldNames ? '' : 'accountInfo', subBuilder: $28.AccountInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountInfoResponse clone() => UpdateAccountInfoResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountInfoResponse copyWith(void Function(UpdateAccountInfoResponse) updates) => super.copyWith((message) => updates(message as UpdateAccountInfoResponse)) as UpdateAccountInfoResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountInfoResponse create() => UpdateAccountInfoResponse._(); + UpdateAccountInfoResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountInfoResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountInfoResponse? _defaultInstance; + + @$pb.TagNumber(1) + $28.AccountInfo get accountInfo => $_getN(0); + @$pb.TagNumber(1) + set accountInfo($28.AccountInfo v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccountInfo() => $_has(0); + @$pb.TagNumber(1) + void clearAccountInfo() => clearField(1); + @$pb.TagNumber(1) + $28.AccountInfo ensureAccountInfo() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_update_account_info.pbenum.dart b/frontend/app/lib/pb/rpc_update_account_info.pbenum.dart new file mode 100644 index 0000000..3522522 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_info.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_update_account_info.pbjson.dart b/frontend/app/lib/pb/rpc_update_account_info.pbjson.dart new file mode 100644 index 0000000..284aca0 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_info.pbjson.dart @@ -0,0 +1,70 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_info.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use updateAccountInfoRequestDescriptor instead') +const UpdateAccountInfoRequest$json = { + '1': 'UpdateAccountInfoRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'firstname', '3': 4, '4': 1, '5': 9, '9': 0, '10': 'firstname', '17': true}, + {'1': 'lastname', '3': 5, '4': 1, '5': 9, '9': 1, '10': 'lastname', '17': true}, + {'1': 'street', '3': 6, '4': 1, '5': 9, '9': 2, '10': 'street', '17': true}, + {'1': 'city', '3': 7, '4': 1, '5': 9, '9': 3, '10': 'city', '17': true}, + {'1': 'zip', '3': 8, '4': 1, '5': 9, '9': 4, '10': 'zip', '17': true}, + {'1': 'country', '3': 9, '4': 1, '5': 9, '9': 5, '10': 'country', '17': true}, + {'1': 'phone', '3': 10, '4': 1, '5': 9, '9': 6, '10': 'phone', '17': true}, + {'1': 'birthday', '3': 11, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '9': 7, '10': 'birthday', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_firstname'}, + {'1': '_lastname'}, + {'1': '_street'}, + {'1': '_city'}, + {'1': '_zip'}, + {'1': '_country'}, + {'1': '_phone'}, + {'1': '_birthday'}, + ], +}; + +/// Descriptor for `UpdateAccountInfoRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountInfoRequestDescriptor = $convert.base64Decode( + 'ChhVcGRhdGVBY2NvdW50SW5mb1JlcXVlc3QSHQoKYWNjb3VudF9pZBgBIAEoBFIJYWNjb3VudE' + 'lkEiEKCWZpcnN0bmFtZRgEIAEoCUgAUglmaXJzdG5hbWWIAQESHwoIbGFzdG5hbWUYBSABKAlI' + 'AVIIbGFzdG5hbWWIAQESGwoGc3RyZWV0GAYgASgJSAJSBnN0cmVldIgBARIXCgRjaXR5GAcgAS' + 'gJSANSBGNpdHmIAQESFQoDemlwGAggASgJSARSA3ppcIgBARIdCgdjb3VudHJ5GAkgASgJSAVS' + 'B2NvdW50cnmIAQESGQoFcGhvbmUYCiABKAlIBlIFcGhvbmWIAQESWAoIYmlydGhkYXkYCyABKA' + 'syGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhuSQRhKFiIxOTkwLTEwLTA1VDAwOjAwOjAw' + 'WiJIB1IIYmlydGhkYXmIAQE6ZJJBYQowKhJVcGRhdGUgQWNjb3VudEluZm8yFVVwZGF0ZSBhbi' + 'BBY2NvdW50SW5mb9IBAmlkMi17ImFjY291bnRfaWQiOiAiMSIsICJzdHJlZXQiOiAiRGVhdGgg' + 'U3RhciAyIn1CDAoKX2ZpcnN0bmFtZUILCglfbGFzdG5hbWVCCQoHX3N0cmVldEIHCgVfY2l0eU' + 'IGCgRfemlwQgoKCF9jb3VudHJ5QggKBl9waG9uZUILCglfYmlydGhkYXk='); + +@$core.Deprecated('Use updateAccountInfoResponseDescriptor instead') +const UpdateAccountInfoResponse$json = { + '1': 'UpdateAccountInfoResponse', + '2': [ + {'1': 'account_info', '3': 1, '4': 1, '5': 11, '6': '.pb.AccountInfo', '8': {}, '10': 'accountInfo'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdateAccountInfoResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountInfoResponseDescriptor = $convert.base64Decode( + 'ChlVcGRhdGVBY2NvdW50SW5mb1Jlc3BvbnNlEjcKDGFjY291bnRfaW5mbxgBIAEoCzIPLnBiLk' + 'FjY291bnRJbmZvQgOSQQBSC2FjY291bnRJbmZvOjOSQTAKLioPVXBkYXRlZCBBY2NvdW50MhtS' + 'ZXR1cm5zIHRoZSB1cGRhdGVkIEFjY291bnQ='); + diff --git a/frontend/app/lib/pb/rpc_update_account_privacy.pb.dart b/frontend/app/lib/pb/rpc_update_account_privacy.pb.dart new file mode 100644 index 0000000..4f2ecfd --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_privacy.pb.dart @@ -0,0 +1,137 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_privacy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'account_info.pb.dart' as $28; + +class UpdateAccountPrivacyRequest extends $pb.GeneratedMessage { + factory UpdateAccountPrivacyRequest({ + $fixnum.Int64? accountId, + $core.bool? privacyAccepted, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (privacyAccepted != null) { + $result.privacyAccepted = privacyAccepted; + } + return $result; + } + UpdateAccountPrivacyRequest._() : super(); + factory UpdateAccountPrivacyRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountPrivacyRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountPrivacyRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOB(2, _omitFieldNames ? '' : 'privacyAccepted') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountPrivacyRequest clone() => UpdateAccountPrivacyRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountPrivacyRequest copyWith(void Function(UpdateAccountPrivacyRequest) updates) => super.copyWith((message) => updates(message as UpdateAccountPrivacyRequest)) as UpdateAccountPrivacyRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountPrivacyRequest create() => UpdateAccountPrivacyRequest._(); + UpdateAccountPrivacyRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountPrivacyRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountPrivacyRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get privacyAccepted => $_getBF(1); + @$pb.TagNumber(2) + set privacyAccepted($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasPrivacyAccepted() => $_has(1); + @$pb.TagNumber(2) + void clearPrivacyAccepted() => clearField(2); +} + +class UpdateAccountPrivacyResponse extends $pb.GeneratedMessage { + factory UpdateAccountPrivacyResponse({ + $28.AccountInfo? accountInfo, + }) { + final $result = create(); + if (accountInfo != null) { + $result.accountInfo = accountInfo; + } + return $result; + } + UpdateAccountPrivacyResponse._() : super(); + factory UpdateAccountPrivacyResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdateAccountPrivacyResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdateAccountPrivacyResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$28.AccountInfo>(1, _omitFieldNames ? '' : 'accountInfo', subBuilder: $28.AccountInfo.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdateAccountPrivacyResponse clone() => UpdateAccountPrivacyResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdateAccountPrivacyResponse copyWith(void Function(UpdateAccountPrivacyResponse) updates) => super.copyWith((message) => updates(message as UpdateAccountPrivacyResponse)) as UpdateAccountPrivacyResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdateAccountPrivacyResponse create() => UpdateAccountPrivacyResponse._(); + UpdateAccountPrivacyResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdateAccountPrivacyResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdateAccountPrivacyResponse? _defaultInstance; + + @$pb.TagNumber(1) + $28.AccountInfo get accountInfo => $_getN(0); + @$pb.TagNumber(1) + set accountInfo($28.AccountInfo v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasAccountInfo() => $_has(0); + @$pb.TagNumber(1) + void clearAccountInfo() => clearField(1); + @$pb.TagNumber(1) + $28.AccountInfo ensureAccountInfo() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_update_account_privacy.pbenum.dart b/frontend/app/lib/pb/rpc_update_account_privacy.pbenum.dart new file mode 100644 index 0000000..1e47f94 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_privacy.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_privacy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_update_account_privacy.pbjson.dart b/frontend/app/lib/pb/rpc_update_account_privacy.pbjson.dart new file mode 100644 index 0000000..55d4116 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_account_privacy.pbjson.dart @@ -0,0 +1,49 @@ +// +// Generated code. Do not modify. +// source: rpc_update_account_privacy.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use updateAccountPrivacyRequestDescriptor instead') +const UpdateAccountPrivacyRequest$json = { + '1': 'UpdateAccountPrivacyRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '8': {}, '10': 'accountId'}, + {'1': 'privacy_accepted', '3': 2, '4': 1, '5': 8, '8': {}, '10': 'privacyAccepted'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdateAccountPrivacyRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountPrivacyRequestDescriptor = $convert.base64Decode( + 'ChtVcGRhdGVBY2NvdW50UHJpdmFjeVJlcXVlc3QSLQoKYWNjb3VudF9pZBgBIAEoBEIOkkELSg' + 'ExogIFaW50NjRSCWFjY291bnRJZBI1ChBwcml2YWN5X2FjY2VwdGVkGAIgASgIQgqSQQdKBWZh' + 'bHNlUg9wcml2YWN5QWNjZXB0ZWQ6oQGSQZ0BCmsqI1VwZGF0ZSBBY2NvdW50IEluZm8gUHJpdm' + 'FjeSBDb25zZW50MixVcGRhdGUgdGhlIFByaXZhY3kgQ29uc2VudCBvZiBhbiBBY2NvdW50SW5m' + 'b9IBAmlk0gEQcHJpdmFjeV9hY2NlcHRlZDIueyJhY2NvdW50X2lkIjogIjEiLCAicHJpdmFjeV' + '9hY2NlcHRlZCI6IHRydWUgfQ=='); + +@$core.Deprecated('Use updateAccountPrivacyResponseDescriptor instead') +const UpdateAccountPrivacyResponse$json = { + '1': 'UpdateAccountPrivacyResponse', + '2': [ + {'1': 'account_info', '3': 1, '4': 1, '5': 11, '6': '.pb.AccountInfo', '8': {}, '10': 'accountInfo'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdateAccountPrivacyResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updateAccountPrivacyResponseDescriptor = $convert.base64Decode( + 'ChxVcGRhdGVBY2NvdW50UHJpdmFjeVJlc3BvbnNlEkwKDGFjY291bnRfaW5mbxgBIAEoCzIPLn' + 'BiLkFjY291bnRJbmZvQhiSQRUqE1VwZGF0ZWQgQWNjb3VudEluZm9SC2FjY291bnRJbmZvOiuS' + 'QSgKJiokVXBkYXRlIEFjY291bnQgSW5mbyBQcml2YWN5IFJlc3BvbnNl'); + diff --git a/frontend/app/lib/pb/rpc_update_payment.pb.dart b/frontend/app/lib/pb/rpc_update_payment.pb.dart new file mode 100644 index 0000000..09c0acc --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_payment.pb.dart @@ -0,0 +1,235 @@ +// +// Generated code. Do not modify. +// source: rpc_update_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'payment.pb.dart' as $30; + +class UpdatePaymentRequest extends $pb.GeneratedMessage { + factory UpdatePaymentRequest({ + $fixnum.Int64? id, + $core.String? paymentCategory, + $core.String? bankname, + $core.String? iBAN, + $core.String? bIC, + $core.String? paypalAccount, + $core.String? paypalId, + $core.String? paymentSystem, + $core.String? type, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (paymentCategory != null) { + $result.paymentCategory = paymentCategory; + } + if (bankname != null) { + $result.bankname = bankname; + } + if (iBAN != null) { + $result.iBAN = iBAN; + } + if (bIC != null) { + $result.bIC = bIC; + } + if (paypalAccount != null) { + $result.paypalAccount = paypalAccount; + } + if (paypalId != null) { + $result.paypalId = paypalId; + } + if (paymentSystem != null) { + $result.paymentSystem = paymentSystem; + } + if (type != null) { + $result.type = type; + } + return $result; + } + UpdatePaymentRequest._() : super(); + factory UpdatePaymentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdatePaymentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdatePaymentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'paymentCategory') + ..aOS(3, _omitFieldNames ? '' : 'bankname') + ..aOS(4, _omitFieldNames ? '' : 'IBAN', protoName: 'IBAN') + ..aOS(5, _omitFieldNames ? '' : 'BIC', protoName: 'BIC') + ..aOS(6, _omitFieldNames ? '' : 'paypalAccount') + ..aOS(7, _omitFieldNames ? '' : 'paypalId') + ..aOS(8, _omitFieldNames ? '' : 'paymentSystem') + ..aOS(9, _omitFieldNames ? '' : 'type') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdatePaymentRequest clone() => UpdatePaymentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdatePaymentRequest copyWith(void Function(UpdatePaymentRequest) updates) => super.copyWith((message) => updates(message as UpdatePaymentRequest)) as UpdatePaymentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdatePaymentRequest create() => UpdatePaymentRequest._(); + UpdatePaymentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdatePaymentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdatePaymentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get paymentCategory => $_getSZ(1); + @$pb.TagNumber(2) + set paymentCategory($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasPaymentCategory() => $_has(1); + @$pb.TagNumber(2) + void clearPaymentCategory() => clearField(2); + + @$pb.TagNumber(3) + $core.String get bankname => $_getSZ(2); + @$pb.TagNumber(3) + set bankname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasBankname() => $_has(2); + @$pb.TagNumber(3) + void clearBankname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get iBAN => $_getSZ(3); + @$pb.TagNumber(4) + set iBAN($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasIBAN() => $_has(3); + @$pb.TagNumber(4) + void clearIBAN() => clearField(4); + + @$pb.TagNumber(5) + $core.String get bIC => $_getSZ(4); + @$pb.TagNumber(5) + set bIC($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasBIC() => $_has(4); + @$pb.TagNumber(5) + void clearBIC() => clearField(5); + + @$pb.TagNumber(6) + $core.String get paypalAccount => $_getSZ(5); + @$pb.TagNumber(6) + set paypalAccount($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasPaypalAccount() => $_has(5); + @$pb.TagNumber(6) + void clearPaypalAccount() => clearField(6); + + @$pb.TagNumber(7) + $core.String get paypalId => $_getSZ(6); + @$pb.TagNumber(7) + set paypalId($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasPaypalId() => $_has(6); + @$pb.TagNumber(7) + void clearPaypalId() => clearField(7); + + @$pb.TagNumber(8) + $core.String get paymentSystem => $_getSZ(7); + @$pb.TagNumber(8) + set paymentSystem($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasPaymentSystem() => $_has(7); + @$pb.TagNumber(8) + void clearPaymentSystem() => clearField(8); + + @$pb.TagNumber(9) + $core.String get type => $_getSZ(8); + @$pb.TagNumber(9) + set type($core.String v) { $_setString(8, v); } + @$pb.TagNumber(9) + $core.bool hasType() => $_has(8); + @$pb.TagNumber(9) + void clearType() => clearField(9); +} + +class UpdatePaymentResponse extends $pb.GeneratedMessage { + factory UpdatePaymentResponse({ + $30.Payment? payment, + }) { + final $result = create(); + if (payment != null) { + $result.payment = payment; + } + return $result; + } + UpdatePaymentResponse._() : super(); + factory UpdatePaymentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdatePaymentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdatePaymentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$30.Payment>(1, _omitFieldNames ? '' : 'payment', subBuilder: $30.Payment.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdatePaymentResponse clone() => UpdatePaymentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdatePaymentResponse copyWith(void Function(UpdatePaymentResponse) updates) => super.copyWith((message) => updates(message as UpdatePaymentResponse)) as UpdatePaymentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdatePaymentResponse create() => UpdatePaymentResponse._(); + UpdatePaymentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdatePaymentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdatePaymentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $30.Payment get payment => $_getN(0); + @$pb.TagNumber(1) + set payment($30.Payment v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPayment() => $_has(0); + @$pb.TagNumber(1) + void clearPayment() => clearField(1); + @$pb.TagNumber(1) + $30.Payment ensurePayment() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_update_payment.pbenum.dart b/frontend/app/lib/pb/rpc_update_payment.pbenum.dart new file mode 100644 index 0000000..450d71c --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_payment.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_update_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_update_payment.pbjson.dart b/frontend/app/lib/pb/rpc_update_payment.pbjson.dart new file mode 100644 index 0000000..ae8f9ad --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_payment.pbjson.dart @@ -0,0 +1,73 @@ +// +// Generated code. Do not modify. +// source: rpc_update_payment.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use updatePaymentRequestDescriptor instead') +const UpdatePaymentRequest$json = { + '1': 'UpdatePaymentRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'payment_category', '3': 2, '4': 1, '5': 9, '9': 0, '10': 'paymentCategory', '17': true}, + {'1': 'bankname', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'bankname', '17': true}, + {'1': 'IBAN', '3': 4, '4': 1, '5': 9, '9': 2, '10': 'IBAN', '17': true}, + {'1': 'BIC', '3': 5, '4': 1, '5': 9, '9': 3, '10': 'BIC', '17': true}, + {'1': 'paypal_account', '3': 6, '4': 1, '5': 9, '9': 4, '10': 'paypalAccount', '17': true}, + {'1': 'paypal_id', '3': 7, '4': 1, '5': 9, '9': 5, '10': 'paypalId', '17': true}, + {'1': 'payment_system', '3': 8, '4': 1, '5': 9, '9': 6, '10': 'paymentSystem', '17': true}, + {'1': 'type', '3': 9, '4': 1, '5': 9, '9': 7, '10': 'type', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_payment_category'}, + {'1': '_bankname'}, + {'1': '_IBAN'}, + {'1': '_BIC'}, + {'1': '_paypal_account'}, + {'1': '_paypal_id'}, + {'1': '_payment_system'}, + {'1': '_type'}, + ], +}; + +/// Descriptor for `UpdatePaymentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updatePaymentRequestDescriptor = $convert.base64Decode( + 'ChRVcGRhdGVQYXltZW50UmVxdWVzdBIOCgJpZBgBIAEoBFICaWQSLgoQcGF5bWVudF9jYXRlZ2' + '9yeRgCIAEoCUgAUg9wYXltZW50Q2F0ZWdvcnmIAQESHwoIYmFua25hbWUYAyABKAlIAVIIYmFu' + 'a25hbWWIAQESFwoESUJBThgEIAEoCUgCUgRJQkFOiAEBEhUKA0JJQxgFIAEoCUgDUgNCSUOIAQ' + 'ESKgoOcGF5cGFsX2FjY291bnQYBiABKAlIBFINcGF5cGFsQWNjb3VudIgBARIgCglwYXlwYWxf' + 'aWQYByABKAlIBVIIcGF5cGFsSWSIAQESKgoOcGF5bWVudF9zeXN0ZW0YCCABKAlIBlINcGF5bW' + 'VudFN5c3RlbYgBARIXCgR0eXBlGAkgASgJSAdSBHR5cGWIAQE67wGSQesBCigqDlVwZGF0ZSBQ' + 'YXltZW50MhFVcGRhdGUgYW4gUGF5bWVudNIBAmlkMr4BeyJpZCI6ICIxIiwgInBheW1lbnRfY2' + 'F0ZWdvcnkiOiAiVEJEOiBwYXlwYWwiLCAicGF5cGFsX2FjY291bnQiOiAiam9obi5kb2VAZXhh' + 'bXBsZS5jb20iLCAicGF5cGFsX2lkIjogInRoaXMtaXMtYS1wYXlwYWwtaWQiLCAicGF5bWVudF' + '9zeXN0ZW0iOiAiVEJEOiBwYXlwYWwgc3lzdGVtIiwgInR5cGUiOiAiVEJEOiBzb21lIHR5cGUi' + 'fUITChFfcGF5bWVudF9jYXRlZ29yeUILCglfYmFua25hbWVCBwoFX0lCQU5CBgoEX0JJQ0IRCg' + '9fcGF5cGFsX2FjY291bnRCDAoKX3BheXBhbF9pZEIRCg9fcGF5bWVudF9zeXN0ZW1CBwoFX3R5' + 'cGU='); + +@$core.Deprecated('Use updatePaymentResponseDescriptor instead') +const UpdatePaymentResponse$json = { + '1': 'UpdatePaymentResponse', + '2': [ + {'1': 'payment', '3': 1, '4': 1, '5': 11, '6': '.pb.Payment', '8': {}, '10': 'payment'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdatePaymentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updatePaymentResponseDescriptor = $convert.base64Decode( + 'ChVVcGRhdGVQYXltZW50UmVzcG9uc2USKgoHcGF5bWVudBgBIAEoCzILLnBiLlBheW1lbnRCA5' + 'JBAFIHcGF5bWVudDozkkEwCi4qD1VwZGF0ZWQgUGF5bWVudDIbUmV0dXJucyB0aGUgdXBkYXRl' + 'ZCBQYXltZW50'); + diff --git a/frontend/app/lib/pb/rpc_update_person.pb.dart b/frontend/app/lib/pb/rpc_update_person.pb.dart new file mode 100644 index 0000000..146ffb9 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_person.pb.dart @@ -0,0 +1,224 @@ +// +// Generated code. Do not modify. +// source: rpc_update_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; +import 'person.pb.dart' as $31; + +class UpdatePersonRequest extends $pb.GeneratedMessage { + factory UpdatePersonRequest({ + $fixnum.Int64? id, + $core.String? firstname, + $core.String? lastname, + $core.String? street, + $core.String? city, + $core.String? zip, + $core.String? country, + $27.Timestamp? birthday, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (firstname != null) { + $result.firstname = firstname; + } + if (lastname != null) { + $result.lastname = lastname; + } + if (street != null) { + $result.street = street; + } + if (city != null) { + $result.city = city; + } + if (zip != null) { + $result.zip = zip; + } + if (country != null) { + $result.country = country; + } + if (birthday != null) { + $result.birthday = birthday; + } + return $result; + } + UpdatePersonRequest._() : super(); + factory UpdatePersonRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdatePersonRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdatePersonRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'id', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'firstname') + ..aOS(3, _omitFieldNames ? '' : 'lastname') + ..aOS(4, _omitFieldNames ? '' : 'street') + ..aOS(5, _omitFieldNames ? '' : 'city') + ..aOS(6, _omitFieldNames ? '' : 'zip') + ..aOS(7, _omitFieldNames ? '' : 'country') + ..aOM<$27.Timestamp>(8, _omitFieldNames ? '' : 'birthday', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdatePersonRequest clone() => UpdatePersonRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdatePersonRequest copyWith(void Function(UpdatePersonRequest) updates) => super.copyWith((message) => updates(message as UpdatePersonRequest)) as UpdatePersonRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdatePersonRequest create() => UpdatePersonRequest._(); + UpdatePersonRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdatePersonRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdatePersonRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get id => $_getI64(0); + @$pb.TagNumber(1) + set id($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get firstname => $_getSZ(1); + @$pb.TagNumber(2) + set firstname($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasFirstname() => $_has(1); + @$pb.TagNumber(2) + void clearFirstname() => clearField(2); + + @$pb.TagNumber(3) + $core.String get lastname => $_getSZ(2); + @$pb.TagNumber(3) + set lastname($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasLastname() => $_has(2); + @$pb.TagNumber(3) + void clearLastname() => clearField(3); + + @$pb.TagNumber(4) + $core.String get street => $_getSZ(3); + @$pb.TagNumber(4) + set street($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasStreet() => $_has(3); + @$pb.TagNumber(4) + void clearStreet() => clearField(4); + + @$pb.TagNumber(5) + $core.String get city => $_getSZ(4); + @$pb.TagNumber(5) + set city($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasCity() => $_has(4); + @$pb.TagNumber(5) + void clearCity() => clearField(5); + + @$pb.TagNumber(6) + $core.String get zip => $_getSZ(5); + @$pb.TagNumber(6) + set zip($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasZip() => $_has(5); + @$pb.TagNumber(6) + void clearZip() => clearField(6); + + @$pb.TagNumber(7) + $core.String get country => $_getSZ(6); + @$pb.TagNumber(7) + set country($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasCountry() => $_has(6); + @$pb.TagNumber(7) + void clearCountry() => clearField(7); + + @$pb.TagNumber(8) + $27.Timestamp get birthday => $_getN(7); + @$pb.TagNumber(8) + set birthday($27.Timestamp v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasBirthday() => $_has(7); + @$pb.TagNumber(8) + void clearBirthday() => clearField(8); + @$pb.TagNumber(8) + $27.Timestamp ensureBirthday() => $_ensure(7); +} + +class UpdatePersonResponse extends $pb.GeneratedMessage { + factory UpdatePersonResponse({ + $31.Person? person, + }) { + final $result = create(); + if (person != null) { + $result.person = person; + } + return $result; + } + UpdatePersonResponse._() : super(); + factory UpdatePersonResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UpdatePersonResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UpdatePersonResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$31.Person>(1, _omitFieldNames ? '' : 'person', subBuilder: $31.Person.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UpdatePersonResponse clone() => UpdatePersonResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UpdatePersonResponse copyWith(void Function(UpdatePersonResponse) updates) => super.copyWith((message) => updates(message as UpdatePersonResponse)) as UpdatePersonResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UpdatePersonResponse create() => UpdatePersonResponse._(); + UpdatePersonResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UpdatePersonResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UpdatePersonResponse? _defaultInstance; + + @$pb.TagNumber(1) + $31.Person get person => $_getN(0); + @$pb.TagNumber(1) + set person($31.Person v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasPerson() => $_has(0); + @$pb.TagNumber(1) + void clearPerson() => clearField(1); + @$pb.TagNumber(1) + $31.Person ensurePerson() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_update_person.pbenum.dart b/frontend/app/lib/pb/rpc_update_person.pbenum.dart new file mode 100644 index 0000000..50c3824 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_person.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_update_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_update_person.pbjson.dart b/frontend/app/lib/pb/rpc_update_person.pbjson.dart new file mode 100644 index 0000000..5df2656 --- /dev/null +++ b/frontend/app/lib/pb/rpc_update_person.pbjson.dart @@ -0,0 +1,70 @@ +// +// Generated code. Do not modify. +// source: rpc_update_person.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use updatePersonRequestDescriptor instead') +const UpdatePersonRequest$json = { + '1': 'UpdatePersonRequest', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 4, '10': 'id'}, + {'1': 'firstname', '3': 2, '4': 1, '5': 9, '9': 0, '10': 'firstname', '17': true}, + {'1': 'lastname', '3': 3, '4': 1, '5': 9, '9': 1, '10': 'lastname', '17': true}, + {'1': 'street', '3': 4, '4': 1, '5': 9, '9': 2, '10': 'street', '17': true}, + {'1': 'city', '3': 5, '4': 1, '5': 9, '9': 3, '10': 'city', '17': true}, + {'1': 'zip', '3': 6, '4': 1, '5': 9, '9': 4, '10': 'zip', '17': true}, + {'1': 'country', '3': 7, '4': 1, '5': 9, '9': 5, '10': 'country', '17': true}, + {'1': 'birthday', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '9': 6, '10': 'birthday', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_firstname'}, + {'1': '_lastname'}, + {'1': '_street'}, + {'1': '_city'}, + {'1': '_zip'}, + {'1': '_country'}, + {'1': '_birthday'}, + ], +}; + +/// Descriptor for `UpdatePersonRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updatePersonRequestDescriptor = $convert.base64Decode( + 'ChNVcGRhdGVQZXJzb25SZXF1ZXN0Eg4KAmlkGAEgASgEUgJpZBIhCglmaXJzdG5hbWUYAiABKA' + 'lIAFIJZmlyc3RuYW1liAEBEh8KCGxhc3RuYW1lGAMgASgJSAFSCGxhc3RuYW1liAEBEhsKBnN0' + 'cmVldBgEIAEoCUgCUgZzdHJlZXSIAQESFwoEY2l0eRgFIAEoCUgDUgRjaXR5iAEBEhUKA3ppcB' + 'gGIAEoCUgEUgN6aXCIAQESHQoHY291bnRyeRgHIAEoCUgFUgdjb3VudHJ5iAEBElgKCGJpcnRo' + 'ZGF5GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIbkkEYShYiMTk5MC0xMC0wNV' + 'QwMDowMDowMFoiSAZSCGJpcnRoZGF5iAEBOuUBkkHhAQomKg1VcGRhdGUgUGVyc29uMhBVcGRh' + 'dGUgYW4gUGVyc29u0gECaWQytgF7ImlkIjogIjEiLCAiZmlyc3RuYW1lIjogIkpvaG4iLCAibG' + 'FzdG5hbWUiOiAiRG9lIiwgInBob25lIjogIiIsICJzdHJlZXQiOiAiRGVhdGggU3RhciAzIiwg' + 'InppcCI6ICIwODE2IiwgImNpdHkiOiAiTW9udGFuYSIsICJjb3VudHJ5IjogIkNhbmFkYSIsIC' + 'JiaXJ0aGRheSI6ICIxOTkyLTEwLTA1VDAwOjAwOjAwWiIgfUIMCgpfZmlyc3RuYW1lQgsKCV9s' + 'YXN0bmFtZUIJCgdfc3RyZWV0QgcKBV9jaXR5QgYKBF96aXBCCgoIX2NvdW50cnlCCwoJX2Jpcn' + 'RoZGF5'); + +@$core.Deprecated('Use updatePersonResponseDescriptor instead') +const UpdatePersonResponse$json = { + '1': 'UpdatePersonResponse', + '2': [ + {'1': 'person', '3': 1, '4': 1, '5': 11, '6': '.pb.Person', '8': {}, '10': 'person'}, + ], + '7': {}, +}; + +/// Descriptor for `UpdatePersonResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List updatePersonResponseDescriptor = $convert.base64Decode( + 'ChRVcGRhdGVQZXJzb25SZXNwb25zZRInCgZwZXJzb24YASABKAsyCi5wYi5QZXJzb25CA5JBAF' + 'IGcGVyc29uOjGSQS4KLCoOVXBkYXRlZCBQZXJzb24yGlJldHVybnMgdGhlIHVwZGF0ZWQgUGVy' + 'c29u'); + diff --git a/frontend/app/lib/pb/rpc_upload_document.pb.dart b/frontend/app/lib/pb/rpc_upload_document.pb.dart new file mode 100644 index 0000000..652df8d --- /dev/null +++ b/frontend/app/lib/pb/rpc_upload_document.pb.dart @@ -0,0 +1,151 @@ +// +// Generated code. Do not modify. +// source: rpc_upload_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'document.pb.dart' as $34; + +class UploadDocumentRequest extends $pb.GeneratedMessage { + factory UploadDocumentRequest({ + $core.List<$core.int>? file, + $fixnum.Int64? personId, + $fixnum.Int64? mailId, + }) { + final $result = create(); + if (file != null) { + $result.file = file; + } + if (personId != null) { + $result.personId = personId; + } + if (mailId != null) { + $result.mailId = mailId; + } + return $result; + } + UploadDocumentRequest._() : super(); + factory UploadDocumentRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UploadDocumentRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UploadDocumentRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$core.List<$core.int>>(1, _omitFieldNames ? '' : 'file', $pb.PbFieldType.OY) + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'personId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..a<$fixnum.Int64>(3, _omitFieldNames ? '' : 'mailId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UploadDocumentRequest clone() => UploadDocumentRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UploadDocumentRequest copyWith(void Function(UploadDocumentRequest) updates) => super.copyWith((message) => updates(message as UploadDocumentRequest)) as UploadDocumentRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UploadDocumentRequest create() => UploadDocumentRequest._(); + UploadDocumentRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UploadDocumentRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UploadDocumentRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.List<$core.int> get file => $_getN(0); + @$pb.TagNumber(1) + set file($core.List<$core.int> v) { $_setBytes(0, v); } + @$pb.TagNumber(1) + $core.bool hasFile() => $_has(0); + @$pb.TagNumber(1) + void clearFile() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get personId => $_getI64(1); + @$pb.TagNumber(2) + set personId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasPersonId() => $_has(1); + @$pb.TagNumber(2) + void clearPersonId() => clearField(2); + + @$pb.TagNumber(3) + $fixnum.Int64 get mailId => $_getI64(2); + @$pb.TagNumber(3) + set mailId($fixnum.Int64 v) { $_setInt64(2, v); } + @$pb.TagNumber(3) + $core.bool hasMailId() => $_has(2); + @$pb.TagNumber(3) + void clearMailId() => clearField(3); +} + +class UploadDocumentResponse extends $pb.GeneratedMessage { + factory UploadDocumentResponse({ + $34.Document? document, + }) { + final $result = create(); + if (document != null) { + $result.document = document; + } + return $result; + } + UploadDocumentResponse._() : super(); + factory UploadDocumentResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory UploadDocumentResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'UploadDocumentResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOM<$34.Document>(1, _omitFieldNames ? '' : 'document', subBuilder: $34.Document.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + UploadDocumentResponse clone() => UploadDocumentResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + UploadDocumentResponse copyWith(void Function(UploadDocumentResponse) updates) => super.copyWith((message) => updates(message as UploadDocumentResponse)) as UploadDocumentResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static UploadDocumentResponse create() => UploadDocumentResponse._(); + UploadDocumentResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static UploadDocumentResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static UploadDocumentResponse? _defaultInstance; + + @$pb.TagNumber(1) + $34.Document get document => $_getN(0); + @$pb.TagNumber(1) + set document($34.Document v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasDocument() => $_has(0); + @$pb.TagNumber(1) + void clearDocument() => clearField(1); + @$pb.TagNumber(1) + $34.Document ensureDocument() => $_ensure(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_upload_document.pbenum.dart b/frontend/app/lib/pb/rpc_upload_document.pbenum.dart new file mode 100644 index 0000000..556406f --- /dev/null +++ b/frontend/app/lib/pb/rpc_upload_document.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_upload_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_upload_document.pbjson.dart b/frontend/app/lib/pb/rpc_upload_document.pbjson.dart new file mode 100644 index 0000000..d5c90fa --- /dev/null +++ b/frontend/app/lib/pb/rpc_upload_document.pbjson.dart @@ -0,0 +1,52 @@ +// +// Generated code. Do not modify. +// source: rpc_upload_document.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use uploadDocumentRequestDescriptor instead') +const UploadDocumentRequest$json = { + '1': 'UploadDocumentRequest', + '2': [ + {'1': 'file', '3': 1, '4': 1, '5': 12, '10': 'file'}, + {'1': 'person_id', '3': 2, '4': 1, '5': 4, '9': 0, '10': 'personId', '17': true}, + {'1': 'mail_id', '3': 3, '4': 1, '5': 4, '9': 1, '10': 'mailId', '17': true}, + ], + '7': {}, + '8': [ + {'1': '_person_id'}, + {'1': '_mail_id'}, + ], +}; + +/// Descriptor for `UploadDocumentRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List uploadDocumentRequestDescriptor = $convert.base64Decode( + 'ChVVcGxvYWREb2N1bWVudFJlcXVlc3QSEgoEZmlsZRgBIAEoDFIEZmlsZRIgCglwZXJzb25faW' + 'QYAiABKARIAFIIcGVyc29uSWSIAQESHAoHbWFpbF9pZBgDIAEoBEgBUgZtYWlsSWSIAQE6XJJB' + 'WQpCKhpVcGxvYWREb2N1bWVudCBbb25seSBIVFRQXTIdVXBsb2FkIGEgRG9jdW1lbnQgW29ubH' + 'kgSFRUUF3SAQRmaWxlMhN7InBlcnNvbl9pZCI6ICIxIiB9QgwKCl9wZXJzb25faWRCCgoIX21h' + 'aWxfaWQ='); + +@$core.Deprecated('Use uploadDocumentResponseDescriptor instead') +const UploadDocumentResponse$json = { + '1': 'UploadDocumentResponse', + '2': [ + {'1': 'document', '3': 1, '4': 1, '5': 11, '6': '.pb.Document', '10': 'document'}, + ], + '7': {}, +}; + +/// Descriptor for `UploadDocumentResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List uploadDocumentResponseDescriptor = $convert.base64Decode( + 'ChZVcGxvYWREb2N1bWVudFJlc3BvbnNlEigKCGRvY3VtZW50GAEgASgLMgwucGIuRG9jdW1lbn' + 'RSCGRvY3VtZW50Oh6SQRsKGSoXVXBsb2FkRG9jdW1lbnQgUmVzcG9uc2U='); + diff --git a/frontend/app/lib/pb/rpc_verify_email.pb.dart b/frontend/app/lib/pb/rpc_verify_email.pb.dart new file mode 100644 index 0000000..8abd8d4 --- /dev/null +++ b/frontend/app/lib/pb/rpc_verify_email.pb.dart @@ -0,0 +1,133 @@ +// +// Generated code. Do not modify. +// source: rpc_verify_email.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +class VerifyEmailRequest extends $pb.GeneratedMessage { + factory VerifyEmailRequest({ + $fixnum.Int64? accountId, + $core.String? secretKey, + }) { + final $result = create(); + if (accountId != null) { + $result.accountId = accountId; + } + if (secretKey != null) { + $result.secretKey = secretKey; + } + return $result; + } + VerifyEmailRequest._() : super(); + factory VerifyEmailRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory VerifyEmailRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'VerifyEmailRequest', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..a<$fixnum.Int64>(1, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(2, _omitFieldNames ? '' : 'secretKey') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + VerifyEmailRequest clone() => VerifyEmailRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + VerifyEmailRequest copyWith(void Function(VerifyEmailRequest) updates) => super.copyWith((message) => updates(message as VerifyEmailRequest)) as VerifyEmailRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static VerifyEmailRequest create() => VerifyEmailRequest._(); + VerifyEmailRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static VerifyEmailRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static VerifyEmailRequest? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get accountId => $_getI64(0); + @$pb.TagNumber(1) + set accountId($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccountId() => $_has(0); + @$pb.TagNumber(1) + void clearAccountId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get secretKey => $_getSZ(1); + @$pb.TagNumber(2) + set secretKey($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasSecretKey() => $_has(1); + @$pb.TagNumber(2) + void clearSecretKey() => clearField(2); +} + +class VerifyEmailResponse extends $pb.GeneratedMessage { + factory VerifyEmailResponse({ + $core.bool? verified, + }) { + final $result = create(); + if (verified != null) { + $result.verified = verified; + } + return $result; + } + VerifyEmailResponse._() : super(); + factory VerifyEmailResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory VerifyEmailResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'VerifyEmailResponse', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'verified') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + VerifyEmailResponse clone() => VerifyEmailResponse()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + VerifyEmailResponse copyWith(void Function(VerifyEmailResponse) updates) => super.copyWith((message) => updates(message as VerifyEmailResponse)) as VerifyEmailResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static VerifyEmailResponse create() => VerifyEmailResponse._(); + VerifyEmailResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static VerifyEmailResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static VerifyEmailResponse? _defaultInstance; + + @$pb.TagNumber(1) + $core.bool get verified => $_getBF(0); + @$pb.TagNumber(1) + set verified($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(1) + $core.bool hasVerified() => $_has(0); + @$pb.TagNumber(1) + void clearVerified() => clearField(1); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/rpc_verify_email.pbenum.dart b/frontend/app/lib/pb/rpc_verify_email.pbenum.dart new file mode 100644 index 0000000..e28cbf3 --- /dev/null +++ b/frontend/app/lib/pb/rpc_verify_email.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: rpc_verify_email.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/rpc_verify_email.pbjson.dart b/frontend/app/lib/pb/rpc_verify_email.pbjson.dart new file mode 100644 index 0000000..a96bf98 --- /dev/null +++ b/frontend/app/lib/pb/rpc_verify_email.pbjson.dart @@ -0,0 +1,46 @@ +// +// Generated code. Do not modify. +// source: rpc_verify_email.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use verifyEmailRequestDescriptor instead') +const VerifyEmailRequest$json = { + '1': 'VerifyEmailRequest', + '2': [ + {'1': 'account_id', '3': 1, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'secret_key', '3': 2, '4': 1, '5': 9, '10': 'secretKey'}, + ], + '7': {}, +}; + +/// Descriptor for `VerifyEmailRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List verifyEmailRequestDescriptor = $convert.base64Decode( + 'ChJWZXJpZnlFbWFpbFJlcXVlc3QSHQoKYWNjb3VudF9pZBgBIAEoBFIJYWNjb3VudElkEh0KCn' + 'NlY3JldF9rZXkYAiABKAlSCXNlY3JldEtleTpckkFZCicqC1ZlcmlmeUVtYWls0gEKYWNjb3Vu' + 'dF9pZNIBCnNlY3JldF9rZXkyLnsiaWQiOiAiMSIsICJzZWNyZXRfa2V5IjogInRoaXNpc2FzZW' + 'NyZXRrZXkiIH0='); + +@$core.Deprecated('Use verifyEmailResponseDescriptor instead') +const VerifyEmailResponse$json = { + '1': 'VerifyEmailResponse', + '2': [ + {'1': 'verified', '3': 1, '4': 1, '5': 8, '8': {}, '10': 'verified'}, + ], + '7': {}, +}; + +/// Descriptor for `VerifyEmailResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List verifyEmailResponseDescriptor = $convert.base64Decode( + 'ChNWZXJpZnlFbWFpbFJlc3BvbnNlEh8KCHZlcmlmaWVkGAEgASgIQgOSQQBSCHZlcmlmaWVkOh' + 'uSQRgKFioUVmVyaWZ5RW1haWwgUmVzcG9uc2U='); + diff --git a/frontend/app/lib/pb/service_df.pb.dart b/frontend/app/lib/pb/service_df.pb.dart new file mode 100644 index 0000000..7ebc5be --- /dev/null +++ b/frontend/app/lib/pb/service_df.pb.dart @@ -0,0 +1,13 @@ +// +// Generated code. Do not modify. +// source: service_df.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + diff --git a/frontend/app/lib/pb/service_df.pbenum.dart b/frontend/app/lib/pb/service_df.pbenum.dart new file mode 100644 index 0000000..0f470fe --- /dev/null +++ b/frontend/app/lib/pb/service_df.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: service_df.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/service_df.pbgrpc.dart b/frontend/app/lib/pb/service_df.pbgrpc.dart new file mode 100644 index 0000000..6a3cb48 --- /dev/null +++ b/frontend/app/lib/pb/service_df.pbgrpc.dart @@ -0,0 +1,605 @@ +// +// Generated code. Do not modify. +// source: service_df.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:async' as $async; +import 'dart:core' as $core; + +import 'package:grpc/service_api.dart' as $grpc; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'rpc_block_session.pb.dart' as $3; +import 'rpc_create_account.pb.dart' as $6; +import 'rpc_create_account_info.pb.dart' as $10; +import 'rpc_create_payment.pb.dart' as $18; +import 'rpc_create_person.pb.dart' as $13; +import 'rpc_delete_document.pb.dart' as $25; +import 'rpc_delete_payment.pb.dart' as $20; +import 'rpc_delete_person.pb.dart' as $16; +import 'rpc_get_account.pb.dart' as $4; +import 'rpc_get_account_info.pb.dart' as $8; +import 'rpc_get_payment.pb.dart' as $19; +import 'rpc_get_person.pb.dart' as $15; +import 'rpc_list_account_info.pb.dart' as $9; +import 'rpc_list_accounts.pb.dart' as $5; +import 'rpc_list_payments.pb.dart' as $21; +import 'rpc_list_persons.pb.dart' as $17; +import 'rpc_list_returns_log_by_person_id.pb.dart' as $23; +import 'rpc_list_sessions.pb.dart' as $2; +import 'rpc_login.pb.dart' as $0; +import 'rpc_refresh_token.pb.dart' as $1; +import 'rpc_update_account.pb.dart' as $7; +import 'rpc_update_account_info.pb.dart' as $11; +import 'rpc_update_account_privacy.pb.dart' as $12; +import 'rpc_update_payment.pb.dart' as $22; +import 'rpc_update_person.pb.dart' as $14; +import 'rpc_upload_document.pb.dart' as $24; +import 'rpc_verify_email.pb.dart' as $26; + +export 'service_df.pb.dart'; + +@$pb.GrpcServiceName('pb.df') +class dfClient extends $grpc.Client { + static final _$login = $grpc.ClientMethod<$0.LoginRequest, $0.LoginResponse>( + '/pb.df/Login', + ($0.LoginRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $0.LoginResponse.fromBuffer(value)); + static final _$refreshToken = $grpc.ClientMethod<$1.RefreshTokenRequest, $1.RefreshTokenResponse>( + '/pb.df/RefreshToken', + ($1.RefreshTokenRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $1.RefreshTokenResponse.fromBuffer(value)); + static final _$listSessions = $grpc.ClientMethod<$2.ListSessionsRequest, $2.ListSessionsResponse>( + '/pb.df/ListSessions', + ($2.ListSessionsRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $2.ListSessionsResponse.fromBuffer(value)); + static final _$blockSession = $grpc.ClientMethod<$3.BlockSessionRequest, $3.BlockSessionResponse>( + '/pb.df/BlockSession', + ($3.BlockSessionRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $3.BlockSessionResponse.fromBuffer(value)); + static final _$getAccount = $grpc.ClientMethod<$4.GetAccountRequest, $4.GetAccountResponse>( + '/pb.df/GetAccount', + ($4.GetAccountRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $4.GetAccountResponse.fromBuffer(value)); + static final _$listAccounts = $grpc.ClientMethod<$5.ListAccountsRequest, $5.ListAccountsResponse>( + '/pb.df/ListAccounts', + ($5.ListAccountsRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $5.ListAccountsResponse.fromBuffer(value)); + static final _$createAccount = $grpc.ClientMethod<$6.CreateAccountRequest, $6.CreateAccountResponse>( + '/pb.df/CreateAccount', + ($6.CreateAccountRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $6.CreateAccountResponse.fromBuffer(value)); + static final _$updateAccount = $grpc.ClientMethod<$7.UpdateAccountRequest, $7.UpdateAccountResponse>( + '/pb.df/UpdateAccount', + ($7.UpdateAccountRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $7.UpdateAccountResponse.fromBuffer(value)); + static final _$getAccountInfo = $grpc.ClientMethod<$8.GetAccountInfoRequest, $8.GetAccountInfoResponse>( + '/pb.df/GetAccountInfo', + ($8.GetAccountInfoRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $8.GetAccountInfoResponse.fromBuffer(value)); + static final _$listAccountInfo = $grpc.ClientMethod<$9.ListAccountInfoRequest, $9.ListAccountInfoResponse>( + '/pb.df/ListAccountInfo', + ($9.ListAccountInfoRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $9.ListAccountInfoResponse.fromBuffer(value)); + static final _$createAccountInfo = $grpc.ClientMethod<$10.CreateAccountInfoRequest, $10.CreateAccountInfoResponse>( + '/pb.df/CreateAccountInfo', + ($10.CreateAccountInfoRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $10.CreateAccountInfoResponse.fromBuffer(value)); + static final _$updateAccountInfo = $grpc.ClientMethod<$11.UpdateAccountInfoRequest, $11.UpdateAccountInfoResponse>( + '/pb.df/UpdateAccountInfo', + ($11.UpdateAccountInfoRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $11.UpdateAccountInfoResponse.fromBuffer(value)); + static final _$updateAccountPrivacy = $grpc.ClientMethod<$12.UpdateAccountPrivacyRequest, $12.UpdateAccountPrivacyResponse>( + '/pb.df/UpdateAccountPrivacy', + ($12.UpdateAccountPrivacyRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $12.UpdateAccountPrivacyResponse.fromBuffer(value)); + static final _$createPerson = $grpc.ClientMethod<$13.CreatePersonRequest, $13.CreatePersonResponse>( + '/pb.df/CreatePerson', + ($13.CreatePersonRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $13.CreatePersonResponse.fromBuffer(value)); + static final _$updatePerson = $grpc.ClientMethod<$14.UpdatePersonRequest, $14.UpdatePersonResponse>( + '/pb.df/UpdatePerson', + ($14.UpdatePersonRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $14.UpdatePersonResponse.fromBuffer(value)); + static final _$getPerson = $grpc.ClientMethod<$15.GetPersonRequest, $15.GetPersonResponse>( + '/pb.df/GetPerson', + ($15.GetPersonRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $15.GetPersonResponse.fromBuffer(value)); + static final _$deletePerson = $grpc.ClientMethod<$16.DeletePersonRequest, $16.DeletePersonResponse>( + '/pb.df/DeletePerson', + ($16.DeletePersonRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $16.DeletePersonResponse.fromBuffer(value)); + static final _$listPersons = $grpc.ClientMethod<$17.ListPersonsRequest, $17.ListPersonsResponse>( + '/pb.df/ListPersons', + ($17.ListPersonsRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $17.ListPersonsResponse.fromBuffer(value)); + static final _$createPayment = $grpc.ClientMethod<$18.CreatePaymentRequest, $18.CreatePaymentResponse>( + '/pb.df/CreatePayment', + ($18.CreatePaymentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $18.CreatePaymentResponse.fromBuffer(value)); + static final _$getPayment = $grpc.ClientMethod<$19.GetPaymentRequest, $19.GetPaymentResponse>( + '/pb.df/GetPayment', + ($19.GetPaymentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $19.GetPaymentResponse.fromBuffer(value)); + static final _$deletePayment = $grpc.ClientMethod<$20.DeletePaymentRequest, $20.DeletePaymentResponse>( + '/pb.df/DeletePayment', + ($20.DeletePaymentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $20.DeletePaymentResponse.fromBuffer(value)); + static final _$listPayments = $grpc.ClientMethod<$21.ListPaymentsRequest, $21.ListPaymentsResponse>( + '/pb.df/ListPayments', + ($21.ListPaymentsRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $21.ListPaymentsResponse.fromBuffer(value)); + static final _$updatePayment = $grpc.ClientMethod<$22.UpdatePaymentRequest, $22.UpdatePaymentResponse>( + '/pb.df/UpdatePayment', + ($22.UpdatePaymentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $22.UpdatePaymentResponse.fromBuffer(value)); + static final _$listReturnsLog = $grpc.ClientMethod<$23.ListReturnsLogRequest, $23.ListReturnsLogResponse>( + '/pb.df/ListReturnsLog', + ($23.ListReturnsLogRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $23.ListReturnsLogResponse.fromBuffer(value)); + static final _$uploadDocument = $grpc.ClientMethod<$24.UploadDocumentRequest, $24.UploadDocumentResponse>( + '/pb.df/UploadDocument', + ($24.UploadDocumentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $24.UploadDocumentResponse.fromBuffer(value)); + static final _$deleteDocument = $grpc.ClientMethod<$25.DeleteDocumentRequest, $25.DeleteDocumentResponse>( + '/pb.df/DeleteDocument', + ($25.DeleteDocumentRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $25.DeleteDocumentResponse.fromBuffer(value)); + static final _$verifyEmail = $grpc.ClientMethod<$26.VerifyEmailRequest, $26.VerifyEmailResponse>( + '/pb.df/VerifyEmail', + ($26.VerifyEmailRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $26.VerifyEmailResponse.fromBuffer(value)); + + dfClient($grpc.ClientChannel channel, + {$grpc.CallOptions? options, + $core.Iterable<$grpc.ClientInterceptor>? interceptors}) + : super(channel, options: options, + interceptors: interceptors); + + $grpc.ResponseFuture<$0.LoginResponse> login($0.LoginRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$login, request, options: options); + } + + $grpc.ResponseFuture<$1.RefreshTokenResponse> refreshToken($1.RefreshTokenRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$refreshToken, request, options: options); + } + + $grpc.ResponseFuture<$2.ListSessionsResponse> listSessions($2.ListSessionsRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listSessions, request, options: options); + } + + $grpc.ResponseFuture<$3.BlockSessionResponse> blockSession($3.BlockSessionRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$blockSession, request, options: options); + } + + $grpc.ResponseFuture<$4.GetAccountResponse> getAccount($4.GetAccountRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$getAccount, request, options: options); + } + + $grpc.ResponseFuture<$5.ListAccountsResponse> listAccounts($5.ListAccountsRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listAccounts, request, options: options); + } + + $grpc.ResponseFuture<$6.CreateAccountResponse> createAccount($6.CreateAccountRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$createAccount, request, options: options); + } + + $grpc.ResponseFuture<$7.UpdateAccountResponse> updateAccount($7.UpdateAccountRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updateAccount, request, options: options); + } + + $grpc.ResponseFuture<$8.GetAccountInfoResponse> getAccountInfo($8.GetAccountInfoRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$getAccountInfo, request, options: options); + } + + $grpc.ResponseFuture<$9.ListAccountInfoResponse> listAccountInfo($9.ListAccountInfoRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listAccountInfo, request, options: options); + } + + $grpc.ResponseFuture<$10.CreateAccountInfoResponse> createAccountInfo($10.CreateAccountInfoRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$createAccountInfo, request, options: options); + } + + $grpc.ResponseFuture<$11.UpdateAccountInfoResponse> updateAccountInfo($11.UpdateAccountInfoRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updateAccountInfo, request, options: options); + } + + $grpc.ResponseFuture<$12.UpdateAccountPrivacyResponse> updateAccountPrivacy($12.UpdateAccountPrivacyRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updateAccountPrivacy, request, options: options); + } + + $grpc.ResponseFuture<$13.CreatePersonResponse> createPerson($13.CreatePersonRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$createPerson, request, options: options); + } + + $grpc.ResponseFuture<$14.UpdatePersonResponse> updatePerson($14.UpdatePersonRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updatePerson, request, options: options); + } + + $grpc.ResponseFuture<$15.GetPersonResponse> getPerson($15.GetPersonRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$getPerson, request, options: options); + } + + $grpc.ResponseFuture<$16.DeletePersonResponse> deletePerson($16.DeletePersonRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$deletePerson, request, options: options); + } + + $grpc.ResponseFuture<$17.ListPersonsResponse> listPersons($17.ListPersonsRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listPersons, request, options: options); + } + + $grpc.ResponseFuture<$18.CreatePaymentResponse> createPayment($18.CreatePaymentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$createPayment, request, options: options); + } + + $grpc.ResponseFuture<$19.GetPaymentResponse> getPayment($19.GetPaymentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$getPayment, request, options: options); + } + + $grpc.ResponseFuture<$20.DeletePaymentResponse> deletePayment($20.DeletePaymentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$deletePayment, request, options: options); + } + + $grpc.ResponseFuture<$21.ListPaymentsResponse> listPayments($21.ListPaymentsRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listPayments, request, options: options); + } + + $grpc.ResponseFuture<$22.UpdatePaymentResponse> updatePayment($22.UpdatePaymentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$updatePayment, request, options: options); + } + + $grpc.ResponseFuture<$23.ListReturnsLogResponse> listReturnsLog($23.ListReturnsLogRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$listReturnsLog, request, options: options); + } + + $grpc.ResponseFuture<$24.UploadDocumentResponse> uploadDocument($24.UploadDocumentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$uploadDocument, request, options: options); + } + + $grpc.ResponseFuture<$25.DeleteDocumentResponse> deleteDocument($25.DeleteDocumentRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$deleteDocument, request, options: options); + } + + $grpc.ResponseFuture<$26.VerifyEmailResponse> verifyEmail($26.VerifyEmailRequest request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$verifyEmail, request, options: options); + } +} + +@$pb.GrpcServiceName('pb.df') +abstract class dfServiceBase extends $grpc.Service { + $core.String get $name => 'pb.df'; + + dfServiceBase() { + $addMethod($grpc.ServiceMethod<$0.LoginRequest, $0.LoginResponse>( + 'Login', + login_Pre, + false, + false, + ($core.List<$core.int> value) => $0.LoginRequest.fromBuffer(value), + ($0.LoginResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$1.RefreshTokenRequest, $1.RefreshTokenResponse>( + 'RefreshToken', + refreshToken_Pre, + false, + false, + ($core.List<$core.int> value) => $1.RefreshTokenRequest.fromBuffer(value), + ($1.RefreshTokenResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$2.ListSessionsRequest, $2.ListSessionsResponse>( + 'ListSessions', + listSessions_Pre, + false, + false, + ($core.List<$core.int> value) => $2.ListSessionsRequest.fromBuffer(value), + ($2.ListSessionsResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$3.BlockSessionRequest, $3.BlockSessionResponse>( + 'BlockSession', + blockSession_Pre, + false, + false, + ($core.List<$core.int> value) => $3.BlockSessionRequest.fromBuffer(value), + ($3.BlockSessionResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$4.GetAccountRequest, $4.GetAccountResponse>( + 'GetAccount', + getAccount_Pre, + false, + false, + ($core.List<$core.int> value) => $4.GetAccountRequest.fromBuffer(value), + ($4.GetAccountResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$5.ListAccountsRequest, $5.ListAccountsResponse>( + 'ListAccounts', + listAccounts_Pre, + false, + false, + ($core.List<$core.int> value) => $5.ListAccountsRequest.fromBuffer(value), + ($5.ListAccountsResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$6.CreateAccountRequest, $6.CreateAccountResponse>( + 'CreateAccount', + createAccount_Pre, + false, + false, + ($core.List<$core.int> value) => $6.CreateAccountRequest.fromBuffer(value), + ($6.CreateAccountResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$7.UpdateAccountRequest, $7.UpdateAccountResponse>( + 'UpdateAccount', + updateAccount_Pre, + false, + false, + ($core.List<$core.int> value) => $7.UpdateAccountRequest.fromBuffer(value), + ($7.UpdateAccountResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$8.GetAccountInfoRequest, $8.GetAccountInfoResponse>( + 'GetAccountInfo', + getAccountInfo_Pre, + false, + false, + ($core.List<$core.int> value) => $8.GetAccountInfoRequest.fromBuffer(value), + ($8.GetAccountInfoResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$9.ListAccountInfoRequest, $9.ListAccountInfoResponse>( + 'ListAccountInfo', + listAccountInfo_Pre, + false, + false, + ($core.List<$core.int> value) => $9.ListAccountInfoRequest.fromBuffer(value), + ($9.ListAccountInfoResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$10.CreateAccountInfoRequest, $10.CreateAccountInfoResponse>( + 'CreateAccountInfo', + createAccountInfo_Pre, + false, + false, + ($core.List<$core.int> value) => $10.CreateAccountInfoRequest.fromBuffer(value), + ($10.CreateAccountInfoResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$11.UpdateAccountInfoRequest, $11.UpdateAccountInfoResponse>( + 'UpdateAccountInfo', + updateAccountInfo_Pre, + false, + false, + ($core.List<$core.int> value) => $11.UpdateAccountInfoRequest.fromBuffer(value), + ($11.UpdateAccountInfoResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$12.UpdateAccountPrivacyRequest, $12.UpdateAccountPrivacyResponse>( + 'UpdateAccountPrivacy', + updateAccountPrivacy_Pre, + false, + false, + ($core.List<$core.int> value) => $12.UpdateAccountPrivacyRequest.fromBuffer(value), + ($12.UpdateAccountPrivacyResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$13.CreatePersonRequest, $13.CreatePersonResponse>( + 'CreatePerson', + createPerson_Pre, + false, + false, + ($core.List<$core.int> value) => $13.CreatePersonRequest.fromBuffer(value), + ($13.CreatePersonResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$14.UpdatePersonRequest, $14.UpdatePersonResponse>( + 'UpdatePerson', + updatePerson_Pre, + false, + false, + ($core.List<$core.int> value) => $14.UpdatePersonRequest.fromBuffer(value), + ($14.UpdatePersonResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$15.GetPersonRequest, $15.GetPersonResponse>( + 'GetPerson', + getPerson_Pre, + false, + false, + ($core.List<$core.int> value) => $15.GetPersonRequest.fromBuffer(value), + ($15.GetPersonResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$16.DeletePersonRequest, $16.DeletePersonResponse>( + 'DeletePerson', + deletePerson_Pre, + false, + false, + ($core.List<$core.int> value) => $16.DeletePersonRequest.fromBuffer(value), + ($16.DeletePersonResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$17.ListPersonsRequest, $17.ListPersonsResponse>( + 'ListPersons', + listPersons_Pre, + false, + false, + ($core.List<$core.int> value) => $17.ListPersonsRequest.fromBuffer(value), + ($17.ListPersonsResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$18.CreatePaymentRequest, $18.CreatePaymentResponse>( + 'CreatePayment', + createPayment_Pre, + false, + false, + ($core.List<$core.int> value) => $18.CreatePaymentRequest.fromBuffer(value), + ($18.CreatePaymentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$19.GetPaymentRequest, $19.GetPaymentResponse>( + 'GetPayment', + getPayment_Pre, + false, + false, + ($core.List<$core.int> value) => $19.GetPaymentRequest.fromBuffer(value), + ($19.GetPaymentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$20.DeletePaymentRequest, $20.DeletePaymentResponse>( + 'DeletePayment', + deletePayment_Pre, + false, + false, + ($core.List<$core.int> value) => $20.DeletePaymentRequest.fromBuffer(value), + ($20.DeletePaymentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$21.ListPaymentsRequest, $21.ListPaymentsResponse>( + 'ListPayments', + listPayments_Pre, + false, + false, + ($core.List<$core.int> value) => $21.ListPaymentsRequest.fromBuffer(value), + ($21.ListPaymentsResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$22.UpdatePaymentRequest, $22.UpdatePaymentResponse>( + 'UpdatePayment', + updatePayment_Pre, + false, + false, + ($core.List<$core.int> value) => $22.UpdatePaymentRequest.fromBuffer(value), + ($22.UpdatePaymentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$23.ListReturnsLogRequest, $23.ListReturnsLogResponse>( + 'ListReturnsLog', + listReturnsLog_Pre, + false, + false, + ($core.List<$core.int> value) => $23.ListReturnsLogRequest.fromBuffer(value), + ($23.ListReturnsLogResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$24.UploadDocumentRequest, $24.UploadDocumentResponse>( + 'UploadDocument', + uploadDocument_Pre, + false, + false, + ($core.List<$core.int> value) => $24.UploadDocumentRequest.fromBuffer(value), + ($24.UploadDocumentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$25.DeleteDocumentRequest, $25.DeleteDocumentResponse>( + 'DeleteDocument', + deleteDocument_Pre, + false, + false, + ($core.List<$core.int> value) => $25.DeleteDocumentRequest.fromBuffer(value), + ($25.DeleteDocumentResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$26.VerifyEmailRequest, $26.VerifyEmailResponse>( + 'VerifyEmail', + verifyEmail_Pre, + false, + false, + ($core.List<$core.int> value) => $26.VerifyEmailRequest.fromBuffer(value), + ($26.VerifyEmailResponse value) => value.writeToBuffer())); + } + + $async.Future<$0.LoginResponse> login_Pre($grpc.ServiceCall call, $async.Future<$0.LoginRequest> request) async { + return login(call, await request); + } + + $async.Future<$1.RefreshTokenResponse> refreshToken_Pre($grpc.ServiceCall call, $async.Future<$1.RefreshTokenRequest> request) async { + return refreshToken(call, await request); + } + + $async.Future<$2.ListSessionsResponse> listSessions_Pre($grpc.ServiceCall call, $async.Future<$2.ListSessionsRequest> request) async { + return listSessions(call, await request); + } + + $async.Future<$3.BlockSessionResponse> blockSession_Pre($grpc.ServiceCall call, $async.Future<$3.BlockSessionRequest> request) async { + return blockSession(call, await request); + } + + $async.Future<$4.GetAccountResponse> getAccount_Pre($grpc.ServiceCall call, $async.Future<$4.GetAccountRequest> request) async { + return getAccount(call, await request); + } + + $async.Future<$5.ListAccountsResponse> listAccounts_Pre($grpc.ServiceCall call, $async.Future<$5.ListAccountsRequest> request) async { + return listAccounts(call, await request); + } + + $async.Future<$6.CreateAccountResponse> createAccount_Pre($grpc.ServiceCall call, $async.Future<$6.CreateAccountRequest> request) async { + return createAccount(call, await request); + } + + $async.Future<$7.UpdateAccountResponse> updateAccount_Pre($grpc.ServiceCall call, $async.Future<$7.UpdateAccountRequest> request) async { + return updateAccount(call, await request); + } + + $async.Future<$8.GetAccountInfoResponse> getAccountInfo_Pre($grpc.ServiceCall call, $async.Future<$8.GetAccountInfoRequest> request) async { + return getAccountInfo(call, await request); + } + + $async.Future<$9.ListAccountInfoResponse> listAccountInfo_Pre($grpc.ServiceCall call, $async.Future<$9.ListAccountInfoRequest> request) async { + return listAccountInfo(call, await request); + } + + $async.Future<$10.CreateAccountInfoResponse> createAccountInfo_Pre($grpc.ServiceCall call, $async.Future<$10.CreateAccountInfoRequest> request) async { + return createAccountInfo(call, await request); + } + + $async.Future<$11.UpdateAccountInfoResponse> updateAccountInfo_Pre($grpc.ServiceCall call, $async.Future<$11.UpdateAccountInfoRequest> request) async { + return updateAccountInfo(call, await request); + } + + $async.Future<$12.UpdateAccountPrivacyResponse> updateAccountPrivacy_Pre($grpc.ServiceCall call, $async.Future<$12.UpdateAccountPrivacyRequest> request) async { + return updateAccountPrivacy(call, await request); + } + + $async.Future<$13.CreatePersonResponse> createPerson_Pre($grpc.ServiceCall call, $async.Future<$13.CreatePersonRequest> request) async { + return createPerson(call, await request); + } + + $async.Future<$14.UpdatePersonResponse> updatePerson_Pre($grpc.ServiceCall call, $async.Future<$14.UpdatePersonRequest> request) async { + return updatePerson(call, await request); + } + + $async.Future<$15.GetPersonResponse> getPerson_Pre($grpc.ServiceCall call, $async.Future<$15.GetPersonRequest> request) async { + return getPerson(call, await request); + } + + $async.Future<$16.DeletePersonResponse> deletePerson_Pre($grpc.ServiceCall call, $async.Future<$16.DeletePersonRequest> request) async { + return deletePerson(call, await request); + } + + $async.Future<$17.ListPersonsResponse> listPersons_Pre($grpc.ServiceCall call, $async.Future<$17.ListPersonsRequest> request) async { + return listPersons(call, await request); + } + + $async.Future<$18.CreatePaymentResponse> createPayment_Pre($grpc.ServiceCall call, $async.Future<$18.CreatePaymentRequest> request) async { + return createPayment(call, await request); + } + + $async.Future<$19.GetPaymentResponse> getPayment_Pre($grpc.ServiceCall call, $async.Future<$19.GetPaymentRequest> request) async { + return getPayment(call, await request); + } + + $async.Future<$20.DeletePaymentResponse> deletePayment_Pre($grpc.ServiceCall call, $async.Future<$20.DeletePaymentRequest> request) async { + return deletePayment(call, await request); + } + + $async.Future<$21.ListPaymentsResponse> listPayments_Pre($grpc.ServiceCall call, $async.Future<$21.ListPaymentsRequest> request) async { + return listPayments(call, await request); + } + + $async.Future<$22.UpdatePaymentResponse> updatePayment_Pre($grpc.ServiceCall call, $async.Future<$22.UpdatePaymentRequest> request) async { + return updatePayment(call, await request); + } + + $async.Future<$23.ListReturnsLogResponse> listReturnsLog_Pre($grpc.ServiceCall call, $async.Future<$23.ListReturnsLogRequest> request) async { + return listReturnsLog(call, await request); + } + + $async.Future<$24.UploadDocumentResponse> uploadDocument_Pre($grpc.ServiceCall call, $async.Future<$24.UploadDocumentRequest> request) async { + return uploadDocument(call, await request); + } + + $async.Future<$25.DeleteDocumentResponse> deleteDocument_Pre($grpc.ServiceCall call, $async.Future<$25.DeleteDocumentRequest> request) async { + return deleteDocument(call, await request); + } + + $async.Future<$26.VerifyEmailResponse> verifyEmail_Pre($grpc.ServiceCall call, $async.Future<$26.VerifyEmailRequest> request) async { + return verifyEmail(call, await request); + } + + $async.Future<$0.LoginResponse> login($grpc.ServiceCall call, $0.LoginRequest request); + $async.Future<$1.RefreshTokenResponse> refreshToken($grpc.ServiceCall call, $1.RefreshTokenRequest request); + $async.Future<$2.ListSessionsResponse> listSessions($grpc.ServiceCall call, $2.ListSessionsRequest request); + $async.Future<$3.BlockSessionResponse> blockSession($grpc.ServiceCall call, $3.BlockSessionRequest request); + $async.Future<$4.GetAccountResponse> getAccount($grpc.ServiceCall call, $4.GetAccountRequest request); + $async.Future<$5.ListAccountsResponse> listAccounts($grpc.ServiceCall call, $5.ListAccountsRequest request); + $async.Future<$6.CreateAccountResponse> createAccount($grpc.ServiceCall call, $6.CreateAccountRequest request); + $async.Future<$7.UpdateAccountResponse> updateAccount($grpc.ServiceCall call, $7.UpdateAccountRequest request); + $async.Future<$8.GetAccountInfoResponse> getAccountInfo($grpc.ServiceCall call, $8.GetAccountInfoRequest request); + $async.Future<$9.ListAccountInfoResponse> listAccountInfo($grpc.ServiceCall call, $9.ListAccountInfoRequest request); + $async.Future<$10.CreateAccountInfoResponse> createAccountInfo($grpc.ServiceCall call, $10.CreateAccountInfoRequest request); + $async.Future<$11.UpdateAccountInfoResponse> updateAccountInfo($grpc.ServiceCall call, $11.UpdateAccountInfoRequest request); + $async.Future<$12.UpdateAccountPrivacyResponse> updateAccountPrivacy($grpc.ServiceCall call, $12.UpdateAccountPrivacyRequest request); + $async.Future<$13.CreatePersonResponse> createPerson($grpc.ServiceCall call, $13.CreatePersonRequest request); + $async.Future<$14.UpdatePersonResponse> updatePerson($grpc.ServiceCall call, $14.UpdatePersonRequest request); + $async.Future<$15.GetPersonResponse> getPerson($grpc.ServiceCall call, $15.GetPersonRequest request); + $async.Future<$16.DeletePersonResponse> deletePerson($grpc.ServiceCall call, $16.DeletePersonRequest request); + $async.Future<$17.ListPersonsResponse> listPersons($grpc.ServiceCall call, $17.ListPersonsRequest request); + $async.Future<$18.CreatePaymentResponse> createPayment($grpc.ServiceCall call, $18.CreatePaymentRequest request); + $async.Future<$19.GetPaymentResponse> getPayment($grpc.ServiceCall call, $19.GetPaymentRequest request); + $async.Future<$20.DeletePaymentResponse> deletePayment($grpc.ServiceCall call, $20.DeletePaymentRequest request); + $async.Future<$21.ListPaymentsResponse> listPayments($grpc.ServiceCall call, $21.ListPaymentsRequest request); + $async.Future<$22.UpdatePaymentResponse> updatePayment($grpc.ServiceCall call, $22.UpdatePaymentRequest request); + $async.Future<$23.ListReturnsLogResponse> listReturnsLog($grpc.ServiceCall call, $23.ListReturnsLogRequest request); + $async.Future<$24.UploadDocumentResponse> uploadDocument($grpc.ServiceCall call, $24.UploadDocumentRequest request); + $async.Future<$25.DeleteDocumentResponse> deleteDocument($grpc.ServiceCall call, $25.DeleteDocumentRequest request); + $async.Future<$26.VerifyEmailResponse> verifyEmail($grpc.ServiceCall call, $26.VerifyEmailRequest request); +} diff --git a/frontend/app/lib/pb/service_df.pbjson.dart b/frontend/app/lib/pb/service_df.pbjson.dart new file mode 100644 index 0000000..6b26486 --- /dev/null +++ b/frontend/app/lib/pb/service_df.pbjson.dart @@ -0,0 +1,15 @@ +// +// Generated code. Do not modify. +// source: service_df.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + diff --git a/frontend/app/lib/pb/session.pb.dart b/frontend/app/lib/pb/session.pb.dart new file mode 100644 index 0000000..60af26d --- /dev/null +++ b/frontend/app/lib/pb/session.pb.dart @@ -0,0 +1,173 @@ +// +// Generated code. Do not modify. +// source: session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'google/protobuf/timestamp.pb.dart' as $27; + +class Session extends $pb.GeneratedMessage { + factory Session({ + $core.String? id, + $fixnum.Int64? accountId, + $core.String? userAgent, + $core.String? clientIp, + $core.bool? isBlocked, + $27.Timestamp? expiresAt, + $core.String? refreshToken, + $27.Timestamp? createdAt, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (accountId != null) { + $result.accountId = accountId; + } + if (userAgent != null) { + $result.userAgent = userAgent; + } + if (clientIp != null) { + $result.clientIp = clientIp; + } + if (isBlocked != null) { + $result.isBlocked = isBlocked; + } + if (expiresAt != null) { + $result.expiresAt = expiresAt; + } + if (refreshToken != null) { + $result.refreshToken = refreshToken; + } + if (createdAt != null) { + $result.createdAt = createdAt; + } + return $result; + } + Session._() : super(); + factory Session.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Session.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Session', package: const $pb.PackageName(_omitMessageNames ? '' : 'pb'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'accountId', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO) + ..aOS(3, _omitFieldNames ? '' : 'userAgent') + ..aOS(4, _omitFieldNames ? '' : 'clientIp') + ..aOB(5, _omitFieldNames ? '' : 'isBlocked') + ..aOM<$27.Timestamp>(6, _omitFieldNames ? '' : 'expiresAt', subBuilder: $27.Timestamp.create) + ..aOS(7, _omitFieldNames ? '' : 'refreshToken') + ..aOM<$27.Timestamp>(8, _omitFieldNames ? '' : 'createdAt', subBuilder: $27.Timestamp.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Session clone() => Session()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Session copyWith(void Function(Session) updates) => super.copyWith((message) => updates(message as Session)) as Session; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Session create() => Session._(); + Session createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Session getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Session? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get accountId => $_getI64(1); + @$pb.TagNumber(2) + set accountId($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasAccountId() => $_has(1); + @$pb.TagNumber(2) + void clearAccountId() => clearField(2); + + @$pb.TagNumber(3) + $core.String get userAgent => $_getSZ(2); + @$pb.TagNumber(3) + set userAgent($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasUserAgent() => $_has(2); + @$pb.TagNumber(3) + void clearUserAgent() => clearField(3); + + @$pb.TagNumber(4) + $core.String get clientIp => $_getSZ(3); + @$pb.TagNumber(4) + set clientIp($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasClientIp() => $_has(3); + @$pb.TagNumber(4) + void clearClientIp() => clearField(4); + + @$pb.TagNumber(5) + $core.bool get isBlocked => $_getBF(4); + @$pb.TagNumber(5) + set isBlocked($core.bool v) { $_setBool(4, v); } + @$pb.TagNumber(5) + $core.bool hasIsBlocked() => $_has(4); + @$pb.TagNumber(5) + void clearIsBlocked() => clearField(5); + + @$pb.TagNumber(6) + $27.Timestamp get expiresAt => $_getN(5); + @$pb.TagNumber(6) + set expiresAt($27.Timestamp v) { setField(6, v); } + @$pb.TagNumber(6) + $core.bool hasExpiresAt() => $_has(5); + @$pb.TagNumber(6) + void clearExpiresAt() => clearField(6); + @$pb.TagNumber(6) + $27.Timestamp ensureExpiresAt() => $_ensure(5); + + @$pb.TagNumber(7) + $core.String get refreshToken => $_getSZ(6); + @$pb.TagNumber(7) + set refreshToken($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasRefreshToken() => $_has(6); + @$pb.TagNumber(7) + void clearRefreshToken() => clearField(7); + + @$pb.TagNumber(8) + $27.Timestamp get createdAt => $_getN(7); + @$pb.TagNumber(8) + set createdAt($27.Timestamp v) { setField(8, v); } + @$pb.TagNumber(8) + $core.bool hasCreatedAt() => $_has(7); + @$pb.TagNumber(8) + void clearCreatedAt() => clearField(8); + @$pb.TagNumber(8) + $27.Timestamp ensureCreatedAt() => $_ensure(7); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/frontend/app/lib/pb/session.pbenum.dart b/frontend/app/lib/pb/session.pbenum.dart new file mode 100644 index 0000000..d515787 --- /dev/null +++ b/frontend/app/lib/pb/session.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/frontend/app/lib/pb/session.pbjson.dart b/frontend/app/lib/pb/session.pbjson.dart new file mode 100644 index 0000000..830202c --- /dev/null +++ b/frontend/app/lib/pb/session.pbjson.dart @@ -0,0 +1,51 @@ +// +// Generated code. Do not modify. +// source: session.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use sessionDescriptor instead') +const Session$json = { + '1': 'Session', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + {'1': 'account_id', '3': 2, '4': 1, '5': 4, '10': 'accountId'}, + {'1': 'user_agent', '3': 3, '4': 1, '5': 9, '10': 'userAgent'}, + {'1': 'client_ip', '3': 4, '4': 1, '5': 9, '10': 'clientIp'}, + {'1': 'is_blocked', '3': 5, '4': 1, '5': 8, '10': 'isBlocked'}, + {'1': 'expires_at', '3': 6, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'expiresAt'}, + {'1': 'created_at', '3': 8, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '8': {}, '10': 'createdAt'}, + {'1': 'refresh_token', '3': 7, '4': 1, '5': 9, '10': 'refreshToken'}, + ], + '7': {}, +}; + +/// Descriptor for `Session`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List sessionDescriptor = $convert.base64Decode( + 'CgdTZXNzaW9uEg4KAmlkGAEgASgJUgJpZBIdCgphY2NvdW50X2lkGAIgASgEUglhY2NvdW50SW' + 'QSHQoKdXNlcl9hZ2VudBgDIAEoCVIJdXNlckFnZW50EhsKCWNsaWVudF9pcBgEIAEoCVIIY2xp' + 'ZW50SXASHQoKaXNfYmxvY2tlZBgFIAEoCFIJaXNCbG9ja2VkElYKCmV4cGlyZXNfYXQYBiABKA' + 'syGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQhuSQRhKFiIxOTkwLTEwLTA1VDAwOjAwOjAw' + 'WiJSCWV4cGlyZXNBdBJWCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbW' + 'VzdGFtcEIbkkEYShYiMTk5MC0xMC0wNVQwMDowMDowMFoiUgljcmVhdGVkQXQSIwoNcmVmcmVz' + 'aF90b2tlbhgHIAEoCVIMcmVmcmVzaFRva2VuOp0EkkGZBAoJKgdTZXNzaW9uMosEeyJpZCI6IC' + 'IxIiwiYWNjb3VudF9pZCI6ICIxIiwgInJlZnJlc2hfdG9rZW4iOiAidjQucHVibGljLmV5Smxi' + 'V0ZwYkNJNkltRXlRR0l1WkdVaUxDSmxlSEFpT2lJeU1ESXpMVEV3TFRBMlZEQXhPakF5T2pBNU' + 't6QXlPakF3SWl3aWFXRjBJam9pTWpBeU15MHhNQzB3TlZRd01Ub3dNam93T1Nzd01qb3dNQ0lz' + 'SW1sa0lqb2lOV1V4WkRZM1pHRXROMk01WWkwME16WTFMV0UwWkRVdE0yTmpNR0V3TlRFeU5ERm' + 'xJaXdpYm1KbUlqb2lNakF5TXkweE1DMHdOVlF3TVRvd01qb3dPU3N3TWpvd01DSjlCb1gzNncw' + 'cG8xdnZIU2pzQlBfS1dlRnhWMXhSYlFheXFiSnVJb0syaktxeTFCdDJSb0h5SmJMb0NFTzE1Q1' + 'JUNURuUTZQMEFIbEJ6anNYdDYxYUREdyIsICJleHBpcmVzX2F0IjogIjIwMjMtMTAtMDVUMDI6' + 'MzA6NTNaIiwgImNyZWF0ZWRfYXQiOiAiMjAyMy0xMC0wNVQwMToyMDoxMVoiLCAiY2xpZW50X2' + 'lwIjogIjEwLjU2LjAuMTIiLCAidXNlcl9hZ2VudCI6ICJNb3ppbGxhIEZpcmVmb3giLCAiaXNf' + 'YmxvY2tlZCI6IGZhbHNlfQ=='); + diff --git a/frontend/app/lib/util/colors.dart b/frontend/app/lib/util/colors.dart new file mode 100644 index 0000000..5c8d297 --- /dev/null +++ b/frontend/app/lib/util/colors.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; + +class CustomColors { + static Color get error { + return const Color.fromARGB(200, 255, 90, 90); + } + + static Color get success { + return const Color.fromARGB(200, 55, 125, 55); + } +} diff --git a/frontend/app/lib/util/validation.dart b/frontend/app/lib/util/validation.dart new file mode 100644 index 0000000..a7aa9e5 --- /dev/null +++ b/frontend/app/lib/util/validation.dart @@ -0,0 +1,27 @@ +final emailRegExp = RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+"); +final nameRegExp = + RegExp(r"^\s*([A-Za-z]{1,}([\.,] |[-']| ))+[A-Za-z]+\.?\s*$"); +final phoneRegExp = RegExp(r"^\+?0[0-9]{10}$"); +final passwordRegExp = RegExp(r'^.+$'); + +extension valString on String { + bool get isValidEmail { + return emailRegExp.hasMatch(this); + } + + bool get isValidName { + return nameRegExp.hasMatch(this); + } + + bool get isValidPassword { + return passwordRegExp.hasMatch(this); + } + + bool get isNotEmpty { + return this != trim(); + } + + bool get isValidPhone { + return phoneRegExp.hasMatch(this); + } +} diff --git a/frontend/app/lib/widgets/background.dart b/frontend/app/lib/widgets/background.dart new file mode 100644 index 0000000..b0232a3 --- /dev/null +++ b/frontend/app/lib/widgets/background.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +class Background extends StatelessWidget { + const Background({super.key, required this.child}); + + final Widget child; + + @override + Widget build(BuildContext context) { + return Container( + decoration: const BoxDecoration( + // color: Color.fromARGB(230, 255, 255, 255), + gradient: LinearGradient( + colors: [Colors.black, Colors.white], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + image: DecorationImage( + image: AssetImage( + 'lib/assets/hero-pattern-300x200.png', + // color: Colors.grey, + ), + repeat: ImageRepeat.repeat, + fit: BoxFit.contain, + ), + ), + child: child); + } +} diff --git a/frontend/app/lib/widgets/bottom_bar.dart b/frontend/app/lib/widgets/bottom_bar.dart new file mode 100644 index 0000000..eb9a437 --- /dev/null +++ b/frontend/app/lib/widgets/bottom_bar.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; + +class BottomBar extends StatelessWidget { + const BottomBar({ + super.key, + required this.children, + }); + + final List children; + + @override + Widget build(BuildContext context) { + return BottomNavigationBar( + items: children, + backgroundColor: Colors.black, + fixedColor: Colors.black, + // onTap: (value) => _bottomBarAction(value), + ); + } +} diff --git a/frontend/app/lib/widgets/bottom_navigation.dart b/frontend/app/lib/widgets/bottom_navigation.dart new file mode 100644 index 0000000..c3f6519 --- /dev/null +++ b/frontend/app/lib/widgets/bottom_navigation.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart'; + +// ignore: must_be_immutable +class BottomNavigation extends StatelessWidget { + BottomNavigation({ + super.key, + required this.children, + this.backgroundColor, + this.iconColor, + }) { + backgroundColor ??= Colors.black; + } + + List children; + Color? backgroundColor; + Color? iconColor; + + @override + Widget build(BuildContext context) { + return Container( + height: 70, + color: backgroundColor, + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric( + // horizontal: 10, + ), + child: Row( + mainAxisAlignment: children.isEmpty + ? MainAxisAlignment.center + : MainAxisAlignment.spaceAround, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ...children, + Builder(builder: (context) { + return IconButton( + onPressed: () => Scaffold.of(context).openDrawer(), + icon: const Icon( + Icons.menu, + color: Colors.white, + )); + }), + ], + ), + ), + ), + ); + } +} diff --git a/frontend/app/lib/widgets/bottom_navigation_item.dart b/frontend/app/lib/widgets/bottom_navigation_item.dart new file mode 100644 index 0000000..c6d6be4 --- /dev/null +++ b/frontend/app/lib/widgets/bottom_navigation_item.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; + +// ignore: must_be_immutable +class BottomNavigationItem extends StatelessWidget { + BottomNavigationItem({ + super.key, + required this.onPressed, + required this.icon, + required this.color, + this.textSize, + this.iconSize, + this.label, + }) { + textSize ??= 15; + iconSize ??= 25; + } + + void Function() onPressed; + IconData icon; + Color color; + double? textSize; + double? iconSize; + String? label; + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: + label != null ? MainAxisAlignment.center : MainAxisAlignment.center, + children: [ + IconButton( + onPressed: onPressed, + icon: Icon( + icon, + size: iconSize, + color: color, + )), + if (label != null) + Text( + label!, + style: TextStyle(fontSize: textSize, color: color), + ), + ], + ); + } +} diff --git a/frontend/app/lib/widgets/drawer.dart b/frontend/app/lib/widgets/drawer.dart new file mode 100644 index 0000000..47343bb --- /dev/null +++ b/frontend/app/lib/widgets/drawer.dart @@ -0,0 +1,30 @@ +import 'package:flutter/material.dart'; + +// ignore: must_be_immutable +class SideDrawer extends StatelessWidget { + SideDrawer({super.key, required this.children, this.backgroundColor}) { + backgroundColor ??= Colors.black; + } + + final List children; + Color? backgroundColor; + + @override + Widget build(BuildContext context) { + return Drawer( + backgroundColor: backgroundColor, + child: Padding( + padding: const EdgeInsets.all(40.0), + child: Center( + child: Builder(builder: (context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: children, + ); + }), + ), + ), + ); + } +} diff --git a/frontend/app/lib/widgets/loading_widget.dart b/frontend/app/lib/widgets/loading_widget.dart new file mode 100644 index 0000000..567fbec --- /dev/null +++ b/frontend/app/lib/widgets/loading_widget.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; + +class LoadingWidget extends StatelessWidget { + const LoadingWidget({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Center( + child: Image.asset( + 'lib/assets/logo_300x200.png', + height: 300, + ), + ); + } +} diff --git a/frontend/app/lib/widgets/side_drawer.dart b/frontend/app/lib/widgets/side_drawer.dart new file mode 100644 index 0000000..73f55e2 --- /dev/null +++ b/frontend/app/lib/widgets/side_drawer.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +class SideDrawer extends StatefulWidget { + const SideDrawer({ + super.key, + required this.children, + }); + + final List children; + + @override + State createState() => _SideDrawerState(); +} + +class _SideDrawerState extends State { + @override + Widget build(BuildContext context) { + return Drawer( + backgroundColor: Colors.black, + child: Padding( + padding: const EdgeInsets.all(40.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: widget.children, + ), + ), + ); + } +} diff --git a/frontend/app/lib/widgets/side_drawer_item.dart b/frontend/app/lib/widgets/side_drawer_item.dart new file mode 100644 index 0000000..b12e882 --- /dev/null +++ b/frontend/app/lib/widgets/side_drawer_item.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; + +// ignore: must_be_immutable +class SideDrawerItem extends StatelessWidget { + SideDrawerItem({ + super.key, + required this.onPressed, + required this.icon, + required this.color, + required this.label, + this.textSize, + this.iconSize, + }) { + textSize ??= 15; + iconSize ??= 25; + } + + void Function() onPressed; + IconData icon; + Color color; + String label; + double? textSize; + double? iconSize; + + @override + Widget build(BuildContext context) { + return TextButton( + onPressed: onPressed, + child: Row( + // mainAxisAlignment: MainAxisAlignment.start, + children: [ + Icon( + icon, + color: color, + ), + const SizedBox( + width: 20, + ), + Text( + label, + style: TextStyle( + fontSize: textSize, + color: color, + ), + ) + ], + ), + ); + } +} diff --git a/frontend/app/linux/.gitignore b/frontend/app/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/frontend/app/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/frontend/app/linux/CMakeLists.txt b/frontend/app/linux/CMakeLists.txt new file mode 100644 index 0000000..c21918f --- /dev/null +++ b/frontend/app/linux/CMakeLists.txt @@ -0,0 +1,139 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +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 "app") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.app") + +# 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 "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>: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) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# 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 dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# 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) + +# 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() diff --git a/frontend/app/linux/flutter/CMakeLists.txt b/frontend/app/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/frontend/app/linux/flutter/CMakeLists.txt @@ -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} +) diff --git a/frontend/app/linux/flutter/generated_plugin_registrant.cc b/frontend/app/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..e71a16d --- /dev/null +++ b/frontend/app/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/frontend/app/linux/flutter/generated_plugin_registrant.h b/frontend/app/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/frontend/app/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/frontend/app/linux/flutter/generated_plugins.cmake b/frontend/app/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..2e1de87 --- /dev/null +++ b/frontend/app/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +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 $) + 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) diff --git a/frontend/app/linux/main.cc b/frontend/app/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/frontend/app/linux/main.cc @@ -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); +} diff --git a/frontend/app/linux/my_application.cc b/frontend/app/linux/my_application.cc new file mode 100644 index 0000000..42d9b08 --- /dev/null +++ b/frontend/app/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#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) + +// 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, "app"); + 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, "app"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + 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); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), 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 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_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/frontend/app/linux/my_application.h b/frontend/app/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/frontend/app/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +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_ diff --git a/frontend/app/macos/.gitignore b/frontend/app/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/frontend/app/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/frontend/app/macos/Flutter/Flutter-Debug.xcconfig b/frontend/app/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/frontend/app/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/frontend/app/macos/Flutter/Flutter-Release.xcconfig b/frontend/app/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/frontend/app/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/frontend/app/macos/Runner.xcodeproj/project.pbxproj b/frontend/app/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d20f4ef --- /dev/null +++ b/frontend/app/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,695 @@ +// !$*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 */ + 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 */; }; +/* 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 = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "app.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* app.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 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 = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* app.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1430; + 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"; + }; +/* 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 = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.app.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/app"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + 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; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + 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.14; + 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; + 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; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + 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.14; + MTL_ENABLE_DEBUG_INFO = YES; + 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; + 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; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + 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.14; + 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 */; +} diff --git a/frontend/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frontend/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/frontend/app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/frontend/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/frontend/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..2b285b4 --- /dev/null +++ b/frontend/app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/macos/Runner.xcworkspace/contents.xcworkspacedata b/frontend/app/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/frontend/app/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/frontend/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frontend/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/frontend/app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/frontend/app/macos/Runner/AppDelegate.swift b/frontend/app/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/frontend/app/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -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" + } +} diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000..82b6f9d Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000..13b35eb Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000..0a3f5fa Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000..bdb5722 Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000..f083318 Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000..326c0e7 Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000..2f1632c Binary files /dev/null and b/frontend/app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/frontend/app/macos/Runner/Base.lproj/MainMenu.xib b/frontend/app/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..80e867a --- /dev/null +++ b/frontend/app/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/app/macos/Runner/Configs/AppInfo.xcconfig b/frontend/app/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..e7b0850 --- /dev/null +++ b/frontend/app/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = app + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.app + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. diff --git a/frontend/app/macos/Runner/Configs/Debug.xcconfig b/frontend/app/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/frontend/app/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/frontend/app/macos/Runner/Configs/Release.xcconfig b/frontend/app/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/frontend/app/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/frontend/app/macos/Runner/Configs/Warnings.xcconfig b/frontend/app/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/frontend/app/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/frontend/app/macos/Runner/DebugProfile.entitlements b/frontend/app/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/frontend/app/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/frontend/app/macos/Runner/Info.plist b/frontend/app/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/frontend/app/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/frontend/app/macos/Runner/MainFlutterWindow.swift b/frontend/app/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/frontend/app/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/frontend/app/macos/Runner/Release.entitlements b/frontend/app/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/frontend/app/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/frontend/app/macos/RunnerTests/RunnerTests.swift b/frontend/app/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..5418c9f --- /dev/null +++ b/frontend/app/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import FlutterMacOS +import Cocoa +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/frontend/app/pubspec.lock b/frontend/app/pubspec.lock new file mode 100644 index 0000000..112b12d --- /dev/null +++ b/frontend/app/pubspec.lock @@ -0,0 +1,341 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03" + url: "https://pub.dev" + source: hosted + version: "3.4.6" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: "direct main" + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: "direct main" + description: + name: collection + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.dev" + source: hosted + version: "1.17.2" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://pub.dev" + source: hosted + version: "1.0.6" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + fixnum: + dependency: "direct main" + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + url: "https://pub.dev" + source: hosted + version: "2.0.3" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + googleapis_auth: + dependency: transitive + description: + name: googleapis_auth + sha256: af7c3a3edf9d0de2e1e0a77e994fae0a581c525fa7012af4fa0d4a52ed9484da + url: "https://pub.dev" + source: hosted + version: "1.4.1" + grpc: + dependency: "direct main" + description: + name: grpc + sha256: e93ee3bce45c134bf44e9728119102358c7cd69de7832d9a874e2e74eb8cab40 + url: "https://pub.dev" + source: hosted + version: "3.2.4" + http: + dependency: transitive + description: + name: http + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + http2: + dependency: transitive + description: + name: http2 + sha256: "38db0c4aa9f1cd238a5d2e86aa0cc7cc91c77e0c6c94ba64bbe85e4ff732a952" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + lints: + dependency: "direct dev" + description: + name: lints + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: transitive + description: + name: meta + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + path: + dependency: "direct main" + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" + url: "https://pub.dev" + source: hosted + version: "3.7.3" + protobuf: + dependency: "direct main" + description: + name: protobuf + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + provider: + dependency: "direct main" + description: + name: provider + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" + source: hosted + version: "6.0.5" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sqflite: + dependency: "direct main" + description: + name: sqflite + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + url: "https://pub.dev" + source: hosted + version: "2.3.0" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" + source: hosted + version: "1.11.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.dev" + source: hosted + version: "0.6.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" +sdks: + dart: ">=3.1.4 <4.0.0" + flutter: ">=3.3.0" diff --git a/frontend/app/pubspec.yaml b/frontend/app/pubspec.yaml new file mode 100644 index 0000000..2960757 --- /dev/null +++ b/frontend/app/pubspec.yaml @@ -0,0 +1,105 @@ +name: app +description: App for df +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: '>=3.1.4 <4.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + async: ^2.2.0 + protobuf: ^3.0.0 + collection: ^1.15.0-nullsafety.4 + flutter: + sdk: flutter + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + grpc: ^3.2.4 + sqflite: ^2.3.0 + path: ^1.8.3 + fixnum: ^1.1.0 + provider: ^6.0.5 + +dev_dependencies: + lints: ^2.0.0 + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - lib/assets/logo_300x200.png + - lib/assets/hero-pattern-300x200.png + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + fonts: + - family: JosefinSans + fonts: + - asset: lib/assets/fonts/JosefinSans-Italic-VariableFont_wght.ttf + style: italic + - asset: lib/assets/fonts/JosefinSans-VariableFont_wght.ttf + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/frontend/app/web/favicon.png b/frontend/app/web/favicon.png new file mode 100644 index 0000000..8aaa46a Binary files /dev/null and b/frontend/app/web/favicon.png differ diff --git a/frontend/app/web/icons/Icon-192.png b/frontend/app/web/icons/Icon-192.png new file mode 100644 index 0000000..b749bfe Binary files /dev/null and b/frontend/app/web/icons/Icon-192.png differ diff --git a/frontend/app/web/icons/Icon-512.png b/frontend/app/web/icons/Icon-512.png new file mode 100644 index 0000000..88cfd48 Binary files /dev/null and b/frontend/app/web/icons/Icon-512.png differ diff --git a/frontend/app/web/icons/Icon-maskable-192.png b/frontend/app/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000..eb9b4d7 Binary files /dev/null and b/frontend/app/web/icons/Icon-maskable-192.png differ diff --git a/frontend/app/web/icons/Icon-maskable-512.png b/frontend/app/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000..d69c566 Binary files /dev/null and b/frontend/app/web/icons/Icon-maskable-512.png differ diff --git a/frontend/app/web/index.html b/frontend/app/web/index.html new file mode 100644 index 0000000..fd44481 --- /dev/null +++ b/frontend/app/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + app + + + + + + + + + + diff --git a/frontend/app/web/manifest.json b/frontend/app/web/manifest.json new file mode 100644 index 0000000..5620a33 --- /dev/null +++ b/frontend/app/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "app", + "short_name": "app", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/frontend/app/windows/.gitignore b/frontend/app/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/frontend/app/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/frontend/app/windows/CMakeLists.txt b/frontend/app/windows/CMakeLists.txt new file mode 100644 index 0000000..db76f0d --- /dev/null +++ b/frontend/app/windows/CMakeLists.txt @@ -0,0 +1,102 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(app 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 "app") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + 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() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# 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_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +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) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# 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. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/frontend/app/windows/flutter/CMakeLists.txt b/frontend/app/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..930d207 --- /dev/null +++ b/frontend/app/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +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. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# 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/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app 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. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/frontend/app/windows/flutter/generated_plugin_registrant.cc b/frontend/app/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8b6d468 --- /dev/null +++ b/frontend/app/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/frontend/app/windows/flutter/generated_plugin_registrant.h b/frontend/app/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/frontend/app/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/frontend/app/windows/flutter/generated_plugins.cmake b/frontend/app/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..b93c4c3 --- /dev/null +++ b/frontend/app/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + 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}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/frontend/app/windows/runner/CMakeLists.txt b/frontend/app/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/frontend/app/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +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} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# 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 build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/frontend/app/windows/runner/Runner.rc b/frontend/app/windows/runner/Runner.rc new file mode 100644 index 0000000..9466db6 --- /dev/null +++ b/frontend/app/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "app" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "app" "\0" + VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "app.exe" "\0" + VALUE "ProductName", "app" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/frontend/app/windows/runner/flutter_window.cpp b/frontend/app/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/frontend/app/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/frontend/app/windows/runner/flutter_window.h b/frontend/app/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/frontend/app/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/frontend/app/windows/runner/main.cpp b/frontend/app/windows/runner/main.cpp new file mode 100644 index 0000000..bc9bfa3 --- /dev/null +++ b/frontend/app/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"app", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/frontend/app/windows/runner/resource.h b/frontend/app/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/frontend/app/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/frontend/app/windows/runner/resources/app_icon.ico b/frontend/app/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000..c04e20c Binary files /dev/null and b/frontend/app/windows/runner/resources/app_icon.ico differ diff --git a/frontend/app/windows/runner/runner.exe.manifest b/frontend/app/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..a42ea76 --- /dev/null +++ b/frontend/app/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/frontend/app/windows/runner/utils.cpp b/frontend/app/windows/runner/utils.cpp new file mode 100644 index 0000000..b2b0873 --- /dev/null +++ b/frontend/app/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length <= 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/frontend/app/windows/runner/utils.h b/frontend/app/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/frontend/app/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/frontend/app/windows/runner/win32_window.cpp b/frontend/app/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/frontend/app/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/frontend/app/windows/runner/win32_window.h b/frontend/app/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/frontend/app/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_