From f57c5198d13381f1c70323100e160648ac18f1ad Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 16:48:39 -0800 Subject: [PATCH 01/22] dependabot.yml and security policy --- .github/SECURITY.md | 14 ++++++++++++++ .github/dependabot.yml | 15 +++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 .github/SECURITY.md create mode 100644 .github/dependabot.yml diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..540a795 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,14 @@ +# Security Policy + +## Supported Versions + +This project is in early development and is not yet ready for production use. + +| Version | Supported | +|---------|--------------------| +| 0.1 | :white_check_mark: | + +## Reporting a Vulnerability + +Easiest way is to [make an issue](https://github.com/microBob/MemoWeave/issues). If you want to +report it privately, you can email me at [email](mailto:microbob@is88.com). \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..de62dfd --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "pub" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From 6f84ffca53db1c088f4edaa1d42d10fff4ef50ee Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 16:53:43 -0800 Subject: [PATCH 02/22] Code of conduct and contribution --- .github/CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++++++++ .github/CONTRIBUTING.md | 30 +++++++++ 2 files changed, 158 insertions(+) create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..996e50c --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +microbob@is88.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..4f3fc23 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contribution Guidelines + +Thanks for your interest in contributing to this project! Here are a few guidelines that will help +accelerate your +process. + +## What are good things to contribute? + +Since this project is still in its early stages, we recommend all contributors report bugs and +problems they may +find. Later, we will consider letting contributors suggest new features and add them. + +## Steps to contribute + +1. Create an issue detailing what you want to accomplish + 1. Follow the templates provided! + 2. Be sure to also highlight if you intend to also write code to implement your request or if + you are simply raising + awareness for an issue or feature. +2. Fork this repo and make your changes +3. Make a pull request, referencing the issue you made in step #1 (use the "fixes" or "closes" + keywords to link your + issue to the PR) +4. We will review and merge the PR if they meet our standards! + +## Code of Conduct + +If you have any questions or concerns, take a look at this repo's Code of Conduct, and don't +hesitate to reach out to +us! \ No newline at end of file From a8d6c3e681e67a782d9e91f27b8934997b754959 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 17:14:45 -0800 Subject: [PATCH 03/22] Issue templates --- .github/ISSUE_TEMPLATE/bug_report.yml | 43 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.yml | 36 ++++++++++++++++++ .github/ISSUE_TEMPLATE/security_report.yml | 43 ++++++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/security_report.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..2cacf8c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,43 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: [ "bug" ] +assignees: + - microBob +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + - type: dropdown + id: version + attributes: + label: Version + description: What version of our software are you running? + options: + - 0.1 (Default) + default: 0 + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: Shell + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) + options: + - label: I agree to follow this project's Code of Conduct + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..f64d11c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,36 @@ +name: Feature Request +description: Suggest a new feature +title: "[Feature]: " +labels: [ "feature" ] +body: + - type: markdown + attributes: + value: | + We encourage suggestions on how to make this app better! + - type: textarea + id: request + attributes: + label: What do you want to see? + description: Describe how it works and who it is for. + placeholder: I wish... + validations: + required: true + - type: dropdown + id: development + attributes: + label: Responsibility + description: Will you be implementing this yourself? + options: + - Yes! + - Can you do it for me? + default: 0 + validations: + required: true + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) + options: + - label: I agree to follow this project's Code of Conduct + required: true diff --git a/.github/ISSUE_TEMPLATE/security_report.yml b/.github/ISSUE_TEMPLATE/security_report.yml new file mode 100644 index 0000000..3b2fc63 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/security_report.yml @@ -0,0 +1,43 @@ +name: Privacy or Security Concern +description: Report a privacy or security concern +title: "[Security]: " +labels: [ "security" ] +assignees: + - microBob +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this report! + - type: textarea + id: what-is-wrong + attributes: + label: What's wrong? + description: Also tell us, what should the correct behavior be? + placeholder: Tell us what you see! + validations: + required: true + - type: dropdown + id: version + attributes: + label: Version + description: What version of our software are you running? + options: + - 0.1 (Default) + default: 0 + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: Shell + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com) + options: + - label: I agree to follow this project's Code of Conduct + required: true From 5e796404e86aea628570f113185c8e1293a00b12 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 17:17:53 -0800 Subject: [PATCH 04/22] PR template --- .github/pull_request_template.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..8757e4a --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,5 @@ +**Brief summary of changes** + +- + +**Notes** \ No newline at end of file From 7111e765c7af8bf205d523f677a86b2b1ba8cae4 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 17:37:00 -0800 Subject: [PATCH 05/22] Autoformat and lint --- .github/dependabot.yml | 2 +- .github/workflows/autoformat-and-lint.yml | 36 +++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/autoformat-and-lint.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index de62dfd..164bb75 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,6 @@ updates: schedule: interval: "weekly" - package-ecosystem: "github-actions" # See documentation for possible values - directory: "/" # Location of package manifests + directory: ".github/" # Location of package manifests schedule: interval: "weekly" diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml new file mode 100644 index 0000000..30a6f2c --- /dev/null +++ b/.github/workflows/autoformat-and-lint.yml @@ -0,0 +1,36 @@ +name: Autoformat and Lint + +on: + pull_request: + +jobs: + autoformat: + name: Autoformat and Lint + if: github.actor != 'dependabot[bot]' + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.WORKFLOW_COMMIT }} + + - name: 🐦 Setup Dart + uses: dart-lang/setup-dart@v1 + + - name: 📝 Format Code + run: dart format . + + - name: 🔧 Fix Linting Issues + run: dart fix --apply + + - name: ✅ Commit code format changes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Autoformat code" + + - name: 🔍 Lint + run: dart analyze \ No newline at end of file From 64b40ef4488a2cfb1f9d80a21bba5deeb4ada7b1 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Mon, 25 Dec 2023 17:53:33 -0800 Subject: [PATCH 06/22] Remove tests, use flutter analyze --- .github/workflows/autoformat-and-lint.yml | 9 +++++-- test/widget_test.dart | 29 ----------------------- 2 files changed, 7 insertions(+), 31 deletions(-) delete mode 100644 test/widget_test.dart diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index 30a6f2c..b06b1a5 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -18,7 +18,7 @@ jobs: ref: ${{ github.head_ref }} token: ${{ secrets.WORKFLOW_COMMIT }} - - name: 🐦 Setup Dart + - name: 🎯 Setup Dart uses: dart-lang/setup-dart@v1 - name: 📝 Format Code @@ -32,5 +32,10 @@ jobs: with: commit_message: "Autoformat code" + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - name: 🔍 Lint - run: dart analyze \ No newline at end of file + run: flutter analyze \ No newline at end of file diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 6f528c2..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,29 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:memoweave/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MemoWeave()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} From 8e5a3467de7d80be376344243b0d8e7ff998de95 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Tue, 26 Dec 2023 18:59:04 -0800 Subject: [PATCH 07/22] Automated builds --- .github/workflows/build.yml | 154 ++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..ac3e241 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,154 @@ +name: Build + +on: + pull_request: + +jobs: + macos: + name: macOS + runs-on: macos-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: 📦 Get dependencies + run: flutter pub get + + - name:  Enable macOS + run: flutter config --enable-macos-desktop + + - name: 🛠️ Build + run: flutter build macos + + windows: + name: Windows + runs-on: windows-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: 📦 Get dependencies + run: flutter pub get + + - name: 🪟 Enable Windows + run: flutter config --enable-windows-desktop + + - name: 🛠️ Build + run: flutter build windows + + linux: + name: Linux + runs-on: ubuntu-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: 📦 Install Linux build dependencies + run: | + sudo apt update -y + sudo apt install libgtk-3-0 libblkid1 liblzma5 + + - name: 📦 Get dependencies + run: flutter pub get + + - name: 🐧 Enable Linux + run: flutter config --enable-linux-desktop + + - name: 🛠️ Build + run: flutter build linux + + android: + name: Android + runs-on: ubuntu-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: ☕ Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + + - name: 📦 Get dependencies + run: flutter pub get + + - name: 🛠️ Build APK + run: flutter build apk + + - name: 🛠️ Build App Bundle + run: flutter build appbundle + + ios: + name: iOS + runs-on: macos-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: 📦 Get dependencies + run: flutter pub get + + - name: 🛠️ Build + run: flutter build ios --no-codesign + + web: + name: Web + runs-on: ubuntu-latest + + steps: + - name: 🛎 Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: 📦 Get dependencies + run: flutter pub get + + - name: 🛠️ Build + run: flutter build web \ No newline at end of file From c037447495a98f5395af31f454399d14f5247414 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 17:45:13 -0800 Subject: [PATCH 08/22] Expanded analysis options --- analysis_options.yaml | 61 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index bbbd642..e8df8d4 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,8 +23,65 @@ linter: # 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 - omit_local_variable_types: true + - camel_case_types + - camel_case_extensions + - file_names + - package_names + - library_prefixes + - non_constant_identifier_names + - constant_identifier_names + - directives_ordering + - lines_longer_than_80_chars + - curly_braces_in_flow_control_structures + - package_api_docs + - public_member_api_docs + - comment_references + - use_string_in_part_of_directives + - implementation_imports + - avoid_relative_lib_imports + - prefer_relative_imports + - avoid_init_to_null + - prefer_adjacent_string_concatenation + - prefer_interpolation_to_compose_strings + - unnecessary_brace_in_string_interps + - prefer_collection_literals + - prefer_is_empty + - prefer_is_not_empty + - avoid_function_literals_in_foreach_calls + - prefer_iterable_whereType + - prefer_function_declarations_over_variables + - unnecessary_lambdas + - unnecessary_getters_setters + - prefer_expression_function_bodies + - unnecessary_this + - prefer_initializing_formals + - empty_constructor_bodies + - unnecessary_new + - unnecessary_const + - avoid_catches_without_on_clauses + - avoid_catching_errors + - use_rethrow_when_possible + - use_to_and_as_if_applicable + - one_member_abstracts + - avoid_classes_with_only_static_members + - prefer_mixin + - prefer_final_fields + - use_setters_to_change_properties + - avoid_setters_without_getters + - avoid_returning_this + - prefer_typing_uninitialized_variables + - type_annotate_public_apis + - omit_local_variable_types + - avoid_types_on_closure_parameters + - type_init_formals + - avoid_return_types_on_setters + - prefer_generic_function_type_aliases + - avoid_private_typedef_functions + - use_function_type_syntax_for_parameters + - avoid_positional_boolean_parameters + - hash_and_equals + - avoid_equals_and_hash_code_on_mutable_classes + - avoid_null_checks_in_equality_operators analyzer: plugins: From a0165e8bd8e5c16227b9d4a5a123fd28297f1b50 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 17:46:18 -0800 Subject: [PATCH 09/22] Analyze dart and flutter --- .github/workflows/autoformat-and-lint.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index b06b1a5..e0c5bc2 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -32,10 +32,13 @@ jobs: with: commit_message: "Autoformat code" + - name: 🔍 Lint Dart + run: dart analyze + - name: 🐦 Setup Flutter uses: subosito/flutter-action@v2 with: channel: 'stable' - - name: 🔍 Lint + - name: 🔍 Lint Flutter run: flutter analyze \ No newline at end of file From 6cecd3df74ea1e81b6952a151734ef8cfd2451a9 Mon Sep 17 00:00:00 2001 From: microBob Date: Thu, 28 Dec 2023 01:47:02 +0000 Subject: [PATCH 10/22] Autoformat code --- lib/main.dart | 6 +- lib/models/block_collection.dart | 8 +- lib/models/block_collection.g.dart | 548 ++++-------------- ...k_texteditingcontroller_props.freezed.dart | 4 +- lib/models/style_node.dart | 16 +- lib/models/style_node.g.dart | 144 ++--- lib/models/thread_collection.dart | 9 +- lib/models/thread_collection.g.dart | 492 ++++------------ lib/models/thread_state.freezed.dart | 13 +- lib/utils/database.dart | 20 +- .../use_block_texteditingcontroller.dart | 4 +- lib/viewmodels/thread_viewmodel.dart | 10 +- 12 files changed, 297 insertions(+), 977 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index df3bf74..15966f6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,7 +8,7 @@ import 'package:stack_trace/stack_trace.dart'; void main() { runApp(const ProviderScope(child: MemoWeave())); - FlutterError.demangleStackTrace = (StackTrace stackTrace) { + FlutterError.demangleStackTrace = (stackTrace) { if (stackTrace is Trace) return stackTrace.vmTrace; if (stackTrace is Chain) return stackTrace.toTrace().vmTrace; return stackTrace; @@ -20,8 +20,7 @@ class MemoWeave extends ConsumerWidget { // This widget is the root of your application. @override - Widget build(BuildContext context, WidgetRef ref) { - return MaterialApp( + Widget build(BuildContext context, WidgetRef ref) => MaterialApp( // title: 'MemoWeave', theme: ThemeData( colorSchemeSeed: Colors.blue, @@ -57,5 +56,4 @@ class MemoWeave extends ConsumerWidget { loading: () => const CircularProgressIndicator(), ), ); - } } diff --git a/lib/models/block_collection.dart b/lib/models/block_collection.dart index 0f97274..c8c6ee2 100644 --- a/lib/models/block_collection.dart +++ b/lib/models/block_collection.dart @@ -88,8 +88,7 @@ class BlockCollection extends ParentModel { String? text, BlockStyle? blockStyle, List? inlineStyles, - }) { - return BlockCollection( + }) => BlockCollection( id: super.id, childIds: childIds ?? super.childIds, parent: parent ?? this.parent, @@ -98,10 +97,7 @@ class BlockCollection extends ParentModel { blockStyle: blockStyle ?? this.blockStyle, inlineStyles: inlineStyles ?? this.inlineStyles, ); - } @override - String toString() { - return 'Block $id: "$text"'; - } + String toString() => 'Block $id: "$text"'; } diff --git a/lib/models/block_collection.g.dart b/lib/models/block_collection.g.dart index 9895449..c48f87b 100644 --- a/lib/models/block_collection.g.dart +++ b/lib/models/block_collection.g.dart @@ -179,41 +179,28 @@ const _BlockCollectionblockStyleValueEnumMap = { 6: BlockStyle.heading6, }; -Id _blockCollectionGetId(BlockCollection object) { - return object.id; -} +Id _blockCollectionGetId(BlockCollection object) => object.id; -List> _blockCollectionGetLinks(BlockCollection object) { - return []; -} +List> _blockCollectionGetLinks(BlockCollection object) => []; void _blockCollectionAttach( IsarCollection col, Id id, BlockCollection object) {} extension BlockCollectionQueryWhereSort on QueryBuilder { - QueryBuilder anyId() { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(const IdWhereClause.any()); - }); - } + QueryBuilder anyId() => QueryBuilder.apply(this, (query) => query.addWhereClause(const IdWhereClause.any())); } extension BlockCollectionQueryWhere on QueryBuilder { QueryBuilder idEqualTo( - Id id) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( + Id id) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( lower: id, upper: id, - )); - }); - } + ))); QueryBuilder - idNotEqualTo(Id id) { - return QueryBuilder.apply(this, (query) { + idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query .addWhereClause( @@ -232,83 +219,58 @@ extension BlockCollectionQueryWhere ); } }); - } QueryBuilder - idGreaterThan(Id id, {bool include = false}) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause( + idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), - ); - }); - } + )); QueryBuilder idLessThan( Id id, - {bool include = false}) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause( + {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), - ); - }); - } + )); QueryBuilder idBetween( Id lowerId, Id upperId, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( + }) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( lower: lowerId, includeLower: includeLower, upper: upperId, includeUpper: includeUpper, - )); - }); - } + ))); } extension BlockCollectionQueryFilter on QueryBuilder { QueryBuilder - blockStyleEqualTo(BlockStyle value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + blockStyleEqualTo(BlockStyle value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'blockStyle', value: value, - )); - }); - } + ))); QueryBuilder blockStyleGreaterThan( BlockStyle value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'blockStyle', value: value, - )); - }); - } + ))); QueryBuilder blockStyleLessThan( BlockStyle value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'blockStyle', value: value, - )); - }); - } + ))); QueryBuilder blockStyleBetween( @@ -316,55 +278,39 @@ extension BlockCollectionQueryFilter BlockStyle upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'blockStyle', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - childIdsElementEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + childIdsElementEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementGreaterThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementLessThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementBetween( @@ -372,88 +318,64 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'childIds', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - childIdsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', length, true, length, true, - ); - }); - } + )); QueryBuilder - childIdsIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, true, 0, true, - ); - }); - } + )); QueryBuilder - childIdsIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, false, 999999, true, - ); - }); - } + )); QueryBuilder childIdsLengthLessThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, true, length, include, - ); - }); - } + )); QueryBuilder childIdsLengthGreaterThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', length, include, 999999, true, - ); - }); - } + )); QueryBuilder childIdsLengthBetween( @@ -461,65 +383,45 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', lower, includeLower, upper, includeUpper, - ); - }); - } + )); QueryBuilder - hasThreadAsParentEqualTo(bool value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + hasThreadAsParentEqualTo(bool value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'hasThreadAsParent', value: value, - )); - }); - } + ))); QueryBuilder - idEqualTo(Id value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + idEqualTo(Id value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idGreaterThan( Id value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idLessThan( Id value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idBetween( @@ -527,88 +429,64 @@ extension BlockCollectionQueryFilter Id upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'id', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - inlineStylesLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + inlineStylesLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', length, true, length, true, - ); - }); - } + )); QueryBuilder - inlineStylesIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + inlineStylesIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', 0, true, 0, true, - ); - }); - } + )); QueryBuilder - inlineStylesIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + inlineStylesIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', 0, false, 999999, true, - ); - }); - } + )); QueryBuilder inlineStylesLengthLessThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', 0, true, length, include, - ); - }); - } + )); QueryBuilder inlineStylesLengthGreaterThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', length, include, 999999, true, - ); - }); - } + )); QueryBuilder inlineStylesLengthBetween( @@ -616,55 +494,39 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'inlineStyles', lower, includeLower, upper, includeUpper, - ); - }); - } + )); QueryBuilder - parentEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + parentEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'parent', value: value, - )); - }); - } + ))); QueryBuilder parentGreaterThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'parent', value: value, - )); - }); - } + ))); QueryBuilder parentLessThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'parent', value: value, - )); - }); - } + ))); QueryBuilder parentBetween( @@ -672,63 +534,47 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'parent', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder textEqualTo( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder textGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder textLessThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder textBetween( @@ -737,98 +583,66 @@ extension BlockCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'text', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder textStartsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder textEndsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - textContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( + textContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( property: r'text', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - textMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( + textMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( property: r'text', wildcard: pattern, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - textIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + textIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'text', value: '', - )); - }); - } + ))); QueryBuilder - textIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + textIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( property: r'text', value: '', - )); - }); - } + ))); } extension BlockCollectionQueryObject on QueryBuilder { QueryBuilder - inlineStylesElement(FilterQuery q) { - return QueryBuilder.apply(this, (query) { - return query.object(q, r'inlineStyles'); - }); - } + inlineStylesElement(FilterQuery q) => QueryBuilder.apply(this, (query) => query.object(q, r'inlineStyles')); } extension BlockCollectionQueryLinks @@ -837,211 +651,91 @@ extension BlockCollectionQueryLinks extension BlockCollectionQuerySortBy on QueryBuilder { QueryBuilder - sortByBlockStyle() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'blockStyle', Sort.asc); - }); - } + sortByBlockStyle() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); QueryBuilder - sortByBlockStyleDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'blockStyle', Sort.desc); - }); - } + sortByBlockStyleDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); QueryBuilder - sortByHasThreadAsParent() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hasThreadAsParent', Sort.asc); - }); - } + sortByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); QueryBuilder - sortByHasThreadAsParentDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hasThreadAsParent', Sort.desc); - }); - } + sortByHasThreadAsParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - QueryBuilder sortByParent() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'parent', Sort.asc); - }); - } + QueryBuilder sortByParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); QueryBuilder - sortByParentDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'parent', Sort.desc); - }); - } + sortByParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.desc)); - QueryBuilder sortByText() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'text', Sort.asc); - }); - } + QueryBuilder sortByText() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); QueryBuilder - sortByTextDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'text', Sort.desc); - }); - } + sortByTextDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.desc)); } extension BlockCollectionQuerySortThenBy on QueryBuilder { QueryBuilder - thenByBlockStyle() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'blockStyle', Sort.asc); - }); - } + thenByBlockStyle() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); QueryBuilder - thenByBlockStyleDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'blockStyle', Sort.desc); - }); - } + thenByBlockStyleDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); QueryBuilder - thenByHasThreadAsParent() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hasThreadAsParent', Sort.asc); - }); - } + thenByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); QueryBuilder - thenByHasThreadAsParentDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'hasThreadAsParent', Sort.desc); - }); - } + thenByHasThreadAsParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - QueryBuilder thenById() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'id', Sort.asc); - }); - } + QueryBuilder thenById() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); - QueryBuilder thenByIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'id', Sort.desc); - }); - } + QueryBuilder thenByIdDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); - QueryBuilder thenByParent() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'parent', Sort.asc); - }); - } + QueryBuilder thenByParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); QueryBuilder - thenByParentDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'parent', Sort.desc); - }); - } + thenByParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.desc)); - QueryBuilder thenByText() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'text', Sort.asc); - }); - } + QueryBuilder thenByText() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); QueryBuilder - thenByTextDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'text', Sort.desc); - }); - } + thenByTextDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.desc)); } extension BlockCollectionQueryWhereDistinct on QueryBuilder { QueryBuilder - distinctByBlockStyle() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'blockStyle'); - }); - } + distinctByBlockStyle() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'blockStyle')); QueryBuilder - distinctByChildIds() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'childIds'); - }); - } + distinctByChildIds() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); QueryBuilder - distinctByHasThreadAsParent() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'hasThreadAsParent'); - }); - } + distinctByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'hasThreadAsParent')); - QueryBuilder distinctByParent() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'parent'); - }); - } + QueryBuilder distinctByParent() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'parent')); QueryBuilder distinctByText( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'text', caseSensitive: caseSensitive); - }); - } + {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'text', caseSensitive: caseSensitive)); } extension BlockCollectionQueryProperty on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'id'); - }); - } + QueryBuilder idProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); QueryBuilder - blockStyleProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'blockStyle'); - }); - } + blockStyleProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'blockStyle')); QueryBuilder, QQueryOperations> - childIdsProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'childIds'); - }); - } + childIdsProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'childIds')); QueryBuilder - hasThreadAsParentProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'hasThreadAsParent'); - }); - } + hasThreadAsParentProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'hasThreadAsParent')); QueryBuilder, QQueryOperations> - inlineStylesProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'inlineStyles'); - }); - } + inlineStylesProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'inlineStyles')); - QueryBuilder parentProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'parent'); - }); - } + QueryBuilder parentProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'parent')); - QueryBuilder textProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'text'); - }); - } + QueryBuilder textProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'text')); } diff --git a/lib/models/block_texteditingcontroller_props.freezed.dart b/lib/models/block_texteditingcontroller_props.freezed.dart index 3bc8baa..054d659 100644 --- a/lib/models/block_texteditingcontroller_props.freezed.dart +++ b/lib/models/block_texteditingcontroller_props.freezed.dart @@ -82,7 +82,7 @@ abstract class _$$BlockTextEditingControllerPropsImplCopyWith<$Res> @useResult $Res call( {BlockCollection blockCollection, - dynamic Function(BlockCollection, BlockTextEditingController) + dynamic Function(BlockCollection, BlockTextEditingController) onBlockTextEditingControllerChangedCallback}); } @@ -164,7 +164,7 @@ class _$BlockTextEditingControllerPropsImpl abstract class _BlockTextEditingControllerProps implements BlockTextEditingControllerProps { const factory _BlockTextEditingControllerProps( - {required final BlockCollection blockCollection, + {required final BlockCollection blockCollection, required final dynamic Function( BlockCollection, BlockTextEditingController) onBlockTextEditingControllerChangedCallback}) = diff --git a/lib/models/style_node.dart b/lib/models/style_node.dart index 39b6a16..7c52190 100644 --- a/lib/models/style_node.dart +++ b/lib/models/style_node.dart @@ -66,31 +66,23 @@ class StyleNode { int? newStartIndex, int? newEndIndex, List? newStyles, - }) { - return StyleNode( + }) => StyleNode( startIndex: newStartIndex ?? startIndex, endIndex: newEndIndex ?? endIndex, styles: newStyles ?? styles, ); - } /// Check if this style node is overlapping with another. /// /// Returns true if other's [startIndex] or [endIndex] is within this node's /// bounds or if this node is within [other]'s bounds. - bool isOverlappingWith(StyleNode other) { - return (startIndex <= other.startIndex && other.startIndex < endIndex) || + bool isOverlappingWith(StyleNode other) => (startIndex <= other.startIndex && other.startIndex < endIndex) || (startIndex <= other.endIndex && other.endIndex < endIndex) || (other.startIndex <= startIndex && endIndex <= other.endIndex); - } /// Determines if this style node ends before [other] begins. - bool operator <(StyleNode other) { - return endIndex <= other.startIndex; - } + bool operator <(StyleNode other) => endIndex <= other.startIndex; /// Determines if this style node starts after [other] ends. - bool operator >(StyleNode other) { - return startIndex >= other.endIndex; - } + bool operator >(StyleNode other) => startIndex >= other.endIndex; } diff --git a/lib/models/style_node.g.dart b/lib/models/style_node.g.dart index a40f5ef..d84a7f6 100644 --- a/lib/models/style_node.g.dart +++ b/lib/models/style_node.g.dart @@ -109,149 +109,105 @@ const _StyleNodestylesValueEnumMap = { extension StyleNodeQueryFilter on QueryBuilder { QueryBuilder endIndexEqualTo( - int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'endIndex', value: value, - )); - }); - } + ))); QueryBuilder endIndexGreaterThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'endIndex', value: value, - )); - }); - } + ))); QueryBuilder endIndexLessThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'endIndex', value: value, - )); - }); - } + ))); QueryBuilder endIndexBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'endIndex', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder startIndexEqualTo( - int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'startIndex', value: value, - )); - }); - } + ))); QueryBuilder startIndexGreaterThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'startIndex', value: value, - )); - }); - } + ))); QueryBuilder startIndexLessThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'startIndex', value: value, - )); - }); - } + ))); QueryBuilder startIndexBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'startIndex', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - stylesElementEqualTo(InlineStyle value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + stylesElementEqualTo(InlineStyle value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'styles', value: value, - )); - }); - } + ))); QueryBuilder stylesElementGreaterThan( InlineStyle value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'styles', value: value, - )); - }); - } + ))); QueryBuilder stylesElementLessThan( InlineStyle value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'styles', value: value, - )); - }); - } + ))); QueryBuilder stylesElementBetween( @@ -259,103 +215,75 @@ extension StyleNodeQueryFilter InlineStyle upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'styles', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder stylesLengthEqualTo( - int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + int length) => QueryBuilder.apply(this, (query) => query.listLength( r'styles', length, true, length, true, - ); - }); - } + )); - QueryBuilder stylesIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + QueryBuilder stylesIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'styles', 0, true, 0, true, - ); - }); - } + )); - QueryBuilder stylesIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + QueryBuilder stylesIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'styles', 0, false, 999999, true, - ); - }); - } + )); QueryBuilder stylesLengthLessThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'styles', 0, true, length, include, - ); - }); - } + )); QueryBuilder stylesLengthGreaterThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'styles', length, include, 999999, true, - ); - }); - } + )); QueryBuilder stylesLengthBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'styles', lower, includeLower, upper, includeUpper, - ); - }); - } + )); } extension StyleNodeQueryObject diff --git a/lib/models/thread_collection.dart b/lib/models/thread_collection.dart index b82d133..8f848d6 100644 --- a/lib/models/thread_collection.dart +++ b/lib/models/thread_collection.dart @@ -40,19 +40,14 @@ class ThreadCollection extends ParentModel { String? spool, String? subject, DateTime? dateTime, - }) { - return ThreadCollection( + }) => ThreadCollection( id: super.id, childIds: childIds ?? super.childIds, spool: spool ?? this.spool, subject: subject ?? this.subject, dateTime: dateTime ?? this.dateTime, ); - } - @override - String toString() { - return 'Thread $id: "$subject"'; - } + String toString() => 'Thread $id: "$subject"'; } diff --git a/lib/models/thread_collection.g.dart b/lib/models/thread_collection.g.dart index 285db2e..0627633 100644 --- a/lib/models/thread_collection.g.dart +++ b/lib/models/thread_collection.g.dart @@ -112,41 +112,28 @@ P _threadCollectionDeserializeProp

( } } -Id _threadCollectionGetId(ThreadCollection object) { - return object.id; -} +Id _threadCollectionGetId(ThreadCollection object) => object.id; -List> _threadCollectionGetLinks(ThreadCollection object) { - return []; -} +List> _threadCollectionGetLinks(ThreadCollection object) => []; void _threadCollectionAttach( IsarCollection col, Id id, ThreadCollection object) {} extension ThreadCollectionQueryWhereSort on QueryBuilder { - QueryBuilder anyId() { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(const IdWhereClause.any()); - }); - } + QueryBuilder anyId() => QueryBuilder.apply(this, (query) => query.addWhereClause(const IdWhereClause.any())); } extension ThreadCollectionQueryWhere on QueryBuilder { QueryBuilder idEqualTo( - Id id) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( + Id id) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( lower: id, upper: id, - )); - }); - } + ))); QueryBuilder - idNotEqualTo(Id id) { - return QueryBuilder.apply(this, (query) { + idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { if (query.whereSort == Sort.asc) { return query .addWhereClause( @@ -165,82 +152,57 @@ extension ThreadCollectionQueryWhere ); } }); - } QueryBuilder - idGreaterThan(Id id, {bool include = false}) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause( + idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( IdWhereClause.greaterThan(lower: id, includeLower: include), - ); - }); - } + )); QueryBuilder - idLessThan(Id id, {bool include = false}) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause( + idLessThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( IdWhereClause.lessThan(upper: id, includeUpper: include), - ); - }); - } + )); QueryBuilder idBetween( Id lowerId, Id upperId, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addWhereClause(IdWhereClause.between( + }) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( lower: lowerId, includeLower: includeLower, upper: upperId, includeUpper: includeUpper, - )); - }); - } + ))); } extension ThreadCollectionQueryFilter on QueryBuilder { QueryBuilder - childIdsElementEqualTo(int value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + childIdsElementEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementGreaterThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementLessThan( int value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'childIds', value: value, - )); - }); - } + ))); QueryBuilder childIdsElementBetween( @@ -248,88 +210,64 @@ extension ThreadCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'childIds', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - childIdsLengthEqualTo(int length) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', length, true, length, true, - ); - }); - } + )); QueryBuilder - childIdsIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, true, 0, true, - ); - }); - } + )); QueryBuilder - childIdsIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.listLength( + childIdsIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, false, 999999, true, - ); - }); - } + )); QueryBuilder childIdsLengthLessThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', 0, true, length, include, - ); - }); - } + )); QueryBuilder childIdsLengthGreaterThan( int length, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', length, include, 999999, true, - ); - }); - } + )); QueryBuilder childIdsLengthBetween( @@ -337,55 +275,39 @@ extension ThreadCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.listLength( + }) => QueryBuilder.apply(this, (query) => query.listLength( r'childIds', lower, includeLower, upper, includeUpper, - ); - }); - } + )); QueryBuilder - dateTimeEqualTo(DateTime value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + dateTimeEqualTo(DateTime value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'dateTime', value: value, - )); - }); - } + ))); QueryBuilder dateTimeGreaterThan( DateTime value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'dateTime', value: value, - )); - }); - } + ))); QueryBuilder dateTimeLessThan( DateTime value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'dateTime', value: value, - )); - }); - } + ))); QueryBuilder dateTimeBetween( @@ -393,55 +315,39 @@ extension ThreadCollectionQueryFilter DateTime upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'dateTime', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder - idEqualTo(Id value) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + idEqualTo(Id value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idGreaterThan( Id value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idLessThan( Id value, { bool include = false, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'id', value: value, - )); - }); - } + ))); QueryBuilder idBetween( @@ -449,63 +355,47 @@ extension ThreadCollectionQueryFilter Id upper, { bool includeLower = true, bool includeUpper = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'id', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, - )); - }); - } + ))); QueryBuilder spoolEqualTo( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder spoolGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder spoolLessThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder spoolBetween( @@ -514,134 +404,94 @@ extension ThreadCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'spool', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder spoolStartsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder spoolEndsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - spoolContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( + spoolContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( property: r'spool', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - spoolMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( + spoolMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( property: r'spool', wildcard: pattern, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - spoolIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + spoolIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'spool', value: '', - )); - }); - } + ))); QueryBuilder - spoolIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + spoolIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( property: r'spool', value: '', - )); - }); - } + ))); QueryBuilder subjectEqualTo( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder subjectGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( include: include, property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder subjectLessThan( String value, { bool include = false, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.lessThan( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( include: include, property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder subjectBetween( @@ -650,88 +500,60 @@ extension ThreadCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.between( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( property: r'subject', lower: lower, includeLower: includeLower, upper: upper, includeUpper: includeUpper, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder subjectStartsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.startsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder subjectEndsWith( String value, { bool caseSensitive = true, - }) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.endsWith( + }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - subjectContains(String value, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.contains( + subjectContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( property: r'subject', value: value, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - subjectMatches(String pattern, {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.matches( + subjectMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( property: r'subject', wildcard: pattern, caseSensitive: caseSensitive, - )); - }); - } + ))); QueryBuilder - subjectIsEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.equalTo( + subjectIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( property: r'subject', value: '', - )); - }); - } + ))); QueryBuilder - subjectIsNotEmpty() { - return QueryBuilder.apply(this, (query) { - return query.addFilterCondition(FilterCondition.greaterThan( + subjectIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( property: r'subject', value: '', - )); - }); - } + ))); } extension ThreadCollectionQueryObject @@ -743,166 +565,74 @@ extension ThreadCollectionQueryLinks extension ThreadCollectionQuerySortBy on QueryBuilder { QueryBuilder - sortByDateTime() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'dateTime', Sort.asc); - }); - } + sortByDateTime() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.asc)); QueryBuilder - sortByDateTimeDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'dateTime', Sort.desc); - }); - } + sortByDateTimeDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - QueryBuilder sortBySpool() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'spool', Sort.asc); - }); - } + QueryBuilder sortBySpool() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.asc)); QueryBuilder - sortBySpoolDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'spool', Sort.desc); - }); - } + sortBySpoolDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.desc)); QueryBuilder - sortBySubject() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'subject', Sort.asc); - }); - } + sortBySubject() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.asc)); QueryBuilder - sortBySubjectDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'subject', Sort.desc); - }); - } + sortBySubjectDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.desc)); } extension ThreadCollectionQuerySortThenBy on QueryBuilder { QueryBuilder - thenByDateTime() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'dateTime', Sort.asc); - }); - } + thenByDateTime() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.asc)); QueryBuilder - thenByDateTimeDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'dateTime', Sort.desc); - }); - } + thenByDateTimeDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - QueryBuilder thenById() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'id', Sort.asc); - }); - } + QueryBuilder thenById() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); QueryBuilder - thenByIdDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'id', Sort.desc); - }); - } + thenByIdDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); - QueryBuilder thenBySpool() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'spool', Sort.asc); - }); - } + QueryBuilder thenBySpool() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.asc)); QueryBuilder - thenBySpoolDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'spool', Sort.desc); - }); - } + thenBySpoolDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.desc)); QueryBuilder - thenBySubject() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'subject', Sort.asc); - }); - } + thenBySubject() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.asc)); QueryBuilder - thenBySubjectDesc() { - return QueryBuilder.apply(this, (query) { - return query.addSortBy(r'subject', Sort.desc); - }); - } + thenBySubjectDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.desc)); } extension ThreadCollectionQueryWhereDistinct on QueryBuilder { QueryBuilder - distinctByChildIds() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'childIds'); - }); - } + distinctByChildIds() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); QueryBuilder - distinctByDateTime() { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'dateTime'); - }); - } + distinctByDateTime() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'dateTime')); QueryBuilder distinctBySpool( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'spool', caseSensitive: caseSensitive); - }); - } + {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'spool', caseSensitive: caseSensitive)); QueryBuilder distinctBySubject( - {bool caseSensitive = true}) { - return QueryBuilder.apply(this, (query) { - return query.addDistinctBy(r'subject', caseSensitive: caseSensitive); - }); - } + {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'subject', caseSensitive: caseSensitive)); } extension ThreadCollectionQueryProperty on QueryBuilder { - QueryBuilder idProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'id'); - }); - } + QueryBuilder idProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); QueryBuilder, QQueryOperations> - childIdsProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'childIds'); - }); - } + childIdsProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'childIds')); QueryBuilder - dateTimeProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'dateTime'); - }); - } + dateTimeProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'dateTime')); - QueryBuilder spoolProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'spool'); - }); - } + QueryBuilder spoolProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'spool')); - QueryBuilder subjectProperty() { - return QueryBuilder.apply(this, (query) { - return query.addPropertyName(r'subject'); - }); - } + QueryBuilder subjectProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'subject')); } diff --git a/lib/models/thread_state.freezed.dart b/lib/models/thread_state.freezed.dart index bba3981..56c9a1d 100644 --- a/lib/models/thread_state.freezed.dart +++ b/lib/models/thread_state.freezed.dart @@ -222,12 +222,13 @@ class _$ThreadStateImpl implements _ThreadState { } abstract class _ThreadState implements ThreadState { - const factory _ThreadState({required final int idOfBlockInFocus, - required final Offset caretGlobalPosition, - required final int caretTextOffset, - required final ThreadCollection threadCollection, - required final List - blockCollectionTreeNodes}) = _$ThreadStateImpl; + const factory _ThreadState( + {required final int idOfBlockInFocus, + required final Offset caretGlobalPosition, + required final int caretTextOffset, + required final ThreadCollection threadCollection, + required final List + blockCollectionTreeNodes}) = _$ThreadStateImpl; @override // Block focus. int get idOfBlockInFocus; diff --git a/lib/utils/database.dart b/lib/utils/database.dart index 3f3ca13..e15efd0 100644 --- a/lib/utils/database.dart +++ b/lib/utils/database.dart @@ -36,13 +36,9 @@ class DatabaseManager { return threadCollection; } - Stream onBlockChanged(Id id) { - return _isar.blockCollections.watchObject(id); - } + Stream onBlockChanged(Id id) => _isar.blockCollections.watchObject(id); - Stream onThreadChanged(Id id) { - return _isar.threadCollections.watchObject(id); - } + Stream onThreadChanged(Id id) => _isar.threadCollections.watchObject(id); /// Setter function for the given [blockCollection]. /// @@ -60,17 +56,13 @@ class DatabaseManager { } /// Get all spool names. - Set get spools { - return _isar.threadCollections + Set get spools => _isar.threadCollections .where() .spoolProperty() .findAllSync() .toSet(); - } - List get threadIds { - return _isar.threadCollections.where().idProperty().findAllSync(); - } + List get threadIds => _isar.threadCollections.where().idProperty().findAllSync(); Id? getIdOfBlockBefore(BlockCollection sourceBlockCollection) { // TODO: handle looking at child blocks @@ -177,11 +169,9 @@ class DatabaseManager { } IsarCollection _getParentCollectionsOf( - BlockCollection blockCollection) { - return blockCollection.hasThreadAsParent + BlockCollection blockCollection) => blockCollection.hasThreadAsParent ? _isar.threadCollections : _isar.blockCollections; - } ParentModel _getParentCollectionOf(BlockCollection blockCollection) { final parentCollection = _getParentCollectionsOf(blockCollection) diff --git a/lib/utils/use_block_texteditingcontroller.dart b/lib/utils/use_block_texteditingcontroller.dart index 1cc879f..a24940f 100644 --- a/lib/utils/use_block_texteditingcontroller.dart +++ b/lib/utils/use_block_texteditingcontroller.dart @@ -7,14 +7,12 @@ import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; BlockTextEditingController useBlockTextEditingController({ required List keys, required BlockTextEditingControllerProps blockTextEditingControllerProps, -}) { - return use( +}) => use( _BlockTextEditingController( keys: keys, blockTextEditingControllerProps: blockTextEditingControllerProps, ), ); -} /// Hook for [BlockTextEditingController]. class _BlockTextEditingController extends Hook { diff --git a/lib/viewmodels/thread_viewmodel.dart b/lib/viewmodels/thread_viewmodel.dart index d72654b..18ace49 100644 --- a/lib/viewmodels/thread_viewmodel.dart +++ b/lib/viewmodels/thread_viewmodel.dart @@ -52,11 +52,9 @@ class ThreadViewModel extends _$ThreadViewModel { } /// Generate spool dropdown menu entries. - List> spoolsAsDropdownMenuEntries() { - return databaseProps.databaseManager.spools + List> spoolsAsDropdownMenuEntries() => databaseProps.databaseManager.spools .map((element) => DropdownMenuEntry(value: element, label: element)) .toList(); - } /// Handle updating Thread collection when spool changes. /// @@ -242,7 +240,7 @@ class ThreadViewModel extends _$ThreadViewModel { // Enter, back space, and delete. case LogicalKeyboardKey.enter || LogicalKeyboardKey.numpadEnter: - // Split text between current and next Block. + // Split text between current and next Block. final nextBlockCollection = BlockCollection( parent: blockCallbackProps.blockCollection.parent, text: blockCallbackProps.blockTextEditingController.selection @@ -510,14 +508,14 @@ class ThreadViewModel extends _$ThreadViewModel { return BlockCollectionTreeNode( blockCollection: currentBlock, childBlocks: currentBlock.childIds - .map((childId) => createBlockCollectionTree(childId)) + .map(createBlockCollectionTree) .toList(), ); } // Create the list of trees. return threadCollection.childIds - .map((childId) => createBlockCollectionTree(childId)) + .map(createBlockCollectionTree) .toList(); } } From 440b4c462deaf23ec18acdee06dc92e9eaec74c8 Mon Sep 17 00:00:00 2001 From: microBob Date: Thu, 28 Dec 2023 01:48:04 +0000 Subject: [PATCH 11/22] Autoformat code --- lib/main.dart | 64 +- lib/models/block_collection.dart | 19 +- lib/models/block_collection.g.dart | 795 +++++++++++------- lib/models/style_node.dart | 18 +- lib/models/style_node.g.dart | 263 +++--- lib/models/thread_collection.dart | 15 +- lib/models/thread_collection.g.dart | 741 +++++++++------- lib/utils/database.dart | 23 +- .../use_block_texteditingcontroller.dart | 13 +- lib/viewmodels/thread_viewmodel.dart | 16 +- 10 files changed, 1163 insertions(+), 804 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 15966f6..77aab36 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,39 +21,39 @@ class MemoWeave extends ConsumerWidget { // This widget is the root of your application. @override Widget build(BuildContext context, WidgetRef ref) => MaterialApp( - // title: 'MemoWeave', - theme: ThemeData( - colorSchemeSeed: Colors.blue, - useMaterial3: true, - ), - home: ref.watch(databaseManagerProvider).when( - data: (databaseManager) { - final threadIds = databaseManager.threadIds; + // title: 'MemoWeave', + theme: ThemeData( + colorSchemeSeed: Colors.blue, + useMaterial3: true, + ), + home: ref.watch(databaseManagerProvider).when( + data: (databaseManager) { + final threadIds = databaseManager.threadIds; - return Scaffold( - appBar: AppBar( - title: const Text('MemoWeave'), - ), - body: SafeArea( - minimum: const EdgeInsets.all(24), - // child: Placeholder(), - child: ListView.builder( - itemBuilder: (context, index) => ThreadView( - databaseProps: DatabaseProps( - id: threadIds[index], - databaseManager: databaseManager), + return Scaffold( + appBar: AppBar( + title: const Text('MemoWeave'), + ), + body: SafeArea( + minimum: const EdgeInsets.all(24), + // child: Placeholder(), + child: ListView.builder( + itemBuilder: (context, index) => ThreadView( + databaseProps: DatabaseProps( + id: threadIds[index], + databaseManager: databaseManager), + ), + itemCount: threadIds.length, ), - itemCount: threadIds.length, ), - ), - floatingActionButton: FloatingActionButton( - onPressed: databaseManager.createNewThread, - child: const Icon(Icons.create), - ), - ); - }, - error: (error, stackFrame) => Text('$stackFrame: $error'), - loading: () => const CircularProgressIndicator(), - ), - ); + floatingActionButton: FloatingActionButton( + onPressed: databaseManager.createNewThread, + child: const Icon(Icons.create), + ), + ); + }, + error: (error, stackFrame) => Text('$stackFrame: $error'), + loading: () => const CircularProgressIndicator(), + ), + ); } diff --git a/lib/models/block_collection.dart b/lib/models/block_collection.dart index c8c6ee2..dca173f 100644 --- a/lib/models/block_collection.dart +++ b/lib/models/block_collection.dart @@ -88,15 +88,16 @@ class BlockCollection extends ParentModel { String? text, BlockStyle? blockStyle, List? inlineStyles, - }) => BlockCollection( - id: super.id, - childIds: childIds ?? super.childIds, - parent: parent ?? this.parent, - hasThreadAsParent: hasThreadAsParent ?? this.hasThreadAsParent, - text: text ?? this.text, - blockStyle: blockStyle ?? this.blockStyle, - inlineStyles: inlineStyles ?? this.inlineStyles, - ); + }) => + BlockCollection( + id: super.id, + childIds: childIds ?? super.childIds, + parent: parent ?? this.parent, + hasThreadAsParent: hasThreadAsParent ?? this.hasThreadAsParent, + text: text ?? this.text, + blockStyle: blockStyle ?? this.blockStyle, + inlineStyles: inlineStyles ?? this.inlineStyles, + ); @override String toString() => 'Block $id: "$text"'; diff --git a/lib/models/block_collection.g.dart b/lib/models/block_collection.g.dart index c48f87b..3a6f36e 100644 --- a/lib/models/block_collection.g.dart +++ b/lib/models/block_collection.g.dart @@ -181,96 +181,118 @@ const _BlockCollectionblockStyleValueEnumMap = { Id _blockCollectionGetId(BlockCollection object) => object.id; -List> _blockCollectionGetLinks(BlockCollection object) => []; +List> _blockCollectionGetLinks(BlockCollection object) => + []; void _blockCollectionAttach( IsarCollection col, Id id, BlockCollection object) {} extension BlockCollectionQueryWhereSort on QueryBuilder { - QueryBuilder anyId() => QueryBuilder.apply(this, (query) => query.addWhereClause(const IdWhereClause.any())); + QueryBuilder anyId() => + QueryBuilder.apply( + this, (query) => query.addWhereClause(const IdWhereClause.any())); } extension BlockCollectionQueryWhere on QueryBuilder { QueryBuilder idEqualTo( - Id id) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - ))); + Id id) => + QueryBuilder.apply( + this, + (query) => query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + ))); QueryBuilder idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { - if (query.whereSort == Sort.asc) { - return query - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ) - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ); - } else { - return query - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ) - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ); - } - }); + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); QueryBuilder - idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: include), - )); + idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply( + this, + (query) => query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + )); QueryBuilder idLessThan( - Id id, - {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: include), - )); + Id id, + {bool include = false}) => + QueryBuilder.apply( + this, + (query) => query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + )); QueryBuilder idBetween( Id lowerId, Id upperId, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ))); } extension BlockCollectionQueryFilter on QueryBuilder { QueryBuilder - blockStyleEqualTo(BlockStyle value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'blockStyle', - value: value, - ))); + blockStyleEqualTo(BlockStyle value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'blockStyle', + value: value, + ))); QueryBuilder blockStyleGreaterThan( BlockStyle value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'blockStyle', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'blockStyle', + value: value, + ))); QueryBuilder blockStyleLessThan( BlockStyle value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'blockStyle', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'blockStyle', + value: value, + ))); QueryBuilder blockStyleBetween( @@ -278,39 +300,50 @@ extension BlockCollectionQueryFilter BlockStyle upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'blockStyle', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsElementEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'childIds', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'blockStyle', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); + + QueryBuilder + childIdsElementEqualTo(int value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementGreaterThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'childIds', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementLessThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'childIds', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementBetween( @@ -318,64 +351,79 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'childIds', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - length, - true, - length, - true, - )); - - QueryBuilder - childIdsIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - true, - 0, - true, - )); - - QueryBuilder - childIdsIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - false, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'childIds', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); + + QueryBuilder + childIdsLengthEqualTo(int length) => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + length, + true, + length, + true, + )); + + QueryBuilder + childIdsIsEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + true, + 0, + true, + )); + + QueryBuilder + childIdsIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + false, + 999999, + true, + )); QueryBuilder childIdsLengthLessThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - true, - length, - include, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + true, + length, + include, + )); QueryBuilder childIdsLengthGreaterThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - length, - include, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + length, + include, + 999999, + true, + )); QueryBuilder childIdsLengthBetween( @@ -383,45 +431,58 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - hasThreadAsParentEqualTo(bool value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'hasThreadAsParent', - value: value, - ))); - - QueryBuilder - idEqualTo(Id value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + lower, + includeLower, + upper, + includeUpper, + )); + + QueryBuilder + hasThreadAsParentEqualTo(bool value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'hasThreadAsParent', + value: value, + ))); + + QueryBuilder + idEqualTo(Id value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + ))); QueryBuilder idGreaterThan( Id value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ))); QueryBuilder idLessThan( Id value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ))); QueryBuilder idBetween( @@ -429,64 +490,79 @@ extension BlockCollectionQueryFilter Id upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - inlineStylesLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - length, - true, - length, - true, - )); - - QueryBuilder - inlineStylesIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - 0, - true, - 0, - true, - )); - - QueryBuilder - inlineStylesIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - 0, - false, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); + + QueryBuilder + inlineStylesLengthEqualTo(int length) => QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + length, + true, + length, + true, + )); + + QueryBuilder + inlineStylesIsEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + 0, + true, + 0, + true, + )); + + QueryBuilder + inlineStylesIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + 0, + false, + 999999, + true, + )); QueryBuilder inlineStylesLengthLessThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - 0, - true, - length, - include, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + 0, + true, + length, + include, + )); QueryBuilder inlineStylesLengthGreaterThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - length, - include, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + length, + include, + 999999, + true, + )); QueryBuilder inlineStylesLengthBetween( @@ -494,39 +570,50 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'inlineStyles', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - parentEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'parent', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'inlineStyles', + lower, + includeLower, + upper, + includeUpper, + )); + + QueryBuilder + parentEqualTo(int value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'parent', + value: value, + ))); QueryBuilder parentGreaterThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'parent', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'parent', + value: value, + ))); QueryBuilder parentLessThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'parent', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'parent', + value: value, + ))); QueryBuilder parentBetween( @@ -534,47 +621,59 @@ extension BlockCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'parent', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'parent', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); QueryBuilder textEqualTo( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder textGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder textLessThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder textBetween( @@ -583,66 +682,86 @@ extension BlockCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'text', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'text', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ))); QueryBuilder textStartsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.startsWith( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder textEndsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( - property: r'text', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: '', - ))); - - QueryBuilder - textIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'text', - value: '', - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.endsWith( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + textContains(String value, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.contains( + property: r'text', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + textMatches(String pattern, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.matches( + property: r'text', + wildcard: pattern, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + textIsEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'text', + value: '', + ))); + + QueryBuilder + textIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + property: r'text', + value: '', + ))); } extension BlockCollectionQueryObject on QueryBuilder { QueryBuilder - inlineStylesElement(FilterQuery q) => QueryBuilder.apply(this, (query) => query.object(q, r'inlineStyles')); + inlineStylesElement(FilterQuery q) => + QueryBuilder.apply(this, (query) => query.object(q, r'inlineStyles')); } extension BlockCollectionQueryLinks @@ -651,91 +770,125 @@ extension BlockCollectionQueryLinks extension BlockCollectionQuerySortBy on QueryBuilder { QueryBuilder - sortByBlockStyle() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); + sortByBlockStyle() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); QueryBuilder - sortByBlockStyleDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); + sortByBlockStyleDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); QueryBuilder - sortByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); + sortByHasThreadAsParent() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); QueryBuilder - sortByHasThreadAsParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); + sortByHasThreadAsParentDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - QueryBuilder sortByParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); + QueryBuilder sortByParent() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); QueryBuilder - sortByParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.desc)); + sortByParentDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'parent', Sort.desc)); - QueryBuilder sortByText() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); + QueryBuilder sortByText() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); QueryBuilder - sortByTextDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.desc)); + sortByTextDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'text', Sort.desc)); } extension BlockCollectionQuerySortThenBy on QueryBuilder { QueryBuilder - thenByBlockStyle() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); + thenByBlockStyle() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); QueryBuilder - thenByBlockStyleDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); + thenByBlockStyleDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); QueryBuilder - thenByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); + thenByHasThreadAsParent() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); QueryBuilder - thenByHasThreadAsParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); + thenByHasThreadAsParentDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - QueryBuilder thenById() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); + QueryBuilder thenById() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); - QueryBuilder thenByIdDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); + QueryBuilder thenByIdDesc() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); - QueryBuilder thenByParent() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); + QueryBuilder thenByParent() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); QueryBuilder - thenByParentDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.desc)); + thenByParentDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'parent', Sort.desc)); - QueryBuilder thenByText() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); + QueryBuilder thenByText() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); QueryBuilder - thenByTextDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.desc)); + thenByTextDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'text', Sort.desc)); } extension BlockCollectionQueryWhereDistinct on QueryBuilder { QueryBuilder - distinctByBlockStyle() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'blockStyle')); + distinctByBlockStyle() => QueryBuilder.apply( + this, (query) => query.addDistinctBy(r'blockStyle')); QueryBuilder - distinctByChildIds() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); + distinctByChildIds() => + QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); QueryBuilder - distinctByHasThreadAsParent() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'hasThreadAsParent')); + distinctByHasThreadAsParent() => QueryBuilder.apply( + this, (query) => query.addDistinctBy(r'hasThreadAsParent')); - QueryBuilder distinctByParent() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'parent')); + QueryBuilder + distinctByParent() => + QueryBuilder.apply(this, (query) => query.addDistinctBy(r'parent')); QueryBuilder distinctByText( - {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'text', caseSensitive: caseSensitive)); + {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => + query.addDistinctBy(r'text', caseSensitive: caseSensitive)); } extension BlockCollectionQueryProperty on QueryBuilder { - QueryBuilder idProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); + QueryBuilder idProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); QueryBuilder - blockStyleProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'blockStyle')); + blockStyleProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'blockStyle')); QueryBuilder, QQueryOperations> - childIdsProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'childIds')); + childIdsProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'childIds')); QueryBuilder - hasThreadAsParentProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'hasThreadAsParent')); + hasThreadAsParentProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'hasThreadAsParent')); QueryBuilder, QQueryOperations> - inlineStylesProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'inlineStyles')); + inlineStylesProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'inlineStyles')); - QueryBuilder parentProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'parent')); + QueryBuilder parentProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'parent')); - QueryBuilder textProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'text')); + QueryBuilder textProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'text')); } diff --git a/lib/models/style_node.dart b/lib/models/style_node.dart index 7c52190..746c9da 100644 --- a/lib/models/style_node.dart +++ b/lib/models/style_node.dart @@ -66,19 +66,21 @@ class StyleNode { int? newStartIndex, int? newEndIndex, List? newStyles, - }) => StyleNode( - startIndex: newStartIndex ?? startIndex, - endIndex: newEndIndex ?? endIndex, - styles: newStyles ?? styles, - ); + }) => + StyleNode( + startIndex: newStartIndex ?? startIndex, + endIndex: newEndIndex ?? endIndex, + styles: newStyles ?? styles, + ); /// Check if this style node is overlapping with another. /// /// Returns true if other's [startIndex] or [endIndex] is within this node's /// bounds or if this node is within [other]'s bounds. - bool isOverlappingWith(StyleNode other) => (startIndex <= other.startIndex && other.startIndex < endIndex) || - (startIndex <= other.endIndex && other.endIndex < endIndex) || - (other.startIndex <= startIndex && endIndex <= other.endIndex); + bool isOverlappingWith(StyleNode other) => + (startIndex <= other.startIndex && other.startIndex < endIndex) || + (startIndex <= other.endIndex && other.endIndex < endIndex) || + (other.startIndex <= startIndex && endIndex <= other.endIndex); /// Determines if this style node ends before [other] begins. bool operator <(StyleNode other) => endIndex <= other.startIndex; diff --git a/lib/models/style_node.g.dart b/lib/models/style_node.g.dart index d84a7f6..9289843 100644 --- a/lib/models/style_node.g.dart +++ b/lib/models/style_node.g.dart @@ -109,105 +109,137 @@ const _StyleNodestylesValueEnumMap = { extension StyleNodeQueryFilter on QueryBuilder { QueryBuilder endIndexEqualTo( - int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'endIndex', - value: value, - ))); + int value) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'endIndex', + value: value, + ))); QueryBuilder endIndexGreaterThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'endIndex', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'endIndex', + value: value, + ))); QueryBuilder endIndexLessThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'endIndex', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'endIndex', + value: value, + ))); QueryBuilder endIndexBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'endIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'endIndex', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); QueryBuilder startIndexEqualTo( - int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'startIndex', - value: value, - ))); + int value) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'startIndex', + value: value, + ))); QueryBuilder startIndexGreaterThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'startIndex', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'startIndex', + value: value, + ))); QueryBuilder startIndexLessThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'startIndex', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'startIndex', + value: value, + ))); QueryBuilder startIndexBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'startIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'startIndex', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); QueryBuilder - stylesElementEqualTo(InlineStyle value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'styles', - value: value, - ))); + stylesElementEqualTo(InlineStyle value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'styles', + value: value, + ))); QueryBuilder stylesElementGreaterThan( InlineStyle value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'styles', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'styles', + value: value, + ))); QueryBuilder stylesElementLessThan( InlineStyle value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'styles', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'styles', + value: value, + ))); QueryBuilder stylesElementBetween( @@ -215,75 +247,96 @@ extension StyleNodeQueryFilter InlineStyle upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'styles', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'styles', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); QueryBuilder stylesLengthEqualTo( - int length) => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - length, - true, - length, - true, - )); + int length) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + length, + true, + length, + true, + )); - QueryBuilder stylesIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - 0, - true, - 0, - true, - )); + QueryBuilder stylesIsEmpty() => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + 0, + true, + 0, + true, + )); - QueryBuilder stylesIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - 0, - false, - 999999, - true, - )); + QueryBuilder + stylesIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + 0, + false, + 999999, + true, + )); QueryBuilder stylesLengthLessThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - 0, - true, - length, - include, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + 0, + true, + length, + include, + )); QueryBuilder stylesLengthGreaterThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - length, - include, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + length, + include, + 999999, + true, + )); QueryBuilder stylesLengthBetween( int lower, int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'styles', - lower, - includeLower, - upper, - includeUpper, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'styles', + lower, + includeLower, + upper, + includeUpper, + )); } extension StyleNodeQueryObject diff --git a/lib/models/thread_collection.dart b/lib/models/thread_collection.dart index 8f848d6..cff4135 100644 --- a/lib/models/thread_collection.dart +++ b/lib/models/thread_collection.dart @@ -40,13 +40,14 @@ class ThreadCollection extends ParentModel { String? spool, String? subject, DateTime? dateTime, - }) => ThreadCollection( - id: super.id, - childIds: childIds ?? super.childIds, - spool: spool ?? this.spool, - subject: subject ?? this.subject, - dateTime: dateTime ?? this.dateTime, - ); + }) => + ThreadCollection( + id: super.id, + childIds: childIds ?? super.childIds, + spool: spool ?? this.spool, + subject: subject ?? this.subject, + dateTime: dateTime ?? this.dateTime, + ); @override String toString() => 'Thread $id: "$subject"'; diff --git a/lib/models/thread_collection.g.dart b/lib/models/thread_collection.g.dart index 0627633..4511e1b 100644 --- a/lib/models/thread_collection.g.dart +++ b/lib/models/thread_collection.g.dart @@ -114,95 +114,117 @@ P _threadCollectionDeserializeProp

( Id _threadCollectionGetId(ThreadCollection object) => object.id; -List> _threadCollectionGetLinks(ThreadCollection object) => []; +List> _threadCollectionGetLinks( + ThreadCollection object) => + []; void _threadCollectionAttach( IsarCollection col, Id id, ThreadCollection object) {} extension ThreadCollectionQueryWhereSort on QueryBuilder { - QueryBuilder anyId() => QueryBuilder.apply(this, (query) => query.addWhereClause(const IdWhereClause.any())); + QueryBuilder anyId() => + QueryBuilder.apply( + this, (query) => query.addWhereClause(const IdWhereClause.any())); } extension ThreadCollectionQueryWhere on QueryBuilder { QueryBuilder idEqualTo( - Id id) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - ))); + Id id) => + QueryBuilder.apply( + this, + (query) => query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + ))); QueryBuilder idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { - if (query.whereSort == Sort.asc) { - return query - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ) - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ); - } else { - return query - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ) - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ); - } - }); + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); QueryBuilder - idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: include), - )); + idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply( + this, + (query) => query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + )); QueryBuilder - idLessThan(Id id, {bool include = false}) => QueryBuilder.apply(this, (query) => query.addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: include), - )); + idLessThan(Id id, {bool include = false}) => QueryBuilder.apply( + this, + (query) => query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + )); QueryBuilder idBetween( Id lowerId, Id upperId, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + ))); } extension ThreadCollectionQueryFilter on QueryBuilder { QueryBuilder - childIdsElementEqualTo(int value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'childIds', - value: value, - ))); + childIdsElementEqualTo(int value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementGreaterThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'childIds', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementLessThan( int value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'childIds', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'childIds', + value: value, + ))); QueryBuilder childIdsElementBetween( @@ -210,64 +232,79 @@ extension ThreadCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'childIds', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsLengthEqualTo(int length) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - length, - true, - length, - true, - )); - - QueryBuilder - childIdsIsEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - true, - 0, - true, - )); - - QueryBuilder - childIdsIsNotEmpty() => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - false, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'childIds', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); + + QueryBuilder + childIdsLengthEqualTo(int length) => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + length, + true, + length, + true, + )); + + QueryBuilder + childIdsIsEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + true, + 0, + true, + )); + + QueryBuilder + childIdsIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + false, + 999999, + true, + )); QueryBuilder childIdsLengthLessThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - 0, - true, - length, - include, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + 0, + true, + length, + include, + )); QueryBuilder childIdsLengthGreaterThan( int length, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - length, - include, - 999999, - true, - )); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + length, + include, + 999999, + true, + )); QueryBuilder childIdsLengthBetween( @@ -275,39 +312,50 @@ extension ThreadCollectionQueryFilter int upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.listLength( - r'childIds', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - dateTimeEqualTo(DateTime value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'dateTime', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.listLength( + r'childIds', + lower, + includeLower, + upper, + includeUpper, + )); + + QueryBuilder + dateTimeEqualTo(DateTime value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'dateTime', + value: value, + ))); QueryBuilder dateTimeGreaterThan( DateTime value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateTime', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'dateTime', + value: value, + ))); QueryBuilder dateTimeLessThan( DateTime value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateTime', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'dateTime', + value: value, + ))); QueryBuilder dateTimeBetween( @@ -315,39 +363,50 @@ extension ThreadCollectionQueryFilter DateTime upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'dateTime', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - idEqualTo(Id value) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'dateTime', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); + + QueryBuilder + idEqualTo(Id value) => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + ))); QueryBuilder idGreaterThan( Id value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + ))); QueryBuilder idLessThan( Id value, { bool include = false, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + ))); QueryBuilder idBetween( @@ -355,47 +414,59 @@ extension ThreadCollectionQueryFilter Id upper, { bool includeLower = true, bool includeUpper = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + ))); QueryBuilder spoolEqualTo( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder spoolGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder spoolLessThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder spoolBetween( @@ -404,94 +475,122 @@ extension ThreadCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'spool', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'spool', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ))); QueryBuilder spoolStartsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.startsWith( + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder spoolEndsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( - property: r'spool', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'spool', - value: '', - ))); - - QueryBuilder - spoolIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'spool', - value: '', - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.endsWith( + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + spoolContains(String value, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.contains( + property: r'spool', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + spoolMatches(String pattern, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.matches( + property: r'spool', + wildcard: pattern, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + spoolIsEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'spool', + value: '', + ))); + + QueryBuilder + spoolIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + property: r'spool', + value: '', + ))); QueryBuilder subjectEqualTo( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder subjectGreaterThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder subjectLessThan( String value, { bool include = false, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder subjectBetween( @@ -500,60 +599,79 @@ extension ThreadCollectionQueryFilter bool includeLower = true, bool includeUpper = true, bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.between( - property: r'subject', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.between( + property: r'subject', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + ))); QueryBuilder subjectStartsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.startsWith( + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); QueryBuilder subjectEndsWith( String value, { bool caseSensitive = true, - }) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectContains(String value, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.contains( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectMatches(String pattern, {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.matches( - property: r'subject', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectIsEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'subject', - value: '', - ))); - - QueryBuilder - subjectIsNotEmpty() => QueryBuilder.apply(this, (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'subject', - value: '', - ))); + }) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.endsWith( + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + subjectContains(String value, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.contains( + property: r'subject', + value: value, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + subjectMatches(String pattern, {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.matches( + property: r'subject', + wildcard: pattern, + caseSensitive: caseSensitive, + ))); + + QueryBuilder + subjectIsEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.equalTo( + property: r'subject', + value: '', + ))); + + QueryBuilder + subjectIsNotEmpty() => QueryBuilder.apply( + this, + (query) => query.addFilterCondition(FilterCondition.greaterThan( + property: r'subject', + value: '', + ))); } extension ThreadCollectionQueryObject @@ -565,74 +683,105 @@ extension ThreadCollectionQueryLinks extension ThreadCollectionQuerySortBy on QueryBuilder { QueryBuilder - sortByDateTime() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.asc)); + sortByDateTime() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'dateTime', Sort.asc)); QueryBuilder - sortByDateTimeDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.desc)); + sortByDateTimeDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - QueryBuilder sortBySpool() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.asc)); + QueryBuilder + sortBySpool() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'spool', Sort.asc)); QueryBuilder - sortBySpoolDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.desc)); + sortBySpoolDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'spool', Sort.desc)); QueryBuilder - sortBySubject() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.asc)); + sortBySubject() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'subject', Sort.asc)); QueryBuilder - sortBySubjectDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.desc)); + sortBySubjectDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'subject', Sort.desc)); } extension ThreadCollectionQuerySortThenBy on QueryBuilder { QueryBuilder - thenByDateTime() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.asc)); + thenByDateTime() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'dateTime', Sort.asc)); QueryBuilder - thenByDateTimeDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'dateTime', Sort.desc)); + thenByDateTimeDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - QueryBuilder thenById() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); + QueryBuilder thenById() => + QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); QueryBuilder - thenByIdDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); + thenByIdDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'id', Sort.desc)); - QueryBuilder thenBySpool() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.asc)); + QueryBuilder + thenBySpool() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'spool', Sort.asc)); QueryBuilder - thenBySpoolDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'spool', Sort.desc)); + thenBySpoolDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'spool', Sort.desc)); QueryBuilder - thenBySubject() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.asc)); + thenBySubject() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'subject', Sort.asc)); QueryBuilder - thenBySubjectDesc() => QueryBuilder.apply(this, (query) => query.addSortBy(r'subject', Sort.desc)); + thenBySubjectDesc() => QueryBuilder.apply( + this, (query) => query.addSortBy(r'subject', Sort.desc)); } extension ThreadCollectionQueryWhereDistinct on QueryBuilder { QueryBuilder - distinctByChildIds() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); + distinctByChildIds() => + QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); QueryBuilder - distinctByDateTime() => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'dateTime')); + distinctByDateTime() => + QueryBuilder.apply(this, (query) => query.addDistinctBy(r'dateTime')); QueryBuilder distinctBySpool( - {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'spool', caseSensitive: caseSensitive)); + {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => + query.addDistinctBy(r'spool', caseSensitive: caseSensitive)); QueryBuilder distinctBySubject( - {bool caseSensitive = true}) => QueryBuilder.apply(this, (query) => query.addDistinctBy(r'subject', caseSensitive: caseSensitive)); + {bool caseSensitive = true}) => + QueryBuilder.apply( + this, + (query) => + query.addDistinctBy(r'subject', caseSensitive: caseSensitive)); } extension ThreadCollectionQueryProperty on QueryBuilder { - QueryBuilder idProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); + QueryBuilder idProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); QueryBuilder, QQueryOperations> - childIdsProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'childIds')); + childIdsProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'childIds')); QueryBuilder - dateTimeProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'dateTime')); + dateTimeProperty() => QueryBuilder.apply( + this, (query) => query.addPropertyName(r'dateTime')); - QueryBuilder spoolProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'spool')); + QueryBuilder spoolProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'spool')); - QueryBuilder subjectProperty() => QueryBuilder.apply(this, (query) => query.addPropertyName(r'subject')); + QueryBuilder subjectProperty() => + QueryBuilder.apply(this, (query) => query.addPropertyName(r'subject')); } diff --git a/lib/utils/database.dart b/lib/utils/database.dart index e15efd0..d0e5da4 100644 --- a/lib/utils/database.dart +++ b/lib/utils/database.dart @@ -36,9 +36,11 @@ class DatabaseManager { return threadCollection; } - Stream onBlockChanged(Id id) => _isar.blockCollections.watchObject(id); + Stream onBlockChanged(Id id) => + _isar.blockCollections.watchObject(id); - Stream onThreadChanged(Id id) => _isar.threadCollections.watchObject(id); + Stream onThreadChanged(Id id) => + _isar.threadCollections.watchObject(id); /// Setter function for the given [blockCollection]. /// @@ -56,13 +58,11 @@ class DatabaseManager { } /// Get all spool names. - Set get spools => _isar.threadCollections - .where() - .spoolProperty() - .findAllSync() - .toSet(); + Set get spools => + _isar.threadCollections.where().spoolProperty().findAllSync().toSet(); - List get threadIds => _isar.threadCollections.where().idProperty().findAllSync(); + List get threadIds => + _isar.threadCollections.where().idProperty().findAllSync(); Id? getIdOfBlockBefore(BlockCollection sourceBlockCollection) { // TODO: handle looking at child blocks @@ -169,9 +169,10 @@ class DatabaseManager { } IsarCollection _getParentCollectionsOf( - BlockCollection blockCollection) => blockCollection.hasThreadAsParent - ? _isar.threadCollections - : _isar.blockCollections; + BlockCollection blockCollection) => + blockCollection.hasThreadAsParent + ? _isar.threadCollections + : _isar.blockCollections; ParentModel _getParentCollectionOf(BlockCollection blockCollection) { final parentCollection = _getParentCollectionsOf(blockCollection) diff --git a/lib/utils/use_block_texteditingcontroller.dart b/lib/utils/use_block_texteditingcontroller.dart index a24940f..366d13d 100644 --- a/lib/utils/use_block_texteditingcontroller.dart +++ b/lib/utils/use_block_texteditingcontroller.dart @@ -7,12 +7,13 @@ import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; BlockTextEditingController useBlockTextEditingController({ required List keys, required BlockTextEditingControllerProps blockTextEditingControllerProps, -}) => use( - _BlockTextEditingController( - keys: keys, - blockTextEditingControllerProps: blockTextEditingControllerProps, - ), - ); +}) => + use( + _BlockTextEditingController( + keys: keys, + blockTextEditingControllerProps: blockTextEditingControllerProps, + ), + ); /// Hook for [BlockTextEditingController]. class _BlockTextEditingController extends Hook { diff --git a/lib/viewmodels/thread_viewmodel.dart b/lib/viewmodels/thread_viewmodel.dart index 18ace49..ce7f7b2 100644 --- a/lib/viewmodels/thread_viewmodel.dart +++ b/lib/viewmodels/thread_viewmodel.dart @@ -52,9 +52,10 @@ class ThreadViewModel extends _$ThreadViewModel { } /// Generate spool dropdown menu entries. - List> spoolsAsDropdownMenuEntries() => databaseProps.databaseManager.spools - .map((element) => DropdownMenuEntry(value: element, label: element)) - .toList(); + List> spoolsAsDropdownMenuEntries() => + databaseProps.databaseManager.spools + .map((element) => DropdownMenuEntry(value: element, label: element)) + .toList(); /// Handle updating Thread collection when spool changes. /// @@ -507,15 +508,12 @@ class ThreadViewModel extends _$ThreadViewModel { // Return the BlockCollectionTreeNode and recurse on children. return BlockCollectionTreeNode( blockCollection: currentBlock, - childBlocks: currentBlock.childIds - .map(createBlockCollectionTree) - .toList(), + childBlocks: + currentBlock.childIds.map(createBlockCollectionTree).toList(), ); } // Create the list of trees. - return threadCollection.childIds - .map(createBlockCollectionTree) - .toList(); + return threadCollection.childIds.map(createBlockCollectionTree).toList(); } } From e34ff2aa22f3a4dd3ff364176ccbe267627cc794 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 18:00:40 -0800 Subject: [PATCH 12/22] Use concurrency groups, fixed linux and android build, disable web --- .github/workflows/autoformat-and-lint.yml | 4 ++ .github/workflows/build.yml | 54 ++++++++++++++--------- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index e0c5bc2..1735a25 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -3,6 +3,10 @@ name: Autoformat and Lint on: pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: autoformat: name: Autoformat and Lint diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac3e241..2ece99a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,10 @@ name: Build on: pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: macos: name: macOS @@ -18,6 +22,7 @@ jobs: uses: subosito/flutter-action@v2 with: channel: 'stable' + cache: true - name: 📦 Get dependencies run: flutter pub get @@ -42,6 +47,7 @@ jobs: uses: subosito/flutter-action@v2 with: channel: 'stable' + cache: true - name: 📦 Get dependencies run: flutter pub get @@ -66,11 +72,12 @@ jobs: uses: subosito/flutter-action@v2 with: channel: 'stable' + cache: true - name: 📦 Install Linux build dependencies run: | sudo apt update -y - sudo apt install libgtk-3-0 libblkid1 liblzma5 + sudo apt install ninja-build libgtk-3-0 libblkid1 liblzma5 - name: 📦 Get dependencies run: flutter pub get @@ -95,12 +102,13 @@ jobs: uses: subosito/flutter-action@v2 with: channel: 'stable' + cache: true - name: ☕ Setup Java uses: actions/setup-java@v4 with: distribution: 'temurin' - java-version: '21' + java-version: '20' - name: 📦 Get dependencies run: flutter pub get @@ -125,6 +133,7 @@ jobs: uses: subosito/flutter-action@v2 with: channel: 'stable' + cache: true - name: 📦 Get dependencies run: flutter pub get @@ -132,23 +141,24 @@ jobs: - name: 🛠️ Build run: flutter build ios --no-codesign - web: - name: Web - runs-on: ubuntu-latest - - steps: - - name: 🛎 Checkout - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - - - name: 🐦 Setup Flutter - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - - - name: 📦 Get dependencies - run: flutter pub get - - - name: 🛠️ Build - run: flutter build web \ No newline at end of file +# web: +# name: Web +# runs-on: ubuntu-latest +# +# steps: +# - name: 🛎 Checkout +# uses: actions/checkout@v4 +# with: +# ref: ${{ github.head_ref }} +# +# - name: 🐦 Setup Flutter +# uses: subosito/flutter-action@v2 +# with: +# channel: 'stable' +# cache: true +# +# - name: 📦 Get dependencies +# run: flutter pub get +# +# - name: 🛠️ Build +# run: flutter build web \ No newline at end of file From ac45aedbdf3d1f447fc352514bde393e7adb5958 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 18:03:08 -0800 Subject: [PATCH 13/22] Add status badges --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f5b2b2a..6bc945a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # MemoWeave + +[![Build](https://github.com/microBob/MemoWeave/actions/workflows/build.yml/badge.svg)](https://github.com/microBob/MemoWeave/actions/workflows/build.yml) +[![Autoformat and Lint](https://github.com/microBob/MemoWeave/actions/workflows/autoformat-and-lint.yml/badge.svg)](https://github.com/microBob/MemoWeave/actions/workflows/autoformat-and-lint.yml) + A note taking and task management app inspired by the journaling and Zettlekasten methods. From 38d1112c9cf15a0b198c1cced10110b688b8eeae Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 18:06:01 -0800 Subject: [PATCH 14/22] Use apt-get for linux --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ece99a..269f73d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,8 +76,8 @@ jobs: - name: 📦 Install Linux build dependencies run: | - sudo apt update -y - sudo apt install ninja-build libgtk-3-0 libblkid1 liblzma5 + sudo apt-get update -y + sudo apt-get install ninja-build libgtk-3-0 libblkid1 liblzma5 - name: 📦 Get dependencies run: flutter pub get From 59cc6987f38bb51be3b0419ffa85aae57ca7a324 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 18:08:48 -0800 Subject: [PATCH 15/22] Use examples from action --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 269f73d..96695a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,7 +77,7 @@ jobs: - name: 📦 Install Linux build dependencies run: | sudo apt-get update -y - sudo apt-get install ninja-build libgtk-3-0 libblkid1 liblzma5 + sudo apt-get install ninja-build libgtk-3-dev - name: 📦 Get dependencies run: flutter pub get @@ -107,8 +107,8 @@ jobs: - name: ☕ Setup Java uses: actions/setup-java@v4 with: - distribution: 'temurin' - java-version: '20' + distribution: 'zulu' + java-version: '11' - name: 📦 Get dependencies run: flutter pub get From 6851216c003347ce55201eab83328b323e9ad123 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 20:32:35 -0800 Subject: [PATCH 16/22] Fixed linting errors, removed generated files --- .github/workflows/autoformat-and-lint.yml | 3 - .github/workflows/build.yml | 38 +- .gitignore | 6 +- analysis_options.yaml | 1 + lib/main.dart | 9 +- lib/models/block_callback_props.dart | 11 +- lib/models/block_callback_props.freezed.dart | 193 ---- lib/models/block_collection.dart | 24 +- lib/models/block_collection.g.dart | 894 ------------------ lib/models/block_collection_tree_node.dart | 5 + .../block_collection_tree_node.freezed.dart | 172 ---- lib/models/block_props.dart | 20 +- lib/models/block_props.freezed.dart | 244 ----- .../block_texteditingcontroller_props.dart | 11 +- ...k_texteditingcontroller_props.freezed.dart | 183 ---- lib/models/container_model.dart | 3 + lib/models/database_props.dart | 11 +- lib/models/database_props.freezed.dart | 157 --- lib/models/style_node.dart | 7 +- lib/models/style_node.g.dart | 343 ------- lib/models/thread_collection.dart | 5 +- lib/models/thread_collection.g.dart | 787 --------------- lib/models/thread_state.dart | 17 +- lib/models/thread_state.freezed.dart | 252 ----- lib/utils/database.dart | 24 +- lib/utils/database.g.dart | 29 - .../use_block_texteditingcontroller.dart | 5 +- .../block_texteditingcontroller.dart | 5 +- lib/viewmodels/thread_viewmodel.dart | 19 +- lib/viewmodels/thread_viewmodel.g.dart | 245 ----- lib/views/block_view.dart | 6 +- lib/views/thread_view.dart | 9 +- 32 files changed, 168 insertions(+), 3570 deletions(-) delete mode 100644 lib/models/block_callback_props.freezed.dart delete mode 100644 lib/models/block_collection.g.dart delete mode 100644 lib/models/block_collection_tree_node.freezed.dart delete mode 100644 lib/models/block_props.freezed.dart delete mode 100644 lib/models/block_texteditingcontroller_props.freezed.dart delete mode 100644 lib/models/database_props.freezed.dart delete mode 100644 lib/models/style_node.g.dart delete mode 100644 lib/models/thread_collection.g.dart delete mode 100644 lib/models/thread_state.freezed.dart delete mode 100644 lib/utils/database.g.dart delete mode 100644 lib/viewmodels/thread_viewmodel.g.dart diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index 1735a25..8c3bfc9 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -36,9 +36,6 @@ jobs: with: commit_message: "Autoformat code" - - name: 🔍 Lint Dart - run: dart analyze - - name: 🐦 Setup Flutter uses: subosito/flutter-action@v2 with: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 96695a8..4d0b6ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,11 +24,14 @@ jobs: channel: 'stable' cache: true + - name:  Enable macOS + run: flutter config --enable-macos-desktop + - name: 📦 Get dependencies run: flutter pub get - - name:  Enable macOS - run: flutter config --enable-macos-desktop + - name: 🤖 Build dart files + run: dart run build_runner build -d - name: 🛠️ Build run: flutter build macos @@ -49,11 +52,14 @@ jobs: channel: 'stable' cache: true + - name: 🪟 Enable Windows + run: flutter config --enable-windows-desktop + - name: 📦 Get dependencies run: flutter pub get - - name: 🪟 Enable Windows - run: flutter config --enable-windows-desktop + - name: 🤖 Build dart files + run: dart run build_runner build -d - name: 🛠️ Build run: flutter build windows @@ -68,22 +74,25 @@ jobs: with: ref: ${{ github.head_ref }} + - name: 📦 Install Linux build dependencies + run: | + sudo apt-get update -y + sudo apt-get install ninja-build libgtk-3-dev + - name: 🐦 Setup Flutter uses: subosito/flutter-action@v2 with: channel: 'stable' cache: true - - name: 📦 Install Linux build dependencies - run: | - sudo apt-get update -y - sudo apt-get install ninja-build libgtk-3-dev + - name: 🐧 Enable Linux + run: flutter config --enable-linux-desktop - name: 📦 Get dependencies run: flutter pub get - - name: 🐧 Enable Linux - run: flutter config --enable-linux-desktop + - name: 🤖 Build dart files + run: dart run build_runner build -d - name: 🛠️ Build run: flutter build linux @@ -113,6 +122,9 @@ jobs: - name: 📦 Get dependencies run: flutter pub get + - name: 🤖 Build dart files + run: dart run build_runner build -d + - name: 🛠️ Build APK run: flutter build apk @@ -138,6 +150,9 @@ jobs: - name: 📦 Get dependencies run: flutter pub get + - name: 🤖 Build dart files + run: dart run build_runner build -d + - name: 🛠️ Build run: flutter build ios --no-codesign @@ -160,5 +175,8 @@ jobs: # - name: 📦 Get dependencies # run: flutter pub get # +# - name: 🤖 Build dart files +# run: dart run build_runner build -d +# # - name: 🛠️ Build # run: flutter build web \ No newline at end of file diff --git a/.gitignore b/.gitignore index 60793bd..c0ccbeb 100644 --- a/.gitignore +++ b/.gitignore @@ -290,4 +290,8 @@ fabric.properties !/gradle/wrapper/gradle-wrapper.jar -# End of https://www.toptal.com/developers/gitignore/api/flutter,androidstudio,macos,windows,linux \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/flutter,androidstudio,macos,windows,linux + +# Ignore generated Dart code. +**/*.g.dart +**/*.freezed.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index e8df8d4..85700a8 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -86,6 +86,7 @@ linter: analyzer: plugins: - custom_lint + exclude: [ lib/**.freezed.dart, lib/**.g.dart ] # Additional information about this file can be found at # https://dart.dev/guides/language/analysis-options diff --git a/lib/main.dart b/lib/main.dart index 77aab36..571be67 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:memoweave/models/database_props.dart'; -import 'package:memoweave/utils/database.dart'; -import 'package:memoweave/views/thread_view.dart'; import 'package:stack_trace/stack_trace.dart'; +import 'models/database_props.dart'; +import 'utils/database.dart'; +import 'views/thread_view.dart'; + void main() { runApp(const ProviderScope(child: MemoWeave())); @@ -15,7 +16,9 @@ void main() { }; } +/// The root widget of the application. class MemoWeave extends ConsumerWidget { + /// Default constructor. const MemoWeave({super.key}); // This widget is the root of your application. diff --git a/lib/models/block_callback_props.dart b/lib/models/block_callback_props.dart index 7f45532..4222445 100644 --- a/lib/models/block_callback_props.dart +++ b/lib/models/block_callback_props.dart @@ -1,12 +1,19 @@ import 'package:flutter/rendering.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:memoweave/models/block_collection.dart'; -import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; + +import '../viewmodels/block_texteditingcontroller.dart'; +import 'block_collection.dart'; part 'block_callback_props.freezed.dart'; +/// Properties Blocks pass up in callbacks. @freezed class BlockCallbackProps with _$BlockCallbackProps { + /// Constructor for BlockCallbackProps. + /// + /// [blockCollection] using a callback, + /// Block's [blockTextEditingController], + /// and Block's [blockRenderEditable] getter function. const factory BlockCallbackProps({ required BlockCollection blockCollection, required BlockTextEditingController blockTextEditingController, diff --git a/lib/models/block_callback_props.freezed.dart b/lib/models/block_callback_props.freezed.dart deleted file mode 100644 index a19d48d..0000000 --- a/lib/models/block_callback_props.freezed.dart +++ /dev/null @@ -1,193 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'block_callback_props.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$BlockCallbackProps { - BlockCollection get blockCollection => throw _privateConstructorUsedError; - - BlockTextEditingController get blockTextEditingController => - throw _privateConstructorUsedError; - - ValueGetter get blockRenderEditable => - throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $BlockCallbackPropsCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $BlockCallbackPropsCopyWith<$Res> { - factory $BlockCallbackPropsCopyWith( - BlockCallbackProps value, $Res Function(BlockCallbackProps) then) = - _$BlockCallbackPropsCopyWithImpl<$Res, BlockCallbackProps>; - - @useResult - $Res call( - {BlockCollection blockCollection, - BlockTextEditingController blockTextEditingController, - ValueGetter blockRenderEditable}); -} - -/// @nodoc -class _$BlockCallbackPropsCopyWithImpl<$Res, $Val extends BlockCallbackProps> - implements $BlockCallbackPropsCopyWith<$Res> { - _$BlockCallbackPropsCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? blockTextEditingController = null, - Object? blockRenderEditable = null, - }) { - return _then(_value.copyWith( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - blockTextEditingController: null == blockTextEditingController - ? _value.blockTextEditingController - : blockTextEditingController // ignore: cast_nullable_to_non_nullable - as BlockTextEditingController, - blockRenderEditable: null == blockRenderEditable - ? _value.blockRenderEditable - : blockRenderEditable // ignore: cast_nullable_to_non_nullable - as ValueGetter, - ) as $Val); - } -} - -/// @nodoc -abstract class _$$BlockCallbackPropsImplCopyWith<$Res> - implements $BlockCallbackPropsCopyWith<$Res> { - factory _$$BlockCallbackPropsImplCopyWith(_$BlockCallbackPropsImpl value, - $Res Function(_$BlockCallbackPropsImpl) then) = - __$$BlockCallbackPropsImplCopyWithImpl<$Res>; - - @override - @useResult - $Res call( - {BlockCollection blockCollection, - BlockTextEditingController blockTextEditingController, - ValueGetter blockRenderEditable}); -} - -/// @nodoc -class __$$BlockCallbackPropsImplCopyWithImpl<$Res> - extends _$BlockCallbackPropsCopyWithImpl<$Res, _$BlockCallbackPropsImpl> - implements _$$BlockCallbackPropsImplCopyWith<$Res> { - __$$BlockCallbackPropsImplCopyWithImpl(_$BlockCallbackPropsImpl _value, - $Res Function(_$BlockCallbackPropsImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? blockTextEditingController = null, - Object? blockRenderEditable = null, - }) { - return _then(_$BlockCallbackPropsImpl( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - blockTextEditingController: null == blockTextEditingController - ? _value.blockTextEditingController - : blockTextEditingController // ignore: cast_nullable_to_non_nullable - as BlockTextEditingController, - blockRenderEditable: null == blockRenderEditable - ? _value.blockRenderEditable - : blockRenderEditable // ignore: cast_nullable_to_non_nullable - as ValueGetter, - )); - } -} - -/// @nodoc - -class _$BlockCallbackPropsImpl implements _BlockCallbackProps { - const _$BlockCallbackPropsImpl( - {required this.blockCollection, - required this.blockTextEditingController, - required this.blockRenderEditable}); - - @override - final BlockCollection blockCollection; - @override - final BlockTextEditingController blockTextEditingController; - @override - final ValueGetter blockRenderEditable; - - @override - String toString() { - return 'BlockCallbackProps(blockCollection: $blockCollection, blockTextEditingController: $blockTextEditingController, blockRenderEditable: $blockRenderEditable)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$BlockCallbackPropsImpl && - (identical(other.blockCollection, blockCollection) || - other.blockCollection == blockCollection) && - (identical(other.blockTextEditingController, - blockTextEditingController) || - other.blockTextEditingController == - blockTextEditingController) && - (identical(other.blockRenderEditable, blockRenderEditable) || - other.blockRenderEditable == blockRenderEditable)); - } - - @override - int get hashCode => Object.hash(runtimeType, blockCollection, - blockTextEditingController, blockRenderEditable); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$BlockCallbackPropsImplCopyWith<_$BlockCallbackPropsImpl> get copyWith => - __$$BlockCallbackPropsImplCopyWithImpl<_$BlockCallbackPropsImpl>( - this, _$identity); -} - -abstract class _BlockCallbackProps implements BlockCallbackProps { - const factory _BlockCallbackProps( - {required final BlockCollection blockCollection, - required final BlockTextEditingController blockTextEditingController, - required final ValueGetter blockRenderEditable}) = - _$BlockCallbackPropsImpl; - - @override - BlockCollection get blockCollection; - - @override - BlockTextEditingController get blockTextEditingController; - - @override - ValueGetter get blockRenderEditable; - - @override - @JsonKey(ignore: true) - _$$BlockCallbackPropsImplCopyWith<_$BlockCallbackPropsImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/models/block_collection.dart b/lib/models/block_collection.dart index dca173f..b4a029a 100644 --- a/lib/models/block_collection.dart +++ b/lib/models/block_collection.dart @@ -1,25 +1,41 @@ import 'package:isar/isar.dart'; -import 'package:memoweave/models/container_model.dart'; -import 'package:memoweave/models/style_node.dart'; + +import 'container_model.dart'; +import 'style_node.dart'; part 'block_collection.g.dart'; /// Styles that affect the whole block. enum BlockStyle { + /// No style (plain text). none, + + /// Heading 1 style. heading1, + + /// Heading 2 style. heading2, + + /// Heading 3 style. heading3, + + /// Heading 4 style. heading4, + + /// Heading 5 style. heading5, + + /// Heading 6 style. heading6, } /// Collection definition for a text block. @collection class BlockCollection extends ParentModel { - /// Parent reference. + /// Parent ID reference. final int parent; + + /// Whether the parent is a Thread. final bool hasThreadAsParent; /// Block content. @@ -40,7 +56,7 @@ class BlockCollection extends ParentModel { /// Default constructor. /// - /// Defines [id], [text], [blockStyle], [inlineStyles], and [childrenBlockIds]. + /// Defines [id], [text], [blockStyle], and [inlineStyles]. /// Will supply default values if none are given. /// Throws [FormatException] on invalid input. BlockCollection({ diff --git a/lib/models/block_collection.g.dart b/lib/models/block_collection.g.dart deleted file mode 100644 index 3a6f36e..0000000 --- a/lib/models/block_collection.g.dart +++ /dev/null @@ -1,894 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'block_collection.dart'; - -// ************************************************************************** -// IsarCollectionGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types - -extension GetBlockCollectionCollection on Isar { - IsarCollection get blockCollections => this.collection(); -} - -const BlockCollectionSchema = CollectionSchema( - name: r'BlockCollection', - id: 5417308939645646360, - properties: { - r'blockStyle': PropertySchema( - id: 0, - name: r'blockStyle', - type: IsarType.byte, - enumMap: _BlockCollectionblockStyleEnumValueMap, - ), - r'childIds': PropertySchema( - id: 1, - name: r'childIds', - type: IsarType.longList, - ), - r'hasThreadAsParent': PropertySchema( - id: 2, - name: r'hasThreadAsParent', - type: IsarType.bool, - ), - r'inlineStyles': PropertySchema( - id: 3, - name: r'inlineStyles', - type: IsarType.objectList, - target: r'StyleNode', - ), - r'parent': PropertySchema( - id: 4, - name: r'parent', - type: IsarType.long, - ), - r'text': PropertySchema( - id: 5, - name: r'text', - type: IsarType.string, - ) - }, - estimateSize: _blockCollectionEstimateSize, - serialize: _blockCollectionSerialize, - deserialize: _blockCollectionDeserialize, - deserializeProp: _blockCollectionDeserializeProp, - idName: r'id', - indexes: {}, - links: {}, - embeddedSchemas: {r'StyleNode': StyleNodeSchema}, - getId: _blockCollectionGetId, - getLinks: _blockCollectionGetLinks, - attach: _blockCollectionAttach, - version: '3.1.0+1', -); - -int _blockCollectionEstimateSize( - BlockCollection object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - bytesCount += 3 + object.childIds.length * 8; - bytesCount += 3 + object.inlineStyles.length * 3; - { - final offsets = allOffsets[StyleNode]!; - for (var i = 0; i < object.inlineStyles.length; i++) { - final value = object.inlineStyles[i]; - bytesCount += StyleNodeSchema.estimateSize(value, offsets, allOffsets); - } - } - bytesCount += 3 + object.text.length * 3; - return bytesCount; -} - -void _blockCollectionSerialize( - BlockCollection object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeByte(offsets[0], object.blockStyle.index); - writer.writeLongList(offsets[1], object.childIds); - writer.writeBool(offsets[2], object.hasThreadAsParent); - writer.writeObjectList( - offsets[3], - allOffsets, - StyleNodeSchema.serialize, - object.inlineStyles, - ); - writer.writeLong(offsets[4], object.parent); - writer.writeString(offsets[5], object.text); -} - -BlockCollection _blockCollectionDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = BlockCollection( - blockStyle: _BlockCollectionblockStyleValueEnumMap[ - reader.readByteOrNull(offsets[0])] ?? - BlockStyle.none, - childIds: reader.readLongList(offsets[1]) ?? const [], - hasThreadAsParent: reader.readBoolOrNull(offsets[2]) ?? true, - id: id, - inlineStyles: reader.readObjectList( - offsets[3], - StyleNodeSchema.deserialize, - allOffsets, - StyleNode(), - ) ?? - const [], - parent: reader.readLong(offsets[4]), - text: reader.readStringOrNull(offsets[5]) ?? 'Blank state text', - ); - return object; -} - -P _blockCollectionDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (_BlockCollectionblockStyleValueEnumMap[ - reader.readByteOrNull(offset)] ?? - BlockStyle.none) as P; - case 1: - return (reader.readLongList(offset) ?? const []) as P; - case 2: - return (reader.readBoolOrNull(offset) ?? true) as P; - case 3: - return (reader.readObjectList( - offset, - StyleNodeSchema.deserialize, - allOffsets, - StyleNode(), - ) ?? - const []) as P; - case 4: - return (reader.readLong(offset)) as P; - case 5: - return (reader.readStringOrNull(offset) ?? 'Blank state text') as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -const _BlockCollectionblockStyleEnumValueMap = { - 'none': 0, - 'heading1': 1, - 'heading2': 2, - 'heading3': 3, - 'heading4': 4, - 'heading5': 5, - 'heading6': 6, -}; -const _BlockCollectionblockStyleValueEnumMap = { - 0: BlockStyle.none, - 1: BlockStyle.heading1, - 2: BlockStyle.heading2, - 3: BlockStyle.heading3, - 4: BlockStyle.heading4, - 5: BlockStyle.heading5, - 6: BlockStyle.heading6, -}; - -Id _blockCollectionGetId(BlockCollection object) => object.id; - -List> _blockCollectionGetLinks(BlockCollection object) => - []; - -void _blockCollectionAttach( - IsarCollection col, Id id, BlockCollection object) {} - -extension BlockCollectionQueryWhereSort - on QueryBuilder { - QueryBuilder anyId() => - QueryBuilder.apply( - this, (query) => query.addWhereClause(const IdWhereClause.any())); -} - -extension BlockCollectionQueryWhere - on QueryBuilder { - QueryBuilder idEqualTo( - Id id) => - QueryBuilder.apply( - this, - (query) => query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - ))); - - QueryBuilder - idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { - if (query.whereSort == Sort.asc) { - return query - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ) - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ); - } else { - return query - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ) - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ); - } - }); - - QueryBuilder - idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply( - this, - (query) => query.addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: include), - )); - - QueryBuilder idLessThan( - Id id, - {bool include = false}) => - QueryBuilder.apply( - this, - (query) => query.addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: include), - )); - - QueryBuilder idBetween( - Id lowerId, - Id upperId, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - ))); -} - -extension BlockCollectionQueryFilter - on QueryBuilder { - QueryBuilder - blockStyleEqualTo(BlockStyle value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'blockStyle', - value: value, - ))); - - QueryBuilder - blockStyleGreaterThan( - BlockStyle value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'blockStyle', - value: value, - ))); - - QueryBuilder - blockStyleLessThan( - BlockStyle value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'blockStyle', - value: value, - ))); - - QueryBuilder - blockStyleBetween( - BlockStyle lower, - BlockStyle upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'blockStyle', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsElementEqualTo(int value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementGreaterThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementLessThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'childIds', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsLengthEqualTo(int length) => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - length, - true, - length, - true, - )); - - QueryBuilder - childIdsIsEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - true, - 0, - true, - )); - - QueryBuilder - childIdsIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - false, - 999999, - true, - )); - - QueryBuilder - childIdsLengthLessThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - true, - length, - include, - )); - - QueryBuilder - childIdsLengthGreaterThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - length, - include, - 999999, - true, - )); - - QueryBuilder - childIdsLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - hasThreadAsParentEqualTo(bool value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'hasThreadAsParent', - value: value, - ))); - - QueryBuilder - idEqualTo(Id value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - ))); - - QueryBuilder - idGreaterThan( - Id value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - ))); - - QueryBuilder - idLessThan( - Id value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - ))); - - QueryBuilder - idBetween( - Id lower, - Id upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - inlineStylesLengthEqualTo(int length) => QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - length, - true, - length, - true, - )); - - QueryBuilder - inlineStylesIsEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - 0, - true, - 0, - true, - )); - - QueryBuilder - inlineStylesIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - 0, - false, - 999999, - true, - )); - - QueryBuilder - inlineStylesLengthLessThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - 0, - true, - length, - include, - )); - - QueryBuilder - inlineStylesLengthGreaterThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - length, - include, - 999999, - true, - )); - - QueryBuilder - inlineStylesLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'inlineStyles', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - parentEqualTo(int value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'parent', - value: value, - ))); - - QueryBuilder - parentGreaterThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'parent', - value: value, - ))); - - QueryBuilder - parentLessThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'parent', - value: value, - ))); - - QueryBuilder - parentBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'parent', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - textEqualTo( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'text', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textStartsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textEndsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textContains(String value, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.contains( - property: r'text', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textMatches(String pattern, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.matches( - property: r'text', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - textIsEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'text', - value: '', - ))); - - QueryBuilder - textIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'text', - value: '', - ))); -} - -extension BlockCollectionQueryObject - on QueryBuilder { - QueryBuilder - inlineStylesElement(FilterQuery q) => - QueryBuilder.apply(this, (query) => query.object(q, r'inlineStyles')); -} - -extension BlockCollectionQueryLinks - on QueryBuilder {} - -extension BlockCollectionQuerySortBy - on QueryBuilder { - QueryBuilder - sortByBlockStyle() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); - - QueryBuilder - sortByBlockStyleDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); - - QueryBuilder - sortByHasThreadAsParent() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); - - QueryBuilder - sortByHasThreadAsParentDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - - QueryBuilder sortByParent() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); - - QueryBuilder - sortByParentDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'parent', Sort.desc)); - - QueryBuilder sortByText() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); - - QueryBuilder - sortByTextDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'text', Sort.desc)); -} - -extension BlockCollectionQuerySortThenBy - on QueryBuilder { - QueryBuilder - thenByBlockStyle() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'blockStyle', Sort.asc)); - - QueryBuilder - thenByBlockStyleDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'blockStyle', Sort.desc)); - - QueryBuilder - thenByHasThreadAsParent() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.asc)); - - QueryBuilder - thenByHasThreadAsParentDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'hasThreadAsParent', Sort.desc)); - - QueryBuilder thenById() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); - - QueryBuilder thenByIdDesc() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.desc)); - - QueryBuilder thenByParent() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'parent', Sort.asc)); - - QueryBuilder - thenByParentDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'parent', Sort.desc)); - - QueryBuilder thenByText() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'text', Sort.asc)); - - QueryBuilder - thenByTextDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'text', Sort.desc)); -} - -extension BlockCollectionQueryWhereDistinct - on QueryBuilder { - QueryBuilder - distinctByBlockStyle() => QueryBuilder.apply( - this, (query) => query.addDistinctBy(r'blockStyle')); - - QueryBuilder - distinctByChildIds() => - QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); - - QueryBuilder - distinctByHasThreadAsParent() => QueryBuilder.apply( - this, (query) => query.addDistinctBy(r'hasThreadAsParent')); - - QueryBuilder - distinctByParent() => - QueryBuilder.apply(this, (query) => query.addDistinctBy(r'parent')); - - QueryBuilder distinctByText( - {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => - query.addDistinctBy(r'text', caseSensitive: caseSensitive)); -} - -extension BlockCollectionQueryProperty - on QueryBuilder { - QueryBuilder idProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); - - QueryBuilder - blockStyleProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'blockStyle')); - - QueryBuilder, QQueryOperations> - childIdsProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'childIds')); - - QueryBuilder - hasThreadAsParentProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'hasThreadAsParent')); - - QueryBuilder, QQueryOperations> - inlineStylesProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'inlineStyles')); - - QueryBuilder parentProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'parent')); - - QueryBuilder textProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'text')); -} diff --git a/lib/models/block_collection_tree_node.dart b/lib/models/block_collection_tree_node.dart index 136e1aa..6d9309a 100644 --- a/lib/models/block_collection_tree_node.dart +++ b/lib/models/block_collection_tree_node.dart @@ -4,8 +4,13 @@ import 'block_collection.dart'; part 'block_collection_tree_node.freezed.dart'; +/// A node the tree representation of a Block and its children. @freezed class BlockCollectionTreeNode with _$BlockCollectionTreeNode { + /// Constructor for a BlockCollectionTreeNode. + /// + /// [blockCollection] this node represents. + /// the [childBlocks] of this Block as a list of nodes. const factory BlockCollectionTreeNode({ required BlockCollection blockCollection, required List childBlocks, diff --git a/lib/models/block_collection_tree_node.freezed.dart b/lib/models/block_collection_tree_node.freezed.dart deleted file mode 100644 index 4b19ba9..0000000 --- a/lib/models/block_collection_tree_node.freezed.dart +++ /dev/null @@ -1,172 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'block_collection_tree_node.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$BlockCollectionTreeNode { - BlockCollection get blockCollection => throw _privateConstructorUsedError; - List get childBlocks => - throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $BlockCollectionTreeNodeCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $BlockCollectionTreeNodeCopyWith<$Res> { - factory $BlockCollectionTreeNodeCopyWith(BlockCollectionTreeNode value, - $Res Function(BlockCollectionTreeNode) then) = - _$BlockCollectionTreeNodeCopyWithImpl<$Res, BlockCollectionTreeNode>; - @useResult - $Res call( - {BlockCollection blockCollection, - List childBlocks}); -} - -/// @nodoc -class _$BlockCollectionTreeNodeCopyWithImpl<$Res, - $Val extends BlockCollectionTreeNode> - implements $BlockCollectionTreeNodeCopyWith<$Res> { - _$BlockCollectionTreeNodeCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? childBlocks = null, - }) { - return _then(_value.copyWith( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - childBlocks: null == childBlocks - ? _value.childBlocks - : childBlocks // ignore: cast_nullable_to_non_nullable - as List, - ) as $Val); - } -} - -/// @nodoc -abstract class _$$BlockCollectionTreeNodeImplCopyWith<$Res> - implements $BlockCollectionTreeNodeCopyWith<$Res> { - factory _$$BlockCollectionTreeNodeImplCopyWith( - _$BlockCollectionTreeNodeImpl value, - $Res Function(_$BlockCollectionTreeNodeImpl) then) = - __$$BlockCollectionTreeNodeImplCopyWithImpl<$Res>; - @override - @useResult - $Res call( - {BlockCollection blockCollection, - List childBlocks}); -} - -/// @nodoc -class __$$BlockCollectionTreeNodeImplCopyWithImpl<$Res> - extends _$BlockCollectionTreeNodeCopyWithImpl<$Res, - _$BlockCollectionTreeNodeImpl> - implements _$$BlockCollectionTreeNodeImplCopyWith<$Res> { - __$$BlockCollectionTreeNodeImplCopyWithImpl( - _$BlockCollectionTreeNodeImpl _value, - $Res Function(_$BlockCollectionTreeNodeImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? childBlocks = null, - }) { - return _then(_$BlockCollectionTreeNodeImpl( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - childBlocks: null == childBlocks - ? _value._childBlocks - : childBlocks // ignore: cast_nullable_to_non_nullable - as List, - )); - } -} - -/// @nodoc - -class _$BlockCollectionTreeNodeImpl implements _BlockCollectionTreeNode { - const _$BlockCollectionTreeNodeImpl( - {required this.blockCollection, - required final List childBlocks}) - : _childBlocks = childBlocks; - - @override - final BlockCollection blockCollection; - final List _childBlocks; - @override - List get childBlocks { - if (_childBlocks is EqualUnmodifiableListView) return _childBlocks; - // ignore: implicit_dynamic_type - return EqualUnmodifiableListView(_childBlocks); - } - - @override - String toString() { - return 'BlockCollectionTreeNode(blockCollection: $blockCollection, childBlocks: $childBlocks)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$BlockCollectionTreeNodeImpl && - (identical(other.blockCollection, blockCollection) || - other.blockCollection == blockCollection) && - const DeepCollectionEquality() - .equals(other._childBlocks, _childBlocks)); - } - - @override - int get hashCode => Object.hash(runtimeType, blockCollection, - const DeepCollectionEquality().hash(_childBlocks)); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$BlockCollectionTreeNodeImplCopyWith<_$BlockCollectionTreeNodeImpl> - get copyWith => __$$BlockCollectionTreeNodeImplCopyWithImpl< - _$BlockCollectionTreeNodeImpl>(this, _$identity); -} - -abstract class _BlockCollectionTreeNode implements BlockCollectionTreeNode { - const factory _BlockCollectionTreeNode( - {required final BlockCollection blockCollection, - required final List childBlocks}) = - _$BlockCollectionTreeNodeImpl; - - @override - BlockCollection get blockCollection; - @override - List get childBlocks; - @override - @JsonKey(ignore: true) - _$$BlockCollectionTreeNodeImplCopyWith<_$BlockCollectionTreeNodeImpl> - get copyWith => throw _privateConstructorUsedError; -} diff --git a/lib/models/block_props.dart b/lib/models/block_props.dart index 77baac1..e0e0489 100644 --- a/lib/models/block_props.dart +++ b/lib/models/block_props.dart @@ -1,15 +1,25 @@ import 'package:flutter/material.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:memoweave/models/block_callback_props.dart'; -import 'package:memoweave/models/block_collection.dart'; -import 'package:memoweave/models/block_collection_tree_node.dart'; -import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; + +import '../viewmodels/block_texteditingcontroller.dart'; +import 'block_callback_props.dart'; +import 'block_collection.dart'; +import 'block_collection_tree_node.dart'; part 'block_props.freezed.dart'; -/// Properties to be passed to [BlockViewModel]. +/// Properties to be passed into a Block ViewModel. @freezed class BlockProps with _$BlockProps { + /// Properties to be passed into a Block ViewModel. + /// + /// Provides the [blockCollectionTreeNode] of the Block, + /// passes the [onBlockTextEditingControllerChangedCallback] to be + /// attached to the [BlockTextEditingController]'s change notifier, + /// passes the [onKeyEventCallback] to be attached to the Block's + /// [FocusNode]'s onKey event, + /// and passes the [initBlockFocusAndCaret] to be attached to the Block's + /// widget build completion. const factory BlockProps({ required BlockCollectionTreeNode blockCollectionTreeNode, required Function( diff --git a/lib/models/block_props.freezed.dart b/lib/models/block_props.freezed.dart deleted file mode 100644 index 15b8370..0000000 --- a/lib/models/block_props.freezed.dart +++ /dev/null @@ -1,244 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'block_props.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$BlockProps { - BlockCollectionTreeNode get blockCollectionTreeNode => - throw _privateConstructorUsedError; - dynamic Function(BlockCollection, BlockTextEditingController) - get onBlockTextEditingControllerChangedCallback => - throw _privateConstructorUsedError; - KeyEventResult Function(FocusNode, KeyEvent, BlockCallbackProps) - get onKeyEventCallback => throw _privateConstructorUsedError; - void Function(FocusNode, BlockCallbackProps) get initBlockFocusAndCaret => - throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $BlockPropsCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $BlockPropsCopyWith<$Res> { - factory $BlockPropsCopyWith( - BlockProps value, $Res Function(BlockProps) then) = - _$BlockPropsCopyWithImpl<$Res, BlockProps>; - @useResult - $Res call( - {BlockCollectionTreeNode blockCollectionTreeNode, - dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback, - KeyEventResult Function(FocusNode, KeyEvent, BlockCallbackProps) - onKeyEventCallback, - void Function(FocusNode, BlockCallbackProps) initBlockFocusAndCaret}); - - $BlockCollectionTreeNodeCopyWith<$Res> get blockCollectionTreeNode; -} - -/// @nodoc -class _$BlockPropsCopyWithImpl<$Res, $Val extends BlockProps> - implements $BlockPropsCopyWith<$Res> { - _$BlockPropsCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollectionTreeNode = null, - Object? onBlockTextEditingControllerChangedCallback = null, - Object? onKeyEventCallback = null, - Object? initBlockFocusAndCaret = null, - }) { - return _then(_value.copyWith( - blockCollectionTreeNode: null == blockCollectionTreeNode - ? _value.blockCollectionTreeNode - : blockCollectionTreeNode // ignore: cast_nullable_to_non_nullable - as BlockCollectionTreeNode, - onBlockTextEditingControllerChangedCallback: null == - onBlockTextEditingControllerChangedCallback - ? _value.onBlockTextEditingControllerChangedCallback - : onBlockTextEditingControllerChangedCallback // ignore: cast_nullable_to_non_nullable - as dynamic Function(BlockCollection, BlockTextEditingController), - onKeyEventCallback: null == onKeyEventCallback - ? _value.onKeyEventCallback - : onKeyEventCallback // ignore: cast_nullable_to_non_nullable - as KeyEventResult Function( - FocusNode, KeyEvent, BlockCallbackProps), - initBlockFocusAndCaret: null == initBlockFocusAndCaret - ? _value.initBlockFocusAndCaret - : initBlockFocusAndCaret // ignore: cast_nullable_to_non_nullable - as void Function(FocusNode, BlockCallbackProps), - ) as $Val); - } - - @override - @pragma('vm:prefer-inline') - $BlockCollectionTreeNodeCopyWith<$Res> get blockCollectionTreeNode { - return $BlockCollectionTreeNodeCopyWith<$Res>( - _value.blockCollectionTreeNode, (value) { - return _then(_value.copyWith(blockCollectionTreeNode: value) as $Val); - }); - } -} - -/// @nodoc -abstract class _$$BlockPropsImplCopyWith<$Res> - implements $BlockPropsCopyWith<$Res> { - factory _$$BlockPropsImplCopyWith( - _$BlockPropsImpl value, $Res Function(_$BlockPropsImpl) then) = - __$$BlockPropsImplCopyWithImpl<$Res>; - @override - @useResult - $Res call( - {BlockCollectionTreeNode blockCollectionTreeNode, - dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback, - KeyEventResult Function(FocusNode, KeyEvent, BlockCallbackProps) - onKeyEventCallback, - void Function(FocusNode, BlockCallbackProps) initBlockFocusAndCaret}); - - @override - $BlockCollectionTreeNodeCopyWith<$Res> get blockCollectionTreeNode; -} - -/// @nodoc -class __$$BlockPropsImplCopyWithImpl<$Res> - extends _$BlockPropsCopyWithImpl<$Res, _$BlockPropsImpl> - implements _$$BlockPropsImplCopyWith<$Res> { - __$$BlockPropsImplCopyWithImpl( - _$BlockPropsImpl _value, $Res Function(_$BlockPropsImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollectionTreeNode = null, - Object? onBlockTextEditingControllerChangedCallback = null, - Object? onKeyEventCallback = null, - Object? initBlockFocusAndCaret = null, - }) { - return _then(_$BlockPropsImpl( - blockCollectionTreeNode: null == blockCollectionTreeNode - ? _value.blockCollectionTreeNode - : blockCollectionTreeNode // ignore: cast_nullable_to_non_nullable - as BlockCollectionTreeNode, - onBlockTextEditingControllerChangedCallback: null == - onBlockTextEditingControllerChangedCallback - ? _value.onBlockTextEditingControllerChangedCallback - : onBlockTextEditingControllerChangedCallback // ignore: cast_nullable_to_non_nullable - as dynamic Function(BlockCollection, BlockTextEditingController), - onKeyEventCallback: null == onKeyEventCallback - ? _value.onKeyEventCallback - : onKeyEventCallback // ignore: cast_nullable_to_non_nullable - as KeyEventResult Function( - FocusNode, KeyEvent, BlockCallbackProps), - initBlockFocusAndCaret: null == initBlockFocusAndCaret - ? _value.initBlockFocusAndCaret - : initBlockFocusAndCaret // ignore: cast_nullable_to_non_nullable - as void Function(FocusNode, BlockCallbackProps), - )); - } -} - -/// @nodoc - -class _$BlockPropsImpl implements _BlockProps { - const _$BlockPropsImpl( - {required this.blockCollectionTreeNode, - required this.onBlockTextEditingControllerChangedCallback, - required this.onKeyEventCallback, - required this.initBlockFocusAndCaret}); - - @override - final BlockCollectionTreeNode blockCollectionTreeNode; - @override - final dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback; - @override - final KeyEventResult Function(FocusNode, KeyEvent, BlockCallbackProps) - onKeyEventCallback; - @override - final void Function(FocusNode, BlockCallbackProps) initBlockFocusAndCaret; - - @override - String toString() { - return 'BlockProps(blockCollectionTreeNode: $blockCollectionTreeNode, onBlockTextEditingControllerChangedCallback: $onBlockTextEditingControllerChangedCallback, onKeyEventCallback: $onKeyEventCallback, initBlockFocusAndCaret: $initBlockFocusAndCaret)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$BlockPropsImpl && - (identical( - other.blockCollectionTreeNode, blockCollectionTreeNode) || - other.blockCollectionTreeNode == blockCollectionTreeNode) && - (identical(other.onBlockTextEditingControllerChangedCallback, - onBlockTextEditingControllerChangedCallback) || - other.onBlockTextEditingControllerChangedCallback == - onBlockTextEditingControllerChangedCallback) && - (identical(other.onKeyEventCallback, onKeyEventCallback) || - other.onKeyEventCallback == onKeyEventCallback) && - (identical(other.initBlockFocusAndCaret, initBlockFocusAndCaret) || - other.initBlockFocusAndCaret == initBlockFocusAndCaret)); - } - - @override - int get hashCode => Object.hash( - runtimeType, - blockCollectionTreeNode, - onBlockTextEditingControllerChangedCallback, - onKeyEventCallback, - initBlockFocusAndCaret); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$BlockPropsImplCopyWith<_$BlockPropsImpl> get copyWith => - __$$BlockPropsImplCopyWithImpl<_$BlockPropsImpl>(this, _$identity); -} - -abstract class _BlockProps implements BlockProps { - const factory _BlockProps( - {required final BlockCollectionTreeNode blockCollectionTreeNode, - required final dynamic Function( - BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback, - required final KeyEventResult Function( - FocusNode, KeyEvent, BlockCallbackProps) - onKeyEventCallback, - required final void Function(FocusNode, BlockCallbackProps) - initBlockFocusAndCaret}) = _$BlockPropsImpl; - - @override - BlockCollectionTreeNode get blockCollectionTreeNode; - @override - dynamic Function(BlockCollection, BlockTextEditingController) - get onBlockTextEditingControllerChangedCallback; - @override - KeyEventResult Function(FocusNode, KeyEvent, BlockCallbackProps) - get onKeyEventCallback; - @override - void Function(FocusNode, BlockCallbackProps) get initBlockFocusAndCaret; - @override - @JsonKey(ignore: true) - _$$BlockPropsImplCopyWith<_$BlockPropsImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/models/block_texteditingcontroller_props.dart b/lib/models/block_texteditingcontroller_props.dart index e7e6906..3b089dc 100644 --- a/lib/models/block_texteditingcontroller_props.dart +++ b/lib/models/block_texteditingcontroller_props.dart @@ -1,17 +1,18 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:memoweave/models/block_collection.dart'; import '../viewmodels/block_texteditingcontroller.dart'; +import 'block_collection.dart'; part 'block_texteditingcontroller_props.freezed.dart'; /// Properties for a [BlockTextEditingController]. -/// -/// Provides the Block's [blockCollection], -/// and passes the [onBlockTextEditingControllerChangedCallback] to be -/// attached to the [BlockTextEditingController]'s change notifier. @freezed class BlockTextEditingControllerProps with _$BlockTextEditingControllerProps { + /// Properties for a [BlockTextEditingController]. + /// + /// Provides the Block's [blockCollection], + /// and passes the [onBlockTextEditingControllerChangedCallback] to be + /// attached to the [BlockTextEditingController]'s change notifier. const factory BlockTextEditingControllerProps({ required BlockCollection blockCollection, required Function( diff --git a/lib/models/block_texteditingcontroller_props.freezed.dart b/lib/models/block_texteditingcontroller_props.freezed.dart deleted file mode 100644 index 054d659..0000000 --- a/lib/models/block_texteditingcontroller_props.freezed.dart +++ /dev/null @@ -1,183 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'block_texteditingcontroller_props.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$BlockTextEditingControllerProps { - BlockCollection get blockCollection => throw _privateConstructorUsedError; - dynamic Function(BlockCollection, BlockTextEditingController) - get onBlockTextEditingControllerChangedCallback => - throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $BlockTextEditingControllerPropsCopyWith - get copyWith => throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $BlockTextEditingControllerPropsCopyWith<$Res> { - factory $BlockTextEditingControllerPropsCopyWith( - BlockTextEditingControllerProps value, - $Res Function(BlockTextEditingControllerProps) then) = - _$BlockTextEditingControllerPropsCopyWithImpl<$Res, - BlockTextEditingControllerProps>; - @useResult - $Res call( - {BlockCollection blockCollection, - dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback}); -} - -/// @nodoc -class _$BlockTextEditingControllerPropsCopyWithImpl<$Res, - $Val extends BlockTextEditingControllerProps> - implements $BlockTextEditingControllerPropsCopyWith<$Res> { - _$BlockTextEditingControllerPropsCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? onBlockTextEditingControllerChangedCallback = null, - }) { - return _then(_value.copyWith( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - onBlockTextEditingControllerChangedCallback: null == - onBlockTextEditingControllerChangedCallback - ? _value.onBlockTextEditingControllerChangedCallback - : onBlockTextEditingControllerChangedCallback // ignore: cast_nullable_to_non_nullable - as dynamic Function(BlockCollection, BlockTextEditingController), - ) as $Val); - } -} - -/// @nodoc -abstract class _$$BlockTextEditingControllerPropsImplCopyWith<$Res> - implements $BlockTextEditingControllerPropsCopyWith<$Res> { - factory _$$BlockTextEditingControllerPropsImplCopyWith( - _$BlockTextEditingControllerPropsImpl value, - $Res Function(_$BlockTextEditingControllerPropsImpl) then) = - __$$BlockTextEditingControllerPropsImplCopyWithImpl<$Res>; - @override - @useResult - $Res call( - {BlockCollection blockCollection, - dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback}); -} - -/// @nodoc -class __$$BlockTextEditingControllerPropsImplCopyWithImpl<$Res> - extends _$BlockTextEditingControllerPropsCopyWithImpl<$Res, - _$BlockTextEditingControllerPropsImpl> - implements _$$BlockTextEditingControllerPropsImplCopyWith<$Res> { - __$$BlockTextEditingControllerPropsImplCopyWithImpl( - _$BlockTextEditingControllerPropsImpl _value, - $Res Function(_$BlockTextEditingControllerPropsImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? blockCollection = null, - Object? onBlockTextEditingControllerChangedCallback = null, - }) { - return _then(_$BlockTextEditingControllerPropsImpl( - blockCollection: null == blockCollection - ? _value.blockCollection - : blockCollection // ignore: cast_nullable_to_non_nullable - as BlockCollection, - onBlockTextEditingControllerChangedCallback: null == - onBlockTextEditingControllerChangedCallback - ? _value.onBlockTextEditingControllerChangedCallback - : onBlockTextEditingControllerChangedCallback // ignore: cast_nullable_to_non_nullable - as dynamic Function(BlockCollection, BlockTextEditingController), - )); - } -} - -/// @nodoc - -class _$BlockTextEditingControllerPropsImpl - implements _BlockTextEditingControllerProps { - const _$BlockTextEditingControllerPropsImpl( - {required this.blockCollection, - required this.onBlockTextEditingControllerChangedCallback}); - - @override - final BlockCollection blockCollection; - @override - final dynamic Function(BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback; - - @override - String toString() { - return 'BlockTextEditingControllerProps(blockCollection: $blockCollection, onBlockTextEditingControllerChangedCallback: $onBlockTextEditingControllerChangedCallback)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$BlockTextEditingControllerPropsImpl && - (identical(other.blockCollection, blockCollection) || - other.blockCollection == blockCollection) && - (identical(other.onBlockTextEditingControllerChangedCallback, - onBlockTextEditingControllerChangedCallback) || - other.onBlockTextEditingControllerChangedCallback == - onBlockTextEditingControllerChangedCallback)); - } - - @override - int get hashCode => Object.hash(runtimeType, blockCollection, - onBlockTextEditingControllerChangedCallback); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$BlockTextEditingControllerPropsImplCopyWith< - _$BlockTextEditingControllerPropsImpl> - get copyWith => __$$BlockTextEditingControllerPropsImplCopyWithImpl< - _$BlockTextEditingControllerPropsImpl>(this, _$identity); -} - -abstract class _BlockTextEditingControllerProps - implements BlockTextEditingControllerProps { - const factory _BlockTextEditingControllerProps( - {required final BlockCollection blockCollection, - required final dynamic Function( - BlockCollection, BlockTextEditingController) - onBlockTextEditingControllerChangedCallback}) = - _$BlockTextEditingControllerPropsImpl; - - @override - BlockCollection get blockCollection; - @override - dynamic Function(BlockCollection, BlockTextEditingController) - get onBlockTextEditingControllerChangedCallback; - @override - @JsonKey(ignore: true) - _$$BlockTextEditingControllerPropsImplCopyWith< - _$BlockTextEditingControllerPropsImpl> - get copyWith => throw _privateConstructorUsedError; -} diff --git a/lib/models/container_model.dart b/lib/models/container_model.dart index f7a0766..b1090d0 100644 --- a/lib/models/container_model.dart +++ b/lib/models/container_model.dart @@ -1,5 +1,6 @@ import 'package:isar/isar.dart'; +/// Model for collections that contain other collections. abstract class ParentModel { /// Unique identifier for this parent container. /// @@ -9,7 +10,9 @@ abstract class ParentModel { /// Ordered list of [Id]'s for each child BlockCollection. final List childIds; + /// Constructor. ParentModel({this.id = Isar.autoIncrement, required this.childIds}); + /// Create a copy of this collection with updated [childIds]. ParentModel copyWith({List? childIds}); } diff --git a/lib/models/database_props.dart b/lib/models/database_props.dart index 35532b2..ac8294f 100644 --- a/lib/models/database_props.dart +++ b/lib/models/database_props.dart @@ -1,15 +1,18 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:isar/isar.dart'; -import 'package:memoweave/utils/database.dart'; +import '../utils/database.dart'; part 'database_props.freezed.dart'; -/// Properties for a Thread or Block's access to the database. +/// Database Properties. /// -/// Provides the [id] of the Thread or Block, -/// and the [databaseManager] of the database. +/// Properties for a Thread or Block's access to the database. @freezed class DatabaseProps with _$DatabaseProps { + /// Database Properties. + /// + /// Provides the [id] of the Thread or Block, + /// and the [databaseManager] of the database. const factory DatabaseProps({ required Id id, required DatabaseManager databaseManager, diff --git a/lib/models/database_props.freezed.dart b/lib/models/database_props.freezed.dart deleted file mode 100644 index b148258..0000000 --- a/lib/models/database_props.freezed.dart +++ /dev/null @@ -1,157 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'database_props.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$DatabaseProps { - int get id => throw _privateConstructorUsedError; - - DatabaseManager get databaseManager => throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $DatabasePropsCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $DatabasePropsCopyWith<$Res> { - factory $DatabasePropsCopyWith( - DatabaseProps value, $Res Function(DatabaseProps) then) = - _$DatabasePropsCopyWithImpl<$Res, DatabaseProps>; - - @useResult - $Res call({int id, DatabaseManager databaseManager}); -} - -/// @nodoc -class _$DatabasePropsCopyWithImpl<$Res, $Val extends DatabaseProps> - implements $DatabasePropsCopyWith<$Res> { - _$DatabasePropsCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = null, - Object? databaseManager = null, - }) { - return _then(_value.copyWith( - id: null == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as int, - databaseManager: null == databaseManager - ? _value.databaseManager - : databaseManager // ignore: cast_nullable_to_non_nullable - as DatabaseManager, - ) as $Val); - } -} - -/// @nodoc -abstract class _$$DatabasePropsImplCopyWith<$Res> - implements $DatabasePropsCopyWith<$Res> { - factory _$$DatabasePropsImplCopyWith( - _$DatabasePropsImpl value, $Res Function(_$DatabasePropsImpl) then) = - __$$DatabasePropsImplCopyWithImpl<$Res>; - - @override - @useResult - $Res call({int id, DatabaseManager databaseManager}); -} - -/// @nodoc -class __$$DatabasePropsImplCopyWithImpl<$Res> - extends _$DatabasePropsCopyWithImpl<$Res, _$DatabasePropsImpl> - implements _$$DatabasePropsImplCopyWith<$Res> { - __$$DatabasePropsImplCopyWithImpl( - _$DatabasePropsImpl _value, $Res Function(_$DatabasePropsImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? id = null, - Object? databaseManager = null, - }) { - return _then(_$DatabasePropsImpl( - id: null == id - ? _value.id - : id // ignore: cast_nullable_to_non_nullable - as int, - databaseManager: null == databaseManager - ? _value.databaseManager - : databaseManager // ignore: cast_nullable_to_non_nullable - as DatabaseManager, - )); - } -} - -/// @nodoc - -class _$DatabasePropsImpl implements _DatabaseProps { - const _$DatabasePropsImpl({required this.id, required this.databaseManager}); - - @override - final int id; - @override - final DatabaseManager databaseManager; - - @override - String toString() { - return 'DatabaseProps(id: $id, databaseManager: $databaseManager)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$DatabasePropsImpl && - (identical(other.id, id) || other.id == id) && - (identical(other.databaseManager, databaseManager) || - other.databaseManager == databaseManager)); - } - - @override - int get hashCode => Object.hash(runtimeType, id, databaseManager); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$DatabasePropsImplCopyWith<_$DatabasePropsImpl> get copyWith => - __$$DatabasePropsImplCopyWithImpl<_$DatabasePropsImpl>(this, _$identity); -} - -abstract class _DatabaseProps implements DatabaseProps { - const factory _DatabaseProps( - {required final int id, - required final DatabaseManager databaseManager}) = _$DatabasePropsImpl; - - @override - int get id; - - @override - DatabaseManager get databaseManager; - - @override - @JsonKey(ignore: true) - _$$DatabasePropsImplCopyWith<_$DatabasePropsImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/models/style_node.dart b/lib/models/style_node.dart index 746c9da..9f2bebf 100644 --- a/lib/models/style_node.dart +++ b/lib/models/style_node.dart @@ -4,19 +4,22 @@ part 'style_node.g.dart'; /// Styles on inline text. enum InlineStyle { + /// Bold text styling bold, + + /// Italic text styling italic, } /// An [Isar] embedded object definition for a formatted piece of text. @embedded class StyleNode { - /// First index in [BlockCollection]'s text that this style applies to. + /// First index in a Block's text that this style applies to. /// /// Requirement: 0 ≤ [startIndex] < [endIndex]. final int startIndex; - /// Index after the last character in [BlockCollection]'s text that this + /// Index after the last character in a Block's text that this /// style applies to. /// /// Requirement: [startIndex] < [endIndex] ≤ text length (unverifiable). diff --git a/lib/models/style_node.g.dart b/lib/models/style_node.g.dart deleted file mode 100644 index 9289843..0000000 --- a/lib/models/style_node.g.dart +++ /dev/null @@ -1,343 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'style_node.dart'; - -// ************************************************************************** -// IsarEmbeddedGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types - -const StyleNodeSchema = Schema( - name: r'StyleNode', - id: 1342748013343944162, - properties: { - r'endIndex': PropertySchema( - id: 0, - name: r'endIndex', - type: IsarType.long, - ), - r'startIndex': PropertySchema( - id: 1, - name: r'startIndex', - type: IsarType.long, - ), - r'styles': PropertySchema( - id: 2, - name: r'styles', - type: IsarType.byteList, - enumMap: _StyleNodestylesEnumValueMap, - ) - }, - estimateSize: _styleNodeEstimateSize, - serialize: _styleNodeSerialize, - deserialize: _styleNodeDeserialize, - deserializeProp: _styleNodeDeserializeProp, -); - -int _styleNodeEstimateSize( - StyleNode object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - bytesCount += 3 + object.styles.length; - return bytesCount; -} - -void _styleNodeSerialize( - StyleNode object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLong(offsets[0], object.endIndex); - writer.writeLong(offsets[1], object.startIndex); - writer.writeByteList(offsets[2], object.styles.map((e) => e.index).toList()); -} - -StyleNode _styleNodeDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = StyleNode( - endIndex: reader.readLongOrNull(offsets[0]) ?? 0, - startIndex: reader.readLongOrNull(offsets[1]) ?? 0, - styles: reader - .readByteList(offsets[2]) - ?.map((e) => _StyleNodestylesValueEnumMap[e] ?? InlineStyle.bold) - .toList() ?? - const [], - ); - return object; -} - -P _styleNodeDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongOrNull(offset) ?? 0) as P; - case 1: - return (reader.readLongOrNull(offset) ?? 0) as P; - case 2: - return (reader - .readByteList(offset) - ?.map((e) => _StyleNodestylesValueEnumMap[e] ?? InlineStyle.bold) - .toList() ?? - const []) as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -const _StyleNodestylesEnumValueMap = { - 'bold': 0, - 'italic': 1, -}; -const _StyleNodestylesValueEnumMap = { - 0: InlineStyle.bold, - 1: InlineStyle.italic, -}; - -extension StyleNodeQueryFilter - on QueryBuilder { - QueryBuilder endIndexEqualTo( - int value) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'endIndex', - value: value, - ))); - - QueryBuilder endIndexGreaterThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'endIndex', - value: value, - ))); - - QueryBuilder endIndexLessThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'endIndex', - value: value, - ))); - - QueryBuilder endIndexBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'endIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder startIndexEqualTo( - int value) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'startIndex', - value: value, - ))); - - QueryBuilder - startIndexGreaterThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'startIndex', - value: value, - ))); - - QueryBuilder startIndexLessThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'startIndex', - value: value, - ))); - - QueryBuilder startIndexBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'startIndex', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - stylesElementEqualTo(InlineStyle value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'styles', - value: value, - ))); - - QueryBuilder - stylesElementGreaterThan( - InlineStyle value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'styles', - value: value, - ))); - - QueryBuilder - stylesElementLessThan( - InlineStyle value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'styles', - value: value, - ))); - - QueryBuilder - stylesElementBetween( - InlineStyle lower, - InlineStyle upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'styles', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder stylesLengthEqualTo( - int length) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - length, - true, - length, - true, - )); - - QueryBuilder stylesIsEmpty() => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - 0, - true, - 0, - true, - )); - - QueryBuilder - stylesIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - 0, - false, - 999999, - true, - )); - - QueryBuilder - stylesLengthLessThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - 0, - true, - length, - include, - )); - - QueryBuilder - stylesLengthGreaterThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - length, - include, - 999999, - true, - )); - - QueryBuilder stylesLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'styles', - lower, - includeLower, - upper, - includeUpper, - )); -} - -extension StyleNodeQueryObject - on QueryBuilder {} diff --git a/lib/models/thread_collection.dart b/lib/models/thread_collection.dart index cff4135..e13ad85 100644 --- a/lib/models/thread_collection.dart +++ b/lib/models/thread_collection.dart @@ -1,5 +1,6 @@ import 'package:isar/isar.dart'; -import 'package:memoweave/models/container_model.dart'; + +import 'container_model.dart'; part 'thread_collection.g.dart'; @@ -32,7 +33,7 @@ class ThreadCollection extends ParentModel { /// Copy builder. /// /// Creates a copy of the current Thread and updates the fields to - /// [id], [spool], [subject], [dateTime], and [blockIds] when provided. + /// [id], [spool], [subject], and [dateTime] when provided. @override ThreadCollection copyWith({ List? childIds, diff --git a/lib/models/thread_collection.g.dart b/lib/models/thread_collection.g.dart deleted file mode 100644 index 4511e1b..0000000 --- a/lib/models/thread_collection.g.dart +++ /dev/null @@ -1,787 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'thread_collection.dart'; - -// ************************************************************************** -// IsarCollectionGenerator -// ************************************************************************** - -// coverage:ignore-file -// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types - -extension GetThreadCollectionCollection on Isar { - IsarCollection get threadCollections => this.collection(); -} - -const ThreadCollectionSchema = CollectionSchema( - name: r'ThreadCollection', - id: -1191098789140832712, - properties: { - r'childIds': PropertySchema( - id: 0, - name: r'childIds', - type: IsarType.longList, - ), - r'dateTime': PropertySchema( - id: 1, - name: r'dateTime', - type: IsarType.dateTime, - ), - r'spool': PropertySchema( - id: 2, - name: r'spool', - type: IsarType.string, - ), - r'subject': PropertySchema( - id: 3, - name: r'subject', - type: IsarType.string, - ) - }, - estimateSize: _threadCollectionEstimateSize, - serialize: _threadCollectionSerialize, - deserialize: _threadCollectionDeserialize, - deserializeProp: _threadCollectionDeserializeProp, - idName: r'id', - indexes: {}, - links: {}, - embeddedSchemas: {}, - getId: _threadCollectionGetId, - getLinks: _threadCollectionGetLinks, - attach: _threadCollectionAttach, - version: '3.1.0+1', -); - -int _threadCollectionEstimateSize( - ThreadCollection object, - List offsets, - Map> allOffsets, -) { - var bytesCount = offsets.last; - bytesCount += 3 + object.childIds.length * 8; - bytesCount += 3 + object.spool.length * 3; - bytesCount += 3 + object.subject.length * 3; - return bytesCount; -} - -void _threadCollectionSerialize( - ThreadCollection object, - IsarWriter writer, - List offsets, - Map> allOffsets, -) { - writer.writeLongList(offsets[0], object.childIds); - writer.writeDateTime(offsets[1], object.dateTime); - writer.writeString(offsets[2], object.spool); - writer.writeString(offsets[3], object.subject); -} - -ThreadCollection _threadCollectionDeserialize( - Id id, - IsarReader reader, - List offsets, - Map> allOffsets, -) { - final object = ThreadCollection( - childIds: reader.readLongList(offsets[0]) ?? const [], - dateTime: reader.readDateTime(offsets[1]), - id: id, - spool: reader.readStringOrNull(offsets[2]) ?? '', - subject: reader.readStringOrNull(offsets[3]) ?? '', - ); - return object; -} - -P _threadCollectionDeserializeProp

( - IsarReader reader, - int propertyId, - int offset, - Map> allOffsets, -) { - switch (propertyId) { - case 0: - return (reader.readLongList(offset) ?? const []) as P; - case 1: - return (reader.readDateTime(offset)) as P; - case 2: - return (reader.readStringOrNull(offset) ?? '') as P; - case 3: - return (reader.readStringOrNull(offset) ?? '') as P; - default: - throw IsarError('Unknown property with id $propertyId'); - } -} - -Id _threadCollectionGetId(ThreadCollection object) => object.id; - -List> _threadCollectionGetLinks( - ThreadCollection object) => - []; - -void _threadCollectionAttach( - IsarCollection col, Id id, ThreadCollection object) {} - -extension ThreadCollectionQueryWhereSort - on QueryBuilder { - QueryBuilder anyId() => - QueryBuilder.apply( - this, (query) => query.addWhereClause(const IdWhereClause.any())); -} - -extension ThreadCollectionQueryWhere - on QueryBuilder { - QueryBuilder idEqualTo( - Id id) => - QueryBuilder.apply( - this, - (query) => query.addWhereClause(IdWhereClause.between( - lower: id, - upper: id, - ))); - - QueryBuilder - idNotEqualTo(Id id) => QueryBuilder.apply(this, (query) { - if (query.whereSort == Sort.asc) { - return query - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ) - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ); - } else { - return query - .addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: false), - ) - .addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: false), - ); - } - }); - - QueryBuilder - idGreaterThan(Id id, {bool include = false}) => QueryBuilder.apply( - this, - (query) => query.addWhereClause( - IdWhereClause.greaterThan(lower: id, includeLower: include), - )); - - QueryBuilder - idLessThan(Id id, {bool include = false}) => QueryBuilder.apply( - this, - (query) => query.addWhereClause( - IdWhereClause.lessThan(upper: id, includeUpper: include), - )); - - QueryBuilder idBetween( - Id lowerId, - Id upperId, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addWhereClause(IdWhereClause.between( - lower: lowerId, - includeLower: includeLower, - upper: upperId, - includeUpper: includeUpper, - ))); -} - -extension ThreadCollectionQueryFilter - on QueryBuilder { - QueryBuilder - childIdsElementEqualTo(int value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementGreaterThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementLessThan( - int value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'childIds', - value: value, - ))); - - QueryBuilder - childIdsElementBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'childIds', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - childIdsLengthEqualTo(int length) => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - length, - true, - length, - true, - )); - - QueryBuilder - childIdsIsEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - true, - 0, - true, - )); - - QueryBuilder - childIdsIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - false, - 999999, - true, - )); - - QueryBuilder - childIdsLengthLessThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - 0, - true, - length, - include, - )); - - QueryBuilder - childIdsLengthGreaterThan( - int length, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - length, - include, - 999999, - true, - )); - - QueryBuilder - childIdsLengthBetween( - int lower, - int upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.listLength( - r'childIds', - lower, - includeLower, - upper, - includeUpper, - )); - - QueryBuilder - dateTimeEqualTo(DateTime value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'dateTime', - value: value, - ))); - - QueryBuilder - dateTimeGreaterThan( - DateTime value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'dateTime', - value: value, - ))); - - QueryBuilder - dateTimeLessThan( - DateTime value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'dateTime', - value: value, - ))); - - QueryBuilder - dateTimeBetween( - DateTime lower, - DateTime upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'dateTime', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - idEqualTo(Id value) => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'id', - value: value, - ))); - - QueryBuilder - idGreaterThan( - Id value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'id', - value: value, - ))); - - QueryBuilder - idLessThan( - Id value, { - bool include = false, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'id', - value: value, - ))); - - QueryBuilder - idBetween( - Id lower, - Id upper, { - bool includeLower = true, - bool includeUpper = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'id', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - ))); - - QueryBuilder - spoolEqualTo( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'spool', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolStartsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolEndsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolContains(String value, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.contains( - property: r'spool', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolMatches(String pattern, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.matches( - property: r'spool', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - spoolIsEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'spool', - value: '', - ))); - - QueryBuilder - spoolIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'spool', - value: '', - ))); - - QueryBuilder - subjectEqualTo( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectGreaterThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - include: include, - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectLessThan( - String value, { - bool include = false, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.lessThan( - include: include, - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectBetween( - String lower, - String upper, { - bool includeLower = true, - bool includeUpper = true, - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.between( - property: r'subject', - lower: lower, - includeLower: includeLower, - upper: upper, - includeUpper: includeUpper, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectStartsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.startsWith( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectEndsWith( - String value, { - bool caseSensitive = true, - }) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.endsWith( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectContains(String value, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.contains( - property: r'subject', - value: value, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectMatches(String pattern, {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.matches( - property: r'subject', - wildcard: pattern, - caseSensitive: caseSensitive, - ))); - - QueryBuilder - subjectIsEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.equalTo( - property: r'subject', - value: '', - ))); - - QueryBuilder - subjectIsNotEmpty() => QueryBuilder.apply( - this, - (query) => query.addFilterCondition(FilterCondition.greaterThan( - property: r'subject', - value: '', - ))); -} - -extension ThreadCollectionQueryObject - on QueryBuilder {} - -extension ThreadCollectionQueryLinks - on QueryBuilder {} - -extension ThreadCollectionQuerySortBy - on QueryBuilder { - QueryBuilder - sortByDateTime() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'dateTime', Sort.asc)); - - QueryBuilder - sortByDateTimeDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - - QueryBuilder - sortBySpool() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'spool', Sort.asc)); - - QueryBuilder - sortBySpoolDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'spool', Sort.desc)); - - QueryBuilder - sortBySubject() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'subject', Sort.asc)); - - QueryBuilder - sortBySubjectDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'subject', Sort.desc)); -} - -extension ThreadCollectionQuerySortThenBy - on QueryBuilder { - QueryBuilder - thenByDateTime() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'dateTime', Sort.asc)); - - QueryBuilder - thenByDateTimeDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'dateTime', Sort.desc)); - - QueryBuilder thenById() => - QueryBuilder.apply(this, (query) => query.addSortBy(r'id', Sort.asc)); - - QueryBuilder - thenByIdDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'id', Sort.desc)); - - QueryBuilder - thenBySpool() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'spool', Sort.asc)); - - QueryBuilder - thenBySpoolDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'spool', Sort.desc)); - - QueryBuilder - thenBySubject() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'subject', Sort.asc)); - - QueryBuilder - thenBySubjectDesc() => QueryBuilder.apply( - this, (query) => query.addSortBy(r'subject', Sort.desc)); -} - -extension ThreadCollectionQueryWhereDistinct - on QueryBuilder { - QueryBuilder - distinctByChildIds() => - QueryBuilder.apply(this, (query) => query.addDistinctBy(r'childIds')); - - QueryBuilder - distinctByDateTime() => - QueryBuilder.apply(this, (query) => query.addDistinctBy(r'dateTime')); - - QueryBuilder distinctBySpool( - {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => - query.addDistinctBy(r'spool', caseSensitive: caseSensitive)); - - QueryBuilder distinctBySubject( - {bool caseSensitive = true}) => - QueryBuilder.apply( - this, - (query) => - query.addDistinctBy(r'subject', caseSensitive: caseSensitive)); -} - -extension ThreadCollectionQueryProperty - on QueryBuilder { - QueryBuilder idProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'id')); - - QueryBuilder, QQueryOperations> - childIdsProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'childIds')); - - QueryBuilder - dateTimeProperty() => QueryBuilder.apply( - this, (query) => query.addPropertyName(r'dateTime')); - - QueryBuilder spoolProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'spool')); - - QueryBuilder subjectProperty() => - QueryBuilder.apply(this, (query) => query.addPropertyName(r'subject')); -} diff --git a/lib/models/thread_state.dart b/lib/models/thread_state.dart index 732d426..7775b7d 100644 --- a/lib/models/thread_state.dart +++ b/lib/models/thread_state.dart @@ -2,22 +2,25 @@ import 'dart:ui'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:isar/isar.dart'; -import 'package:memoweave/models/thread_collection.dart'; import 'block_collection_tree_node.dart'; +import 'thread_collection.dart'; part 'thread_state.freezed.dart'; /// Thread state. /// -/// Records the Block ID of the Block in focus [idOfBlockInFocus], -/// the caret text offset [caretTextOffset] (negative values wrap from end), -/// global screen position of the caret [caretGlobalPosition], -/// the Thread's date and time [dateTime], -/// and the child Blocks as with their children -/// in a tree [blockCollectionTreeNodes]. +/// Used by the View and handled by the ViewModel. @freezed class ThreadState with _$ThreadState { + /// Thread state. + /// + /// Records the Block ID of the Block in focus [idOfBlockInFocus], + /// global screen position of the caret [caretGlobalPosition], + /// the caret text offset [caretTextOffset] (negative values wrap from end), + /// the Thread [threadCollection], + /// and the child Blocks as with their children + /// in a tree [blockCollectionTreeNodes]. const factory ThreadState({ // Block focus. required Id idOfBlockInFocus, diff --git a/lib/models/thread_state.freezed.dart b/lib/models/thread_state.freezed.dart deleted file mode 100644 index 56c9a1d..0000000 --- a/lib/models/thread_state.freezed.dart +++ /dev/null @@ -1,252 +0,0 @@ -// coverage:ignore-file -// GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: type=lint -// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark - -part of 'thread_state.dart'; - -// ************************************************************************** -// FreezedGenerator -// ************************************************************************** - -T _$identity(T value) => value; - -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); - -/// @nodoc -mixin _$ThreadState { -// Block focus. - int get idOfBlockInFocus => - throw _privateConstructorUsedError; // Caret state. - Offset get caretGlobalPosition => throw _privateConstructorUsedError; - - int get caretTextOffset => - throw _privateConstructorUsedError; // Thread and its Blocks. - ThreadCollection get threadCollection => throw _privateConstructorUsedError; - - List get blockCollectionTreeNodes => - throw _privateConstructorUsedError; - - @JsonKey(ignore: true) - $ThreadStateCopyWith get copyWith => - throw _privateConstructorUsedError; -} - -/// @nodoc -abstract class $ThreadStateCopyWith<$Res> { - factory $ThreadStateCopyWith( - ThreadState value, $Res Function(ThreadState) then) = - _$ThreadStateCopyWithImpl<$Res, ThreadState>; - @useResult - $Res call( - {int idOfBlockInFocus, - Offset caretGlobalPosition, - int caretTextOffset, - ThreadCollection threadCollection, - List blockCollectionTreeNodes}); -} - -/// @nodoc -class _$ThreadStateCopyWithImpl<$Res, $Val extends ThreadState> - implements $ThreadStateCopyWith<$Res> { - _$ThreadStateCopyWithImpl(this._value, this._then); - - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? idOfBlockInFocus = null, - Object? caretGlobalPosition = null, - Object? caretTextOffset = null, - Object? threadCollection = null, - Object? blockCollectionTreeNodes = null, - }) { - return _then(_value.copyWith( - idOfBlockInFocus: null == idOfBlockInFocus - ? _value.idOfBlockInFocus - : idOfBlockInFocus // ignore: cast_nullable_to_non_nullable - as int, - caretGlobalPosition: null == caretGlobalPosition - ? _value.caretGlobalPosition - : caretGlobalPosition // ignore: cast_nullable_to_non_nullable - as Offset, - caretTextOffset: null == caretTextOffset - ? _value.caretTextOffset - : caretTextOffset // ignore: cast_nullable_to_non_nullable - as int, - threadCollection: null == threadCollection - ? _value.threadCollection - : threadCollection // ignore: cast_nullable_to_non_nullable - as ThreadCollection, - blockCollectionTreeNodes: null == blockCollectionTreeNodes - ? _value.blockCollectionTreeNodes - : blockCollectionTreeNodes // ignore: cast_nullable_to_non_nullable - as List, - ) as $Val); - } -} - -/// @nodoc -abstract class _$$ThreadStateImplCopyWith<$Res> - implements $ThreadStateCopyWith<$Res> { - factory _$$ThreadStateImplCopyWith( - _$ThreadStateImpl value, $Res Function(_$ThreadStateImpl) then) = - __$$ThreadStateImplCopyWithImpl<$Res>; - @override - @useResult - $Res call( - {int idOfBlockInFocus, - Offset caretGlobalPosition, - int caretTextOffset, - ThreadCollection threadCollection, - List blockCollectionTreeNodes}); -} - -/// @nodoc -class __$$ThreadStateImplCopyWithImpl<$Res> - extends _$ThreadStateCopyWithImpl<$Res, _$ThreadStateImpl> - implements _$$ThreadStateImplCopyWith<$Res> { - __$$ThreadStateImplCopyWithImpl( - _$ThreadStateImpl _value, $Res Function(_$ThreadStateImpl) _then) - : super(_value, _then); - - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? idOfBlockInFocus = null, - Object? caretGlobalPosition = null, - Object? caretTextOffset = null, - Object? threadCollection = null, - Object? blockCollectionTreeNodes = null, - }) { - return _then(_$ThreadStateImpl( - idOfBlockInFocus: null == idOfBlockInFocus - ? _value.idOfBlockInFocus - : idOfBlockInFocus // ignore: cast_nullable_to_non_nullable - as int, - caretGlobalPosition: null == caretGlobalPosition - ? _value.caretGlobalPosition - : caretGlobalPosition // ignore: cast_nullable_to_non_nullable - as Offset, - caretTextOffset: null == caretTextOffset - ? _value.caretTextOffset - : caretTextOffset // ignore: cast_nullable_to_non_nullable - as int, - threadCollection: null == threadCollection - ? _value.threadCollection - : threadCollection // ignore: cast_nullable_to_non_nullable - as ThreadCollection, - blockCollectionTreeNodes: null == blockCollectionTreeNodes - ? _value._blockCollectionTreeNodes - : blockCollectionTreeNodes // ignore: cast_nullable_to_non_nullable - as List, - )); - } -} - -/// @nodoc - -class _$ThreadStateImpl implements _ThreadState { - const _$ThreadStateImpl( - {required this.idOfBlockInFocus, - required this.caretGlobalPosition, - required this.caretTextOffset, - required this.threadCollection, - required final List blockCollectionTreeNodes}) - : _blockCollectionTreeNodes = blockCollectionTreeNodes; - -// Block focus. - @override - final int idOfBlockInFocus; - -// Caret state. - @override - final Offset caretGlobalPosition; - @override - final int caretTextOffset; - -// Thread and its Blocks. - @override - final ThreadCollection threadCollection; - final List _blockCollectionTreeNodes; - - @override - List get blockCollectionTreeNodes { - if (_blockCollectionTreeNodes is EqualUnmodifiableListView) - return _blockCollectionTreeNodes; - // ignore: implicit_dynamic_type - return EqualUnmodifiableListView(_blockCollectionTreeNodes); - } - - @override - String toString() { - return 'ThreadState(idOfBlockInFocus: $idOfBlockInFocus, caretGlobalPosition: $caretGlobalPosition, caretTextOffset: $caretTextOffset, threadCollection: $threadCollection, blockCollectionTreeNodes: $blockCollectionTreeNodes)'; - } - - @override - bool operator ==(dynamic other) { - return identical(this, other) || - (other.runtimeType == runtimeType && - other is _$ThreadStateImpl && - (identical(other.idOfBlockInFocus, idOfBlockInFocus) || - other.idOfBlockInFocus == idOfBlockInFocus) && - (identical(other.caretGlobalPosition, caretGlobalPosition) || - other.caretGlobalPosition == caretGlobalPosition) && - (identical(other.caretTextOffset, caretTextOffset) || - other.caretTextOffset == caretTextOffset) && - (identical(other.threadCollection, threadCollection) || - other.threadCollection == threadCollection) && - const DeepCollectionEquality().equals( - other._blockCollectionTreeNodes, _blockCollectionTreeNodes)); - } - - @override - int get hashCode => Object.hash( - runtimeType, - idOfBlockInFocus, - caretGlobalPosition, - caretTextOffset, - threadCollection, - const DeepCollectionEquality().hash(_blockCollectionTreeNodes)); - - @JsonKey(ignore: true) - @override - @pragma('vm:prefer-inline') - _$$ThreadStateImplCopyWith<_$ThreadStateImpl> get copyWith => - __$$ThreadStateImplCopyWithImpl<_$ThreadStateImpl>(this, _$identity); -} - -abstract class _ThreadState implements ThreadState { - const factory _ThreadState( - {required final int idOfBlockInFocus, - required final Offset caretGlobalPosition, - required final int caretTextOffset, - required final ThreadCollection threadCollection, - required final List - blockCollectionTreeNodes}) = _$ThreadStateImpl; - - @override // Block focus. - int get idOfBlockInFocus; - - @override // Caret state. - Offset get caretGlobalPosition; - - @override - int get caretTextOffset; - - @override // Thread and its Blocks. - ThreadCollection get threadCollection; - - @override - List get blockCollectionTreeNodes; - - @override - @JsonKey(ignore: true) - _$$ThreadStateImplCopyWith<_$ThreadStateImpl> get copyWith => - throw _privateConstructorUsedError; -} diff --git a/lib/utils/database.dart b/lib/utils/database.dart index d0e5da4..fd3d1e2 100644 --- a/lib/utils/database.dart +++ b/lib/utils/database.dart @@ -1,12 +1,13 @@ import 'dart:io'; import 'package:isar/isar.dart'; -import 'package:memoweave/models/block_collection.dart'; -import 'package:memoweave/models/container_model.dart'; -import 'package:memoweave/models/thread_collection.dart'; import 'package:path_provider/path_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; +import '../models/block_collection.dart'; +import '../models/container_model.dart'; +import '../models/thread_collection.dart'; + part 'database.g.dart'; /// Database manager class. @@ -28,6 +29,7 @@ class DatabaseManager { return blockCollection; } + /// Getter function for Threads by [id]. ThreadCollection getThreadCollectionById(Id id) { final threadCollection = _isar.threadCollections.getSync(id); if (threadCollection == null) { @@ -36,9 +38,11 @@ class DatabaseManager { return threadCollection; } + /// Create and return a watch stream for a Block by [id]. Stream onBlockChanged(Id id) => _isar.blockCollections.watchObject(id); + /// Create and return a watch stream for a Thread by [id]. Stream onThreadChanged(Id id) => _isar.threadCollections.watchObject(id); @@ -51,6 +55,9 @@ class DatabaseManager { }); } + /// Updates the [threadCollection] in the database. + /// + /// Creates a new record if it's new or updates an existing record. void putThreadCollection(ThreadCollection threadCollection) { _isar.writeTxnSync(() { _isar.threadCollections.putSync(threadCollection); @@ -61,9 +68,12 @@ class DatabaseManager { Set get spools => _isar.threadCollections.where().spoolProperty().findAllSync().toSet(); + /// List of all Thread IDs. List get threadIds => _isar.threadCollections.where().idProperty().findAllSync(); + /// Get the ID of the sibling Block located + /// before the [sourceBlockCollection]. Id? getIdOfBlockBefore(BlockCollection sourceBlockCollection) { // TODO: handle looking at child blocks final parentCollection = (sourceBlockCollection.hasThreadAsParent @@ -93,6 +103,7 @@ class DatabaseManager { return parentCollection.childIds[sourceBlockIndex - 1]; } + /// Remove the [blockCollection] from the database. void deleteBlockCollection(BlockCollection blockCollection) { _isar.writeTxnSync(() { // Remove Block from parent's children ID list. @@ -108,6 +119,8 @@ class DatabaseManager { }); } + /// Get the ID of the sibling Block located + /// after the [sourceBlockCollection]. Id? getIdOfBlockAfter(BlockCollection sourceBlockCollection) { // TODO: handle looking at child blocks first if it has any final parentCollection = _getParentCollectionOf(sourceBlockCollection); @@ -127,6 +140,8 @@ class DatabaseManager { return parentCollection.childIds[sourceBlockIndex + 1]; } + /// Insert a sibling Block [newBlockCollection] + /// after the [sourceBlockCollection]. void insertBlockAfter({ required BlockCollection sourceBlockCollection, BlockCollection? newBlockCollection, @@ -154,6 +169,9 @@ class DatabaseManager { }); } + /// Create a new blank Thread. + /// + /// Defaults the time to the time of creation and adds a blank Block. void createNewThread() { _isar.writeTxnSync(() { final newThreadId = _isar.threadCollections diff --git a/lib/utils/database.g.dart b/lib/utils/database.g.dart deleted file mode 100644 index ee7af15..0000000 --- a/lib/utils/database.g.dart +++ /dev/null @@ -1,29 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'database.dart'; - -// ************************************************************************** -// RiverpodGenerator -// ************************************************************************** - -String _$databaseManagerHash() => r'7338ed51472425eade39a32ec685835a85f2fbfb'; - -/// Provider for the instance of the [DatabaseManager]. -/// -/// Uses the current open [Isar] instance. -/// -/// Copied from [databaseManager]. -@ProviderFor(databaseManager) -final databaseManagerProvider = FutureProvider.internal( - databaseManager, - name: r'databaseManagerProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$databaseManagerHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef DatabaseManagerRef = FutureProviderRef; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/utils/use_block_texteditingcontroller.dart b/lib/utils/use_block_texteditingcontroller.dart index 366d13d..864e387 100644 --- a/lib/utils/use_block_texteditingcontroller.dart +++ b/lib/utils/use_block_texteditingcontroller.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:memoweave/models/block_texteditingcontroller_props.dart'; -import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; + +import '../models/block_texteditingcontroller_props.dart'; +import '../viewmodels/block_texteditingcontroller.dart'; /// Hook function for [BlockTextEditingController]. BlockTextEditingController useBlockTextEditingController({ diff --git a/lib/viewmodels/block_texteditingcontroller.dart b/lib/viewmodels/block_texteditingcontroller.dart index d68581a..38e189e 100644 --- a/lib/viewmodels/block_texteditingcontroller.dart +++ b/lib/viewmodels/block_texteditingcontroller.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:memoweave/models/block_collection.dart'; -import 'package:memoweave/models/style_node.dart'; + +import '../models/block_collection.dart'; +import '../models/style_node.dart'; /// [TextEditingController] managing a Block's [TextField]. /// diff --git a/lib/viewmodels/thread_viewmodel.dart b/lib/viewmodels/thread_viewmodel.dart index ce7f7b2..cc08166 100644 --- a/lib/viewmodels/thread_viewmodel.dart +++ b/lib/viewmodels/thread_viewmodel.dart @@ -3,21 +3,22 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:isar/isar.dart'; -import 'package:memoweave/models/block_callback_props.dart'; -import 'package:memoweave/models/block_collection.dart'; -import 'package:memoweave/models/block_collection_tree_node.dart'; -import 'package:memoweave/models/database_props.dart'; -import 'package:memoweave/models/thread_collection.dart'; -import 'package:memoweave/models/thread_state.dart'; -import 'package:memoweave/utils/database.dart'; -import 'package:memoweave/viewmodels/block_texteditingcontroller.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; +import '../models/block_callback_props.dart'; +import '../models/block_collection.dart'; +import '../models/block_collection_tree_node.dart'; +import '../models/database_props.dart'; +import '../models/thread_collection.dart'; +import '../models/thread_state.dart'; +import 'block_texteditingcontroller.dart'; + part 'thread_viewmodel.g.dart'; /// ViewModel for a Thread. /// -/// Used by [ThreadView]. +/// State from Blocks are hoisted up and managed +/// here so that Blocks are stateless. @riverpod class ThreadViewModel extends _$ThreadViewModel { /// Ordered list of blocks by ID. diff --git a/lib/viewmodels/thread_viewmodel.g.dart b/lib/viewmodels/thread_viewmodel.g.dart deleted file mode 100644 index e9ff4be..0000000 --- a/lib/viewmodels/thread_viewmodel.g.dart +++ /dev/null @@ -1,245 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'thread_viewmodel.dart'; - -// ************************************************************************** -// RiverpodGenerator -// ************************************************************************** - -String _$threadViewModelHash() => r'e1c16294708b64525734eeac66664db841095223'; - -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$ThreadViewModel - extends BuildlessAutoDisposeNotifier { - late final DatabaseProps databaseProps; - late final TextEditingController spoolTextEditingController; - late final TextEditingController subjectTextEditingController; - - ThreadState build({ - required DatabaseProps databaseProps, - required TextEditingController spoolTextEditingController, - required TextEditingController subjectTextEditingController, - }); -} - -/// ViewModel for a Thread. -/// -/// Used by [ThreadView]. -/// -/// Copied from [ThreadViewModel]. -@ProviderFor(ThreadViewModel) -const threadViewModelProvider = ThreadViewModelFamily(); - -/// ViewModel for a Thread. -/// -/// Used by [ThreadView]. -/// -/// Copied from [ThreadViewModel]. -class ThreadViewModelFamily extends Family { - /// ViewModel for a Thread. - /// - /// Used by [ThreadView]. - /// - /// Copied from [ThreadViewModel]. - const ThreadViewModelFamily(); - - /// ViewModel for a Thread. - /// - /// Used by [ThreadView]. - /// - /// Copied from [ThreadViewModel]. - ThreadViewModelProvider call({ - required DatabaseProps databaseProps, - required TextEditingController spoolTextEditingController, - required TextEditingController subjectTextEditingController, - }) { - return ThreadViewModelProvider( - databaseProps: databaseProps, - spoolTextEditingController: spoolTextEditingController, - subjectTextEditingController: subjectTextEditingController, - ); - } - - @override - ThreadViewModelProvider getProviderOverride( - covariant ThreadViewModelProvider provider, - ) { - return call( - databaseProps: provider.databaseProps, - spoolTextEditingController: provider.spoolTextEditingController, - subjectTextEditingController: provider.subjectTextEditingController, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'threadViewModelProvider'; -} - -/// ViewModel for a Thread. -/// -/// Used by [ThreadView]. -/// -/// Copied from [ThreadViewModel]. -class ThreadViewModelProvider - extends AutoDisposeNotifierProviderImpl { - /// ViewModel for a Thread. - /// - /// Used by [ThreadView]. - /// - /// Copied from [ThreadViewModel]. - ThreadViewModelProvider({ - required DatabaseProps databaseProps, - required TextEditingController spoolTextEditingController, - required TextEditingController subjectTextEditingController, - }) : this._internal( - () => ThreadViewModel() - ..databaseProps = databaseProps - ..spoolTextEditingController = spoolTextEditingController - ..subjectTextEditingController = subjectTextEditingController, - from: threadViewModelProvider, - name: r'threadViewModelProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$threadViewModelHash, - dependencies: ThreadViewModelFamily._dependencies, - allTransitiveDependencies: - ThreadViewModelFamily._allTransitiveDependencies, - databaseProps: databaseProps, - spoolTextEditingController: spoolTextEditingController, - subjectTextEditingController: subjectTextEditingController, - ); - - ThreadViewModelProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.databaseProps, - required this.spoolTextEditingController, - required this.subjectTextEditingController, - }) : super.internal(); - - final DatabaseProps databaseProps; - final TextEditingController spoolTextEditingController; - final TextEditingController subjectTextEditingController; - - @override - ThreadState runNotifierBuild( - covariant ThreadViewModel notifier, - ) { - return notifier.build( - databaseProps: databaseProps, - spoolTextEditingController: spoolTextEditingController, - subjectTextEditingController: subjectTextEditingController, - ); - } - - @override - Override overrideWith(ThreadViewModel Function() create) { - return ProviderOverride( - origin: this, - override: ThreadViewModelProvider._internal( - () => create() - ..databaseProps = databaseProps - ..spoolTextEditingController = spoolTextEditingController - ..subjectTextEditingController = subjectTextEditingController, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - databaseProps: databaseProps, - spoolTextEditingController: spoolTextEditingController, - subjectTextEditingController: subjectTextEditingController, - ), - ); - } - - @override - AutoDisposeNotifierProviderElement - createElement() { - return _ThreadViewModelProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is ThreadViewModelProvider && - other.databaseProps == databaseProps && - other.spoolTextEditingController == spoolTextEditingController && - other.subjectTextEditingController == subjectTextEditingController; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, databaseProps.hashCode); - hash = _SystemHash.combine(hash, spoolTextEditingController.hashCode); - hash = _SystemHash.combine(hash, subjectTextEditingController.hashCode); - - return _SystemHash.finish(hash); - } -} - -mixin ThreadViewModelRef on AutoDisposeNotifierProviderRef { - /// The parameter `databaseProps` of this provider. - DatabaseProps get databaseProps; - - /// The parameter `spoolTextEditingController` of this provider. - TextEditingController get spoolTextEditingController; - - /// The parameter `subjectTextEditingController` of this provider. - TextEditingController get subjectTextEditingController; -} - -class _ThreadViewModelProviderElement - extends AutoDisposeNotifierProviderElement - with ThreadViewModelRef { - _ThreadViewModelProviderElement(super.provider); - - @override - DatabaseProps get databaseProps => - (origin as ThreadViewModelProvider).databaseProps; - - @override - TextEditingController get spoolTextEditingController => - (origin as ThreadViewModelProvider).spoolTextEditingController; - @override - TextEditingController get subjectTextEditingController => - (origin as ThreadViewModelProvider).subjectTextEditingController; -} -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/views/block_view.dart b/lib/views/block_view.dart index 512ec15..3faa829 100644 --- a/lib/views/block_view.dart +++ b/lib/views/block_view.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:memoweave/models/block_callback_props.dart'; -import 'package:memoweave/models/block_props.dart'; -import 'package:memoweave/utils/use_block_texteditingcontroller.dart'; +import '../models/block_callback_props.dart'; +import '../models/block_props.dart'; import '../models/block_texteditingcontroller_props.dart'; +import '../utils/use_block_texteditingcontroller.dart'; /// Block View. /// diff --git a/lib/views/thread_view.dart b/lib/views/thread_view.dart index a1abe79..b7d3c31 100644 --- a/lib/views/thread_view.dart +++ b/lib/views/thread_view.dart @@ -2,10 +2,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:intl/intl.dart'; -import 'package:memoweave/models/block_props.dart'; -import 'package:memoweave/models/database_props.dart'; -import 'package:memoweave/viewmodels/thread_viewmodel.dart'; -import 'package:memoweave/views/block_view.dart'; + +import '../models/block_props.dart'; +import '../models/database_props.dart'; +import '../viewmodels/thread_viewmodel.dart'; +import 'block_view.dart'; /// Thread View. /// From 75e5f37dbfd212f37f954b77731f956f51847757 Mon Sep 17 00:00:00 2001 From: microBob Date: Thu, 28 Dec 2023 04:33:02 +0000 Subject: [PATCH 17/22] Autoformat code --- lib/main.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 571be67..138243c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:stack_trace/stack_trace.dart'; import 'models/database_props.dart'; -import 'utils/database.dart'; import 'views/thread_view.dart'; void main() { From 54deea99dbf8a5156b8b92600058bf5c12088a40 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 20:35:30 -0800 Subject: [PATCH 18/22] Added database back --- lib/main.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/main.dart b/lib/main.dart index 138243c..571be67 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:stack_trace/stack_trace.dart'; import 'models/database_props.dart'; +import 'utils/database.dart'; import 'views/thread_view.dart'; void main() { From 3d03134238b6e64b9c36f036c3c6c67a8a74c873 Mon Sep 17 00:00:00 2001 From: microBob Date: Thu, 28 Dec 2023 04:35:55 +0000 Subject: [PATCH 19/22] Autoformat code --- lib/main.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 571be67..138243c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:stack_trace/stack_trace.dart'; import 'models/database_props.dart'; -import 'utils/database.dart'; import 'views/thread_view.dart'; void main() { From d3cf88c8c75d1a25f24edc5a2f7f4a44e8bee77b Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 20:38:50 -0800 Subject: [PATCH 20/22] Added database back again, added build to lint --- .github/workflows/autoformat-and-lint.yml | 4 ++++ lib/main.dart | 1 + 2 files changed, 5 insertions(+) diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index 8c3bfc9..0e071ea 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -25,6 +25,9 @@ jobs: - name: 🎯 Setup Dart uses: dart-lang/setup-dart@v1 + - name: 🤖 Build dart files + run: dart run build_runner build -d + - name: 📝 Format Code run: dart format . @@ -41,5 +44,6 @@ jobs: with: channel: 'stable' + - name: 🔍 Lint Flutter run: flutter analyze \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 138243c..571be67 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:stack_trace/stack_trace.dart'; import 'models/database_props.dart'; +import 'utils/database.dart'; import 'views/thread_view.dart'; void main() { From b947add27a749eb333e764198cb8128aff5cc442 Mon Sep 17 00:00:00 2001 From: Kenneth Yang Date: Wed, 27 Dec 2023 20:41:36 -0800 Subject: [PATCH 21/22] Added flutter to autoformat and lint --- .github/workflows/autoformat-and-lint.yml | 11 ++++++++++- .github/workflows/build.yml | 10 +++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/autoformat-and-lint.yml b/.github/workflows/autoformat-and-lint.yml index 0e071ea..540e46e 100644 --- a/.github/workflows/autoformat-and-lint.yml +++ b/.github/workflows/autoformat-and-lint.yml @@ -25,8 +25,17 @@ jobs: - name: 🎯 Setup Dart uses: dart-lang/setup-dart@v1 + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + cache: true + + - name: 📦 Get dependencies + run: flutter pub get + - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 📝 Format Code run: dart format . diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4d0b6ca..0b5d081 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: run: flutter pub get - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 🛠️ Build run: flutter build macos @@ -59,7 +59,7 @@ jobs: run: flutter pub get - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 🛠️ Build run: flutter build windows @@ -92,7 +92,7 @@ jobs: run: flutter pub get - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 🛠️ Build run: flutter build linux @@ -123,7 +123,7 @@ jobs: run: flutter pub get - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 🛠️ Build APK run: flutter build apk @@ -151,7 +151,7 @@ jobs: run: flutter pub get - name: 🤖 Build dart files - run: dart run build_runner build -d + run: dart run build_runner build - name: 🛠️ Build run: flutter build ios --no-codesign From 78143ed2077e9af437df63ad0386174d06f60aeb Mon Sep 17 00:00:00 2001 From: microBob Date: Thu, 28 Dec 2023 04:43:05 +0000 Subject: [PATCH 22/22] Autoformat code --- linux/flutter/generated_plugin_registrant.cc | 7 +++---- linux/flutter/generated_plugins.cmake | 2 +- windows/flutter/generated_plugin_registrant.cc | 4 ++-- windows/flutter/generated_plugins.cmake | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 8713324..b898c8c 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -9,8 +9,7 @@ #include void fl_register_plugins(FlPluginRegistry* registry) { - g_autoptr(FlPluginRegistrar) - isar_flutter_libs_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin"); - isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar); + g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin"); + isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 3789042..cb083af 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,7 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST - isar_flutter_libs + isar_flutter_libs ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index b009165..afc39a1 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -9,6 +9,6 @@ #include void RegisterPlugins(flutter::PluginRegistry* registry) { - IsarFlutterLibsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); + IsarFlutterLibsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 6ec91ca..2a57005 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,7 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST - isar_flutter_libs + isar_flutter_libs ) list(APPEND FLUTTER_FFI_PLUGIN_LIST