This PR introduces basic auth implementation between the app and the
server as part of the architectural example.
This PR is a big bigger than the previous ones so I hope this
explanation helps:
### Server implementation
The server introduces a new endpoint `/login` to perform login requests,
which accepts login requests defined in the `LoginRequest` data class,
with an email and password.
The login process "simulates" checking on the email and password and
responds with a "token" and user ID, defined by the `LoginResponse` data
class. This is a simple hard-coded check and in any way a guide on how
to implement authentication, just a way to demonstrate an architectural
example.
The server also implements a middleware in
`server/lib/middleware/auth.dart`. This checks that the requests between
the app and the server carry a valid authorization token in the headers,
responding with an unauthorized error otherwise.
### App implementation
The app introduces the following new parts:
- `AuthTokenRepository`: In charge of storing the auth token.
- `AuthLoginComponent`: In charge of performing login.
- `AuthLogoutComponent`: In charge of performing logout.
- `LoginScreen` with `LoginViewModel`: Displays the login screen.
- `LogoutButton` with `LogoutViewModel`: Displays a logout button.
The `AuthTokenRepository` acts as the source of truth to decide if the
user is logged in or not. If the repository contains a token, it means
the user is logged in, otherwise if the token is null, it means that the
user is logged out. This repository is also a `ChangeNotifier`, which
allows listening to change in it.
The `GoRouter` has been modified so it listens to changes in the
`AuthTokenRepository` using the `refreshListenable` property. It also
implements a `redirect`, so if the token is set to `null` in the
repository, the router will redirect users automatically to the login
screen. This follows the example found in
https://github.com/flutter/packages/blob/main/packages/go_router/example/lib/redirection.dart
On app start, `GoRouter` checks the `AuthTokenRepository`, if a token
exists the user stays in `/`, if not, the user is redirected to
`/login`.
The `ApiClient` has also been modified, so it reads the stored token
from the repository when performing network calls, and adds it to the
auth headers.
The two new components implement basic login and logout functionality.
The `AuthLoginComponent` will send the request using the `ApiClient`,
and then store the token from the response. The `AuthLogoutComponent`
clears the stored token from the repository, and as well clears any
existing itinerary configuration, effectively cleaning the app state.
Performing logout redirects the user to the login screen, as explained.
The `LoginScreen` uses the `AuthLoginComponent` internally, it displays
two text fields and a login button, plus the application logo on top. A
successful login redirects the user to `/`.
The `LogoutButton` replaces the home button at the `/`, and on tap it
will perform logout using the `AuthLogoutComponent`.
**Development target app**
The development target app works slightly different compared to the
staging build. In this case, the `AuthTokenRepository` always contains a
fake token, so the app believes it is always logged in.
Auth is only used in the staging build when the server is involved.
## Screenshots
<details>
<summary>Screenshots</summary>
The logout button in the top right corner:
![Screenshot from 2024-08-14
15-28-54](https://github.com/user-attachments/assets/1c5a37dc-9fa1-4950-917e-0c7272896780)
The login screen:
![Screenshot from 2024-08-14
15-28-12](https://github.com/user-attachments/assets/3c26ccc2-8e3b-42d2-a230-d31048af6960)
</details>
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.26.2 to 3.26.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<p>Note that the only difference between <code>v2</code> and
<code>v3</code> of the CodeQL Action is the node version they support,
with <code>v3</code> running on node 20 while we continue to release
<code>v2</code> to support running on node 16. For example
<code>3.22.11</code> was the first <code>v3</code> release and is
functionally identical to <code>2.22.11</code>. This approach ensures an
easy way to track exactly which features are included in different
versions, indicated by the minor and patch version numbers.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.26.3 - 19 Aug 2024</h2>
<ul>
<li>Fix an issue where the CodeQL Action could not write diagnostic
messages on Windows. This issue did not impact analysis quality. <a
href="https://redirect.github.com/github/codeql-action/pull/2430">#2430</a></li>
</ul>
<h2>3.26.2 - 14 Aug 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.18.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2417">#2417</a></li>
</ul>
<h2>3.26.1 - 13 Aug 2024</h2>
<p>No user facing changes.</p>
<h2>3.26.0 - 06 Aug 2024</h2>
<ul>
<li><em>Deprecation:</em> Swift analysis on Ubuntu runner images is no
longer supported. Please migrate to a macOS runner if this affects you.
<a
href="https://redirect.github.com/github/codeql-action/pull/2403">#2403</a></li>
<li>Bump the minimum CodeQL bundle version to 2.13.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2408">#2408</a></li>
</ul>
<h2>3.25.15 - 26 Jul 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.18.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2385">#2385</a></li>
</ul>
<h2>3.25.14 - 25 Jul 2024</h2>
<ul>
<li>Experimental: add a new <code>start-proxy</code> action which starts
the same HTTP proxy as used by <a
href="https://github.com/github/dependabot-action"><code>github/dependabot-action</code></a>.
Do not use this in production as it is part of an internal experiment
and subject to change at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2376">#2376</a></li>
</ul>
<h2>3.25.13 - 19 Jul 2024</h2>
<ul>
<li>Add <code>codeql-version</code> to outputs. <a
href="https://redirect.github.com/github/codeql-action/pull/2368">#2368</a></li>
<li>Add a deprecation warning for customers using CodeQL version 2.13.4
and earlier. These versions of CodeQL were discontinued on 9 July 2024
alongside GitHub Enterprise Server 3.9, and will be unsupported by
CodeQL Action versions 3.26.0 and later and versions 2.26.0 and later.
<a
href="https://redirect.github.com/github/codeql-action/pull/2375">#2375</a>
<ul>
<li>If you are using one of these versions, please update to CodeQL CLI
version 2.13.5 or later. For instance, if you have specified a custom
version of the CLI using the 'tools' input to the 'init' Action, you can
remove this input to use the default version.</li>
<li>Alternatively, if you want to continue using a version of the CodeQL
CLI between 2.12.6 and 2.13.4, you can replace
<code>github/codeql-action/*@v3</code> by
<code>github/codeql-action/*@v3.25.13</code> and
<code>github/codeql-action/*@v2</code> by
<code>github/codeql-action/*@v2.25.13</code> in your code scanning
workflow to ensure you continue using this version of the CodeQL
Action.</li>
</ul>
</li>
</ul>
<h2>3.25.12 - 12 Jul 2024</h2>
<ul>
<li>Improve the reliability and performance of analyzing code when
analyzing a compiled language with the <code>autobuild</code> <a
href="https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes">build
mode</a> on GitHub Enterprise Server. This feature is already available
to GitHub.com users. <a
href="https://redirect.github.com/github/codeql-action/pull/2353">#2353</a></li>
<li>Update default CodeQL bundle version to 2.18.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2364">#2364</a></li>
</ul>
<h2>3.25.11 - 28 Jun 2024</h2>
<ul>
<li>Avoid failing the workflow run if there is an error while uploading
debug artifacts. <a
href="https://redirect.github.com/github/codeql-action/pull/2349">#2349</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="883d8588e5"><code>883d858</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2431">#2431</a>
from github/update-v3.26.3-b187c86ce</li>
<li><a
href="e100cebbec"><code>e100ceb</code></a>
Update changelog for v3.26.3</li>
<li><a
href="b187c86ce5"><code>b187c86</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2430">#2430</a>
from github/henrymercer/windows-diagnostics-fix</li>
<li><a
href="e2bb5a2777"><code>e2bb5a2</code></a>
Add changelog note</li>
<li><a
href="e5a65875f9"><code>e5a6587</code></a>
Fix writing diagnostics on Windows</li>
<li><a
href="5c681efc3f"><code>5c681ef</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2426">#2426</a>
from github/mergeback/v3.26.2-to-main-429e1977</li>
<li><a
href="676519a882"><code>676519a</code></a>
Update checked-in dependencies</li>
<li><a
href="25a5b8f08c"><code>25a5b8f</code></a>
Update changelog and version after v3.26.2</li>
<li>See full diff in <a
href="429e197704...883d8588e5">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.26.2&new-version=3.26.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 18.1.4
to 18.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/releases"><code>@angular/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v18.2.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.2.0 (2024-08-14)</h1>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="4da922e4f4"><img
src="https://img.shields.io/badge/4da922e4f-feat-blue" alt="feat -
4da922e4f" /></a></td>
<td>use isolatedModules in generated project</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="24aaf1e37f"><img
src="https://img.shields.io/badge/24aaf1e37-feat-blue" alt="feat -
24aaf1e37" /></a></td>
<td>support import attribute based loader configuration</td>
</tr>
</tbody>
</table>
<h2>v18.2.0-rc.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.2.0-rc.0 (2024-08-07)</h1>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="182ecbd188"><img
src="https://img.shields.io/badge/182ecbd18-fix-green" alt="fix -
182ecbd18" /></a></td>
<td>allow explicitly disabling TypeScript incremental mode</td>
</tr>
<tr>
<td><a
href="34908a3fcb"><img
src="https://img.shields.io/badge/34908a3fc-fix-green" alt="fix -
34908a3fc" /></a></td>
<td>lazy load Node.js inspector for dev server</td>
</tr>
</tbody>
</table>
<h2>v18.2.0-next.3</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.2.0-next.3 (2024-07-31)</h1>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="636cb69324"><img
src="https://img.shields.io/badge/636cb6932-fix-green" alt="fix -
636cb6932" /></a></td>
<td>add CSP <code>nonce</code> attribute to script tags when inline
critical CSS is disabled</td>
</tr>
<tr>
<td><a
href="7d52941a2e"><img
src="https://img.shields.io/badge/7d52941a2-fix-green" alt="fix -
7d52941a2" /></a></td>
<td>prevent build failures with remote CSS imports when Tailwind is
configured</td>
</tr>
<tr>
<td><a
href="0466fb74a2"><img
src="https://img.shields.io/badge/0466fb74a-fix-green" alt="fix -
0466fb74a" /></a></td>
<td>resolve error with <code>extract-i18n</code> builder for
libraries</td>
</tr>
</tbody>
</table>
<h2>v18.2.0-next.2</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.2.0-next.2 (2024-07-24)</h1>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="37a2138cb4"><img
src="https://img.shields.io/badge/37a2138cb-fix-green" alt="fix -
37a2138cb" /></a></td>
<td>account for HTML base HREF for dev-server externals</td>
</tr>
<tr>
<td><a
href="8ff687d036"><img
src="https://img.shields.io/badge/8ff687d03-fix-green" alt="fix -
8ff687d03" /></a></td>
<td>correctly detect comma in Sass URL lexer</td>
</tr>
<tr>
<td><a
href="6d6937587f"><img
src="https://img.shields.io/badge/6d6937587-fix-green" alt="fix -
6d6937587" /></a></td>
<td>prevent redirection loop</td>
</tr>
<tr>
<td><a
href="11a140babb"><img
src="https://img.shields.io/badge/11a140bab-fix-green" alt="fix -
11a140bab" /></a></td>
<td>serve HTML files directly</td>
</tr>
</tbody>
</table>
<h2>v18.2.0-next.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.2.0-next.1 (2024-07-17)</h1>
<h3><code>@angular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="9baae6e22c"><img
src="https://img.shields.io/badge/9baae6e22-fix-green" alt="fix -
9baae6e22" /></a></td>
<td>skip undefined files when generating budget stats</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@angular/cli</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>18.2.0 (2024-08-14)</h1>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="4da922e4f4">4da922e4f</a></td>
<td>feat</td>
<td>use isolatedModules in generated project</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="24aaf1e37f">24aaf1e37</a></td>
<td>feat</td>
<td>support import attribute based loader configuration</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ff5a0fe212"><code>ff5a0fe</code></a>
release: cut the v18.2.0 release</li>
<li><a
href="1a876a3153"><code>1a876a3</code></a>
build: update Angular versions to 18.2 stable</li>
<li><a
href="eb9c7fee72"><code>eb9c7fe</code></a>
build: remove unnecessary excludes from tsconfig.json</li>
<li><a
href="0c2ca9a040"><code>0c2ca9a</code></a>
build: remove Bazel typings workaround</li>
<li><a
href="4528be1eab"><code>4528be1</code></a>
build: add missing <code>pkg_deps</code> for
<code>@angular/create</code></li>
<li><a
href="d14c9ab0d9"><code>d14c9ab</code></a>
refactor(<code>@angular-devkit/build-angular</code>): reduce custom
code in browser-esbuil...</li>
<li><a
href="5eef87c25c"><code>5eef87c</code></a>
build: update all non-major dependencies</li>
<li><a
href="62c040a6a3"><code>62c040a</code></a>
build: update all non-major dependencies</li>
<li><a
href="6351c44dfc"><code>6351c44</code></a>
release: cut the v18.2.0-rc.0 release</li>
<li><a
href="6419c2a2e2"><code>6419c2a</code></a>
build: update angular</li>
<li>Additional commits viewable in <a
href="https://github.com/angular/angular-cli/compare/18.1.4...18.2.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/cli&package-manager=npm_and_yarn&previous-version=18.1.4&new-version=18.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.26.1 to 3.26.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="429e197704"><code>429e197</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2425">#2425</a>
from github/update-v3.26.2-a93f8c2fd</li>
<li><a
href="9eec338902"><code>9eec338</code></a>
Update changelog for v3.26.2</li>
<li><a
href="a93f8c2fd1"><code>a93f8c2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2423">#2423</a>
from github/mergeback/v3.26.1-to-main-29d86d22</li>
<li><a
href="af1f2e89e3"><code>af1f2e8</code></a>
Address incorrect CHANGELOG.md</li>
<li><a
href="2bc3b8381e"><code>2bc3b83</code></a>
Update checked-in dependencies</li>
<li><a
href="dd9700c166"><code>dd9700c</code></a>
Reapply "Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2417">#2417</a>
from github/update-bundle/codeql-bundle-v2....</li>
<li><a
href="ece28a826b"><code>ece28a8</code></a>
Update changelog and version after v3.26.1</li>
<li>See full diff in <a
href="29d86d22a3...429e197704">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.26.1&new-version=3.26.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.26.0 to 3.26.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="29d86d22a3"><code>29d86d2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2422">#2422</a>
from github/update-v3.26.1-0d5982aa3</li>
<li><a
href="5b15b9edeb"><code>5b15b9e</code></a>
Revert "Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2417">#2417</a>
from github/update-bundle/codeql-bundle-v2.1...</li>
<li><a
href="18ac79e766"><code>18ac79e</code></a>
Update changelog for v3.26.1</li>
<li><a
href="0d5982aa33"><code>0d5982a</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2416">#2416</a>
from github/henrymercer/ghes-3.14-compat-info</li>
<li><a
href="da9ecb0f40"><code>da9ecb0</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2421">#2421</a>
from github/henrymercer/log-job-run-uuid</li>
<li><a
href="c4c3c4421f"><code>c4c3c44</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2417">#2417</a>
from github/update-bundle/codeql-bundle-v2.18.2</li>
<li><a
href="41833c77c6"><code>41833c7</code></a>
Log job run UUID</li>
<li><a
href="d620faa0b4"><code>d620faa</code></a>
Bump the npm group with 4 updates (<a
href="https://redirect.github.com/github/codeql-action/issues/2419">#2419</a>)</li>
<li><a
href="25ad3c8e40"><code>25ad3c8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2418">#2418</a>
from github/henrymercer/extraction-time-telemetry</li>
<li><a
href="44ecae4896"><code>44ecae4</code></a>
Fix matrixing of "submit SARIF after failure" check</li>
<li>Additional commits viewable in <a
href="eb055d739a...29d86d22a3">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.26.0&new-version=3.26.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR adds the Booking screen at the end of the main app flow.
After the user selects `Activity`s, these get stored in the
`ItineraryConfig` and then the user navigates to the `BookingScreen`.
In the `BookingScreen`, a `Booking` is generated with the
`BookingCreateComponent`.
This component communicates with multiple repositories, and it is a bit
more complex than the average view model, something that we want to show
as discussed in the previous PRs.
<details>
<summary>Screenshots</summary>
![image](https://github.com/user-attachments/assets/6a9d8d5b-0d2c-4724-8aca-d750186651b7)
![image](https://github.com/user-attachments/assets/0ef4d00e-e67b-4ec6-9ea3-28511ed4c2b8)
</details>
In the `BookingScreen`, the user can tap on "share trip" which displays
the OS share sheet functionality. This uses the plugin `share_plus`, but
the functionality is also wrapped in the `BookingShareComponent`, which
takes a `Booking` object and creates a shareable string, then calls to
the `Share.share()` method from `share_plus`. But the `share_plus`
dependency is also injected into the `BookingShareComponent`, allowing
us to unit test without plugin dependencies.
This is an example of a shared booking to instant messaging:
![image](https://github.com/user-attachments/assets/5a559080-4f9a-45e6-a736-ab849a7adc39)
**TODO**
- I want to take a look at the whole experience on mobile, as I noticed
some inconsistent UI and navigation issues that I couldn't see on
Desktop. I will submit those in a new PR.
- We also talked about user authentication in the design document. I
will work on that once we are happy with the main app flow.
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Bumps
[actions/upload-artifact](https://github.com/actions/upload-artifact)
from 4.3.5 to 4.3.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v4.3.6</h2>
<h2>What's Changed</h2>
<ul>
<li>Revert to <code>@actions/artifact</code> 2.1.8 by <a
href="https://github.com/robherley"><code>@robherley</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/594">actions/upload-artifact#594</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v4...v4.3.6">https://github.com/actions/upload-artifact/compare/v4...v4.3.6</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="834a144ee9"><code>834a144</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/594">#594</a>
from actions/robherley/4.3.6</li>
<li><a
href="134dcf33c0"><code>134dcf3</code></a>
v4.3.6</li>
<li><a
href="73a0b9c954"><code>73a0b9c</code></a>
revert back to <code>@actions/artifact</code> 2.1.8</li>
<li>See full diff in <a
href="89ef406dd8...834a144ee9">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4.3.5&new-version=4.3.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.25.15 to 3.26.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<p>Note that the only difference between <code>v2</code> and
<code>v3</code> of the CodeQL Action is the node version they support,
with <code>v3</code> running on node 20 while we continue to release
<code>v2</code> to support running on node 16. For example
<code>3.22.11</code> was the first <code>v3</code> release and is
functionally identical to <code>2.22.11</code>. This approach ensures an
easy way to track exactly which features are included in different
versions, indicated by the minor and patch version numbers.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.26.0 - 06 Aug 2024</h2>
<ul>
<li><em>Deprecation:</em> Swift analysis on Ubuntu runner images is no
longer supported. Please migrate to a macOS runner if this affects you.
<a
href="https://redirect.github.com/github/codeql-action/pull/2403">#2403</a></li>
<li>Bump the minimum CodeQL bundle version to 2.13.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2408">#2408</a></li>
</ul>
<h2>3.25.15 - 26 Jul 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.18.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2385">#2385</a></li>
</ul>
<h2>3.25.14 - 25 Jul 2024</h2>
<ul>
<li>Experimental: add a new <code>start-proxy</code> action which starts
the same HTTP proxy as used by <a
href="https://github.com/github/dependabot-action"><code>github/dependabot-action</code></a>.
Do not use this in production as it is part of an internal experiment
and subject to change at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/2376">#2376</a></li>
</ul>
<h2>3.25.13 - 19 Jul 2024</h2>
<ul>
<li>Add <code>codeql-version</code> to outputs. <a
href="https://redirect.github.com/github/codeql-action/pull/2368">#2368</a></li>
<li>Add a deprecation warning for customers using CodeQL version 2.13.4
and earlier. These versions of CodeQL were discontinued on 9 July 2024
alongside GitHub Enterprise Server 3.9, and will be unsupported by
CodeQL Action versions 3.26.0 and later and versions 2.26.0 and later.
<a
href="https://redirect.github.com/github/codeql-action/pull/2375">#2375</a>
<ul>
<li>If you are using one of these versions, please update to CodeQL CLI
version 2.13.5 or later. For instance, if you have specified a custom
version of the CLI using the 'tools' input to the 'init' Action, you can
remove this input to use the default version.</li>
<li>Alternatively, if you want to continue using a version of the CodeQL
CLI between 2.12.6 and 2.13.4, you can replace
<code>github/codeql-action/*@v3</code> by
<code>github/codeql-action/*@v3.25.13</code> and
<code>github/codeql-action/*@v2</code> by
<code>github/codeql-action/*@v2.25.13</code> in your code scanning
workflow to ensure you continue using this version of the CodeQL
Action.</li>
</ul>
</li>
</ul>
<h2>3.25.12 - 12 Jul 2024</h2>
<ul>
<li>Improve the reliability and performance of analyzing code when
analyzing a compiled language with the <code>autobuild</code> <a
href="https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes">build
mode</a> on GitHub Enterprise Server. This feature is already available
to GitHub.com users. <a
href="https://redirect.github.com/github/codeql-action/pull/2353">#2353</a></li>
<li>Update default CodeQL bundle version to 2.18.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2364">#2364</a></li>
</ul>
<h2>3.25.11 - 28 Jun 2024</h2>
<ul>
<li>Avoid failing the workflow run if there is an error while uploading
debug artifacts. <a
href="https://redirect.github.com/github/codeql-action/pull/2349">#2349</a></li>
<li>Update default CodeQL bundle version to 2.17.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2352">#2352</a></li>
</ul>
<h2>3.25.10 - 13 Jun 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2327">#2327</a></li>
</ul>
<h2>3.25.9 - 12 Jun 2024</h2>
<ul>
<li>Avoid failing database creation if the database folder already
exists and contains some unexpected files. Requires CodeQL 2.18.0 or
higher. <a
href="https://redirect.github.com/github/codeql-action/pull/2330">#2330</a></li>
<li>The init Action will attempt to clean up the database cluster
directory before creating a new database and at the end of the job. This
will help to avoid issues where the database cluster directory is left
in an inconsistent state. <a
href="https://redirect.github.com/github/codeql-action/pull/2332">#2332</a></li>
</ul>
<h2>3.25.8 - 04 Jun 2024</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="eb055d739a"><code>eb055d7</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2410">#2410</a>
from github/update-v3.26.0-c24926b73</li>
<li><a
href="3884d04c11"><code>3884d04</code></a>
Update changelog for v3.26.0</li>
<li><a
href="c24926b734"><code>c24926b</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2407">#2407</a>
from github/dependabot/npm_and_yarn/npm-7954a73ad2</li>
<li><a
href="68ba39bacf"><code>68ba39b</code></a>
Merge branch 'main' into dependabot/npm_and_yarn/npm-7954a73ad2</li>
<li><a
href="8dd1773467"><code>8dd1773</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2408">#2408</a>
from github/henrymercer/deprecate-codeql-2.13.4</li>
<li><a
href="441c9d90e4"><code>441c9d9</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2409">#2409</a>
from github/henrymercer/fix-required-checks</li>
<li><a
href="f03da13454"><code>f03da13</code></a>
Exclude push-only unit tests job from required PR checks script</li>
<li><a
href="29a5cfc75d"><code>29a5cfc</code></a>
Bump version to 3.26.0</li>
<li><a
href="9e440ad4c7"><code>9e440ad</code></a>
Add changelog note</li>
<li><a
href="136f5a589b"><code>136f5a5</code></a>
Add CodeQL v2.17.6 to default test versions</li>
<li>Additional commits viewable in <a
href="afb54ba388...eb055d739a">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.25.15&new-version=3.26.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR is to include `CarouselView` to M3 demo app.
https://github.com/user-attachments/assets/7db76c06-aa7e-4461-9baa-51fd5c4e6b38
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
---------
Co-authored-by: Eric Windmill <ewindmill@google.com>
This PR introduces the Activities screen, handling of errors in view
models and commands, and logs using the dart `logging` package.
**Activities**
- The screen loads a list of activities, split in daytime and evening
activities, and the user can select them.
- Server adds the endpoint `/destination/<id>/activitity` which was
missing before.
Screencast provided:
[Screencast from 2024-07-29
16-29-02.webm](https://github.com/user-attachments/assets/a56024d8-0a9c-49e7-8fd0-c895da15badc)
**Error handling**
_UI Error handling:_
In the screencast you can see a `SnackBar` appearing, since the
"Confirm" button is not yet implemented.
The `saveActivities` Command returns an error `Result.error()`, then the
error state is exposed by the Command and consumed by the listener in
the `ActivityScreen`, which displays a `SnackBar` and consumes the
state.
Functionality is similar to the one found in [UI events - Consuming
events can trigger state
updates](https://developer.android.com/topic/architecture/ui-layer/events#consuming-trigger-updates)
from the Android architecture guide, as the command state is "consumed"
and cleared.
The Snackbar also includes an action to "try again". Tapping on it calls
to the failed Command `execute()` so users can run the action again.
For example, here the `saveActivities` command failed, so `error` is
`true`. Then we call to `clearResult()` to remove the failed status, and
show a `SnackBar`, with the `SnackBarAction` that runs `saveActivities`
again when tapped.
```dart
if (widget.viewModel.saveActivities.error) {
widget.viewModel.saveActivities.clearResult();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: const Text('Error while saving activities'),
action: SnackBarAction(
label: "Try again",
onPressed: widget.viewModel.saveActivities.execute,
),
),
);
}
```
Since commands expose `running`, `error` and `completed`, it is easy to
implement loading and error indicator widgets:
[Screencast from 2024-07-29
16-55-42.webm](https://github.com/user-attachments/assets/fb5772d0-7b9d-4ded-8fa2-9ce347f4d555)
As side node, we can easily simulate that state by adding these lines in
any of the repository implementations:
```dart
await Future.delayed(Durations.extralong1);
return Result.error(Exception('ERROR!'));
```
_In-code error handling:_
The project introduces the `logging` package.
In the entry point `main_development.dart` the log level is configured.
Then in code, a `Logger` is creaded in each View Model with the name of
the class. Then the log calls are used depending on the `Result`
response, some finer traces are also added.
By default, they are printed to the IDE debug console, for example:
```
[SearchFormViewModel] Continents (7) loaded
[SearchFormViewModel] ItineraryConfig loaded
[SearchFormViewModel] Selected continent: Asia
[SearchFormViewModel] Selected date range: 2024-07-30 00:00:00.000 - 2024-08-08 00:00:00.000
[SearchFormViewModel] Set guests number: 1
[SearchFormViewModel] ItineraryConfig saved
```
**Other changes**
- The json files containing destinations and activities are moved into
the `app/assets/` folders, and the server is querying those files
instead of their own copy. This is done to avoid file duplication but we
can make a copy of those assets files for the server if we decide to.
**TODO Next**
- I will implement the "book a trip" screen which would complete the
main application flow, which should introduce a more complex
"component/use case" outside a view model.
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Part 1/n https://github.com/flutter/flutter/issues/152374
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] All existing and new tests are passing.
Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.1.2 to
5.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jasmine/jasmine/releases">jasmine-core's
releases</a>.</em></p>
<blockquote>
<h2>v5.2.0</h2>
<p>Please see the <a
href="https://github.com/jasmine/jasmine/blob/main/release_notes/5.2.0.md">release
notes</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cd1b7ce9c7"><code>cd1b7ce</code></a>
Bump version to 5.2.0</li>
<li><a
href="3653d6e0ef"><code>3653d6e</code></a>
Moved eslint and prettier configs out of package.json</li>
<li><a
href="c3387f8dbf"><code>c3387f8</code></a>
Merge branch 'stephanreiter-better-toHaveSize'</li>
<li><a
href="3d54184c7f"><code>3d54184</code></a>
Docs: Improved discoverability of asymmetric equality testers</li>
<li><a
href="6f23e706d7"><code>6f23e70</code></a>
Improve the error message of the toHaveSize matcher.</li>
<li><a
href="cc69edf92c"><code>cc69edf</code></a>
Fixed stack trace filtering in FF when the developer tools are open</li>
<li><a
href="ba7560f65e"><code>ba7560f</code></a>
HTML reporter: show debug logs with white-space: pre</li>
<li><a
href="c3960c4a96"><code>c3960c4</code></a>
Test against Node 22</li>
<li><a
href="5c21f94bb1"><code>5c21f94</code></a>
4.6.1 release notes</li>
<li><a
href="8cd7c94490"><code>8cd7c94</code></a>
Added a jsdoc example for withContext()</li>
<li>Additional commits viewable in <a
href="https://github.com/jasmine/jasmine/compare/v5.1.2...v5.2.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jasmine-core&package-manager=npm_and_yarn&previous-version=5.1.2&new-version=5.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Part of the WIP for the Compass App example. Merge to `compass-app`.
This PR introduces:
- A new feature for Activities (UI unfinished).
- A repository for the current Itinerary Configuration.
- A `Command` utils class to be used in View Models.
**Activities**
- PR adds the `compass_app/app/assets/activities.json` (large file!)
- Created `ActivityRepository` with local and remote implementation.
- Added `getActivitiesByDestination` to `ApiClient`
- Added `Activity` data model
- Created `ActivitiesScreen` and `ActivitiesViewModel`.
- WIP: Decided to finish the UI later due to the size the PR was taking.
- WIP: Server implementation for Activities will be completed in another
PR.
**Itinerary Configuration**
- Created the `ItineraryConfigRepository` with an "in-memory"
implementation. (local database or shared preferences could potentially
be implemented too)
- Refactored the way screens share data, instead of passing data using
the navigator query parameters, the screens store the state (the
itinerary configuration) in this repository, and load it when the screen
is opened.
- This allows to navigate between screens, back and forth, and keep the
selection of data the user made.
**Commands**
- To handle button taps and other running actions.
- Encapsulates an action, exposes the running state (to show progress
indicators), and ensures that the action cannot execute if it is already
running (to avoid multiple taps on buttons).
- Two implementations included, one without arguments `Command0`, and
one that supports a single argument `Command1`.
- Commands also provide an `onComplete` callback, in case the UI needs
to do something when the action finished running (e.g. navigate).
- Tests are included.
**TODO in further PRs**
- Finish the Activities UI and continue implementing the app flow.
- Introduce an error handling solution.
- Move the data jsons into a common folder (maybe a package?) so they
can be shared between app and server and don't duplicate files.
**Screencast**
As it can be observed, the state of the screen is recovered from the
stored "itinerary config".
Note: Activites screen appears empty, the list is just printed on
terminal at the moment.
[Screencast from 2024-07-23
10-58-40.webm](https://github.com/user-attachments/assets/54805c66-2938-48dd-8f63-a26b1e88eab6)
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Bumps [ffigen](https://github.com/dart-lang/native/tree/main/pkgs) from
12.0.0 to 13.0.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/dart-lang/native/commits/HEAD/pkgs">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ffigen&package-manager=pub&previous-version=12.0.0&new-version=13.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This PR introduces two new subprojects:
- `compass_server` under `compass_app/server`.
- `compass_model` under `compass_app/model`.
**`compass_server`**
- Dart server implemented using `shelf`.
- Created with the `dart create -t server-shelf` template.
- Implements two REST endpoints:
- `GET /continent`: Returns the list of `Continent` as JSON.
- `GET /destination`: Returns the list of `Destination` as JSON.
- Generated Docker files have been removed.
- Implemented tests.
- TODO: Implement some basic auth.
**`compass_model`**
- Dart package to share data model classes between the `server` and
`app`.
- Contains the data model classes (`Continent`, `Destination`).
- Generated JSON from/To methods and data classes using `freezed`.
- The sole purpose of this package is to host the data model. Other
shared code should go in a different package.
**Other changes**
- Created an API Client to connect to the local dart server.
- Created "remote" repositories, which also implement a basic in-memory
caching strategy.
- Created two dependency configurations, one with local repositories and
one with remote repos.
- Created two application main targets to select configuration:
- `lib/main_development.dart` which starts the app with the "local" data
configuration.
- `lib/main_staging.dart` which starts the app with the "remove" (local
dart server) configuration.
- `lib/main.dart` still works as default entry point.
- Implemented tests for remote repositories.
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Bumps [web](https://github.com/dart-lang/web) from 0.5.1 to 1.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dart-lang/web/releases">web's
releases</a>.</em></p>
<blockquote>
<h2>package:web v1.0.0</h2>
<ul>
<li>Added supertypes' fields to dictionary constructors as dictionaries
are
allowed to contain those fields.</li>
<li>Empty dictionary constructors now create an empty object instead of
being
treated like non-object literal <code>external</code> constructors.</li>
<li>Generate MDN API documentation for getters.</li>
<li>Update the docs for generated interface types to reference the MDN
Web Docs
project.</li>
<li>Address several broken links in API documentation.</li>
<li>Generate APIs based on if they're on track to be a standard and not
experimental. This is a looser restriction from the previous requirement
that
APIs need to be implemented by Chrome, Firefox, and Safari. As part of
this,
dictionaries and typedefs are only emitted if they're used by a
generated API.</li>
<li>Added <code>onUnload</code> event stream to
<code>ElementEventGetters</code> extension methods.</li>
<li>Expose <code>ElementStream</code> as a public class.</li>
<li>Require Dart <code>^3.4.0</code>.</li>
<li>APIs that return a double value now return <code>double</code>
instead of <code>num</code>. This is
to avoid users accidentally downcasting <code>num</code>, which has
different semantics
depending on whether you compile to JS or Wasm. See issue <a
href="https://redirect.github.com/dart-lang/web/issues/57">#57</a>[] for
more
details.</li>
<li>Fix an issue where some union types didn't account for typedef
nullability.
<a href="https://redirect.github.com/dart-lang/web/issues/57">#57</a>:
<a
href="https://redirect.github.com/dart-lang/web/issues/57">dart-lang/web#57</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dart-lang/web/blob/main/CHANGELOG.md">web's
changelog</a>.</em></p>
<blockquote>
<h2>1.0.0</h2>
<ul>
<li>Added supertypes' fields to dictionary constructors as dictionaries
are
allowed to contain those fields.</li>
<li>Empty dictionary constructors now create an empty object instead of
being
treated like non-object literal <code>external</code> constructors.</li>
<li>Generate MDN API documentation for getters.</li>
<li>Update the docs for generated interface types to reference the MDN
Web Docs
project.</li>
<li>Address several broken links in API documentation.</li>
<li>Generate APIs based on if they're on track to be a standard and not
experimental. This is a looser restriction from the previous requirement
that
APIs need to be implemented by Chrome, Firefox, and Safari. As part of
this,
dictionaries and typedefs are only emitted if they're used by a
generated API.</li>
<li>Added <code>onUnload</code> event stream to
<code>ElementEventGetters</code> extension methods.</li>
<li>Expose <code>ElementStream</code> as a public class.</li>
<li>Require Dart <code>^3.4.0</code>.</li>
<li>APIs that return a double value now return <code>double</code>
instead of <code>num</code>. This is
to avoid users accidentally downcasting <code>num</code>, which has
different semantics
depending on whether you compile to JS or Wasm. See issue <a
href="https://redirect.github.com/dart-lang/web/issues/57">#57</a>[] for
more
details.</li>
<li>Fix an issue where some union types didn't account for typedef
nullability.</li>
</ul>
<p><a
href="https://redirect.github.com/dart-lang/web/issues/57">#57</a>: <a
href="https://redirect.github.com/dart-lang/web/issues/57">dart-lang/web#57</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e89fe49d8a"><code>e89fe49</code></a>
Publish package:web v1 (<a
href="https://redirect.github.com/dart-lang/web/issues/271">#271</a>)</li>
<li><a
href="e4c4d81264"><code>e4c4d81</code></a>
Bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/dart-lang/web/issues/269">#269</a>)</li>
<li><a
href="2ae509e7e7"><code>2ae509e</code></a>
Update doc comments, bump version to 1.0.0-wip (<a
href="https://redirect.github.com/dart-lang/web/issues/268">#268</a>)</li>
<li><a
href="72a806f8e2"><code>72a806f</code></a>
Account for static members in MDN docs (<a
href="https://redirect.github.com/dart-lang/web/issues/267">#267</a>)</li>
<li><a
href="82b94c21c7"><code>82b94c2</code></a>
Add MAC_FF_META to KeyCode constants (<a
href="https://redirect.github.com/dart-lang/web/issues/264">#264</a>)</li>
<li><a
href="9e20f7f609"><code>9e20f7f</code></a>
Update Web IDL to 3.49.0 (<a
href="https://redirect.github.com/dart-lang/web/issues/266">#266</a>)</li>
<li><a
href="50239e9296"><code>50239e9</code></a>
Rename members when they collide with return/parameter type names (<a
href="https://redirect.github.com/dart-lang/web/issues/265">#265</a>)</li>
<li><a
href="6b8a46561b"><code>6b8a465</code></a>
Account for typedef nullability (<a
href="https://redirect.github.com/dart-lang/web/issues/257">#257</a>)</li>
<li><a
href="f6a7d38394"><code>f6a7d38</code></a>
Emit double as return value instead of num (<a
href="https://redirect.github.com/dart-lang/web/issues/256">#256</a>)</li>
<li><a
href="6d2229417d"><code>6d22294</code></a>
Add Float16Array alias (<a
href="https://redirect.github.com/dart-lang/web/issues/255">#255</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/dart-lang/web/compare/v0.5.1...v1.0.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=web&package-manager=pub&previous-version=0.5.1&new-version=1.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pigeon](https://github.com/flutter/packages/tree/main/packages)
from 20.0.2 to 21.0.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3379e51a04"><code>3379e51</code></a>
[pigeon] Fix C++ enum naming (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7094">#7094</a>)</li>
<li><a
href="33caf1d3d5"><code>33caf1d</code></a>
[ios]Fix compile error when conforming UIApplication to Launcher due to
MainA...</li>
<li><a
href="21e3340a95"><code>21e3340</code></a>
[go_router] Makes GoRouterState lookup more robust. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6920">#6920</a>)</li>
<li><a
href="da04812172"><code>da04812</code></a>
[ci][web] Run tests in canvaskit mode. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6879">#6879</a>)</li>
<li><a
href="0ae6dda5d1"><code>0ae6dda</code></a>
[image_picker]: Bump androidx.core:core from 1.10.1 to 1.13.1 in
/packages/im...</li>
<li><a
href="ea35fc6fb8"><code>ea35fc6</code></a>
[camera_avfoundation] Adds Swift Package Manager compatibility (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7080">#7080</a>)</li>
<li><a
href="57d42e447c"><code>57d42e4</code></a>
[webview_flutter_wkwebview] Adds Swift Package Manager compatibility (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7091">#7091</a>)</li>
<li><a
href="c47614c6d9"><code>c47614c</code></a>
[webview_flutter_web] Migrate to package:web. (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6792">#6792</a>)</li>
<li><a
href="17188b758b"><code>17188b7</code></a>
[camera] Clean up <code>maxDuration</code> code (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7039">#7039</a>)</li>
<li><a
href="007ec6676f"><code>007ec66</code></a>
Update espresso dependencies (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7048">#7048</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/flutter/packages/commits/pigeon-v21.0.0/packages">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pigeon&package-manager=pub&previous-version=20.0.2&new-version=21.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@angular/cli](https://github.com/angular/angular-cli) from 18.0.7
to 18.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/releases"><code>@angular/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v18.1.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.1.0 (2024-07-10)</h1>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="22e05dcb4a"><img
src="https://img.shields.io/badge/22e05dcb4-fix-green" alt="fix -
22e05dcb4" /></a></td>
<td>generate new projects with ECMAScript standard class field
behavior</td>
</tr>
</tbody>
</table>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="6d266c146c"><img
src="https://img.shields.io/badge/6d266c146-fix-green" alt="fix -
6d266c146" /></a></td>
<td>add fallbacks for migration package resolution</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="687a6c7eca"><img
src="https://img.shields.io/badge/687a6c7ec-feat-blue" alt="feat -
687a6c7ec" /></a></td>
<td>add <code>--inspect</code> option to the dev-server</td>
</tr>
<tr>
<td><a
href="628d87a947"><img
src="https://img.shields.io/badge/628d87a94-feat-blue" alt="feat -
628d87a94" /></a></td>
<td>support WASM/ES Module integration proposal</td>
</tr>
<tr>
<td><a
href="3e359da8df"><img
src="https://img.shields.io/badge/3e359da8d-fix-green" alt="fix -
3e359da8d" /></a></td>
<td>address rxjs undefined issues during SSR prebundling</td>
</tr>
<tr>
<td><a
href="4ff914a165"><img
src="https://img.shields.io/badge/4ff914a16-fix-green" alt="fix -
4ff914a16" /></a></td>
<td>allow additional module preloads up to limit</td>
</tr>
<tr>
<td><a
href="fb8e3c39a8"><img
src="https://img.shields.io/badge/fb8e3c39a-fix-green" alt="fix -
fb8e3c39a" /></a></td>
<td>allow top-level await in zoneless applications</td>
</tr>
<tr>
<td><a
href="83b75af9f7"><img
src="https://img.shields.io/badge/83b75af9f-fix-green" alt="fix -
83b75af9f" /></a></td>
<td>check inlineSourceMap option with isolated modules optimization</td>
</tr>
<tr>
<td><a
href="cd97134a6e"><img
src="https://img.shields.io/badge/cd97134a6-fix-green" alt="fix -
cd97134a6" /></a></td>
<td>normalize paths during module resolution in Vite</td>
</tr>
<tr>
<td><a
href="13d2100ddc"><img
src="https://img.shields.io/badge/13d2100dd-fix-green" alt="fix -
13d2100dd" /></a></td>
<td>read WASM file from script location on Node.js</td>
</tr>
<tr>
<td><a
href="3091956f50"><img
src="https://img.shields.io/badge/3091956f5-fix-green" alt="fix -
3091956f5" /></a></td>
<td>support import attributes in JavaScript transformer</td>
</tr>
<tr>
<td><a
href="dd94a831b4"><img
src="https://img.shields.io/badge/dd94a831b-perf-orange" alt="perf -
dd94a831b" /></a></td>
<td>enable dependency prebundling for server dependencies</td>
</tr>
<tr>
<td><a
href="3acb776831"><img
src="https://img.shields.io/badge/3acb77683-perf-orange" alt="perf -
3acb77683" /></a></td>
<td>use direct transpilation with isolated modules</td>
</tr>
</tbody>
</table>
<h2>v18.1.0-rc.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>18.1.0-rc.1 (2024-07-03)</h1>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="6c0f60d1bd"><img
src="https://img.shields.io/badge/6c0f60d1b-fix-green" alt="fix -
6c0f60d1b" /></a></td>
<td>make <code>ng update</code> to keep newline at the end of
package.json</td>
</tr>
</tbody>
</table>
<h3><code>@angular-devkit/build-angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="1eb36e5938"><img
src="https://img.shields.io/badge/1eb36e593-fix-green" alt="fix -
1eb36e593" /></a></td>
<td>reduce the number of max workers to available CPUs minus one</td>
</tr>
<tr>
<td><a
href="c6fc0203e0"><img
src="https://img.shields.io/badge/c6fc0203e-fix-green" alt="fix -
c6fc0203e" /></a></td>
<td>rollback terser to <code>5.29.2</code></td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="628d87a947"><img
src="https://img.shields.io/badge/628d87a94-feat-blue" alt="feat -
628d87a94" /></a></td>
<td>support WASM/ES Module integration proposal</td>
</tr>
<tr>
<td><a
href="fb8e3c39a8"><img
src="https://img.shields.io/badge/fb8e3c39a-fix-green" alt="fix -
fb8e3c39a" /></a></td>
<td>allow top-level await in zoneless applications</td>
</tr>
<tr>
<td><a
href="5ec7243385"><img
src="https://img.shields.io/badge/5ec724338-fix-green" alt="fix -
5ec724338" /></a></td>
<td>correctly name entry points to match budgets</td>
</tr>
<tr>
<td><a
href="cd97134a6e"><img
src="https://img.shields.io/badge/cd97134a6-fix-green" alt="fix -
cd97134a6" /></a></td>
<td>normalize paths during module resolution in Vite</td>
</tr>
<tr>
<td><a
href="27bd670831"><img
src="https://img.shields.io/badge/27bd67083-fix-green" alt="fix -
27bd67083" /></a></td>
<td>redirect to path with trailing slash for asset directories</td>
</tr>
<tr>
<td><a
href="e8a6d6bc41"><img
src="https://img.shields.io/badge/e8a6d6bc4-fix-green" alt="fix -
e8a6d6bc4" /></a></td>
<td>reduce the number of max workers to available CPUs minus one</td>
</tr>
<tr>
<td><a
href="3091956f50"><img
src="https://img.shields.io/badge/3091956f5-fix-green" alt="fix -
3091956f5" /></a></td>
<td>support import attributes in JavaScript transformer</td>
</tr>
</tbody>
</table>
<h2>v18.1.0-rc.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular-cli/blob/main/CHANGELOG.md"><code>@angular/cli</code>'s
changelog</a>.</em></p>
<blockquote>
<h1>18.1.0 (2024-07-10)</h1>
<h3><code>@angular/cli</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="6d266c146c">6d266c146</a></td>
<td>fix</td>
<td>add fallbacks for migration package resolution</td>
</tr>
</tbody>
</table>
<h3><code>@schematics/angular</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="22e05dcb4a">22e05dcb4</a></td>
<td>fix</td>
<td>generate new projects with ECMAScript standard class field
behavior</td>
</tr>
</tbody>
</table>
<h3><code>@angular/build</code></h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="687a6c7eca">687a6c7ec</a></td>
<td>feat</td>
<td>add <code>--inspect</code> option to the dev-server</td>
</tr>
<tr>
<td><a
href="628d87a947">628d87a94</a></td>
<td>feat</td>
<td>support WASM/ES Module integration proposal</td>
</tr>
<tr>
<td><a
href="3e359da8df">3e359da8d</a></td>
<td>fix</td>
<td>address rxjs undefined issues during SSR prebundling</td>
</tr>
<tr>
<td><a
href="4ff914a165">4ff914a16</a></td>
<td>fix</td>
<td>allow additional module preloads up to limit</td>
</tr>
<tr>
<td><a
href="fb8e3c39a8">fb8e3c39a</a></td>
<td>fix</td>
<td>allow top-level await in zoneless applications</td>
</tr>
<tr>
<td><a
href="83b75af9f7">83b75af9f</a></td>
<td>fix</td>
<td>check inlineSourceMap option with isolated modules optimization</td>
</tr>
<tr>
<td><a
href="cd97134a6e">cd97134a6</a></td>
<td>fix</td>
<td>normalize paths during module resolution in Vite</td>
</tr>
<tr>
<td><a
href="13d2100ddc">13d2100dd</a></td>
<td>fix</td>
<td>read WASM file from script location on Node.js</td>
</tr>
<tr>
<td><a
href="3091956f50">3091956f5</a></td>
<td>fix</td>
<td>support import attributes in JavaScript transformer</td>
</tr>
<tr>
<td><a
href="dd94a831b4">dd94a831b</a></td>
<td>perf</td>
<td>enable dependency prebundling for server dependencies</td>
</tr>
<tr>
<td><a
href="3acb776831">3acb77683</a></td>
<td>perf</td>
<td>use direct transpilation with isolated modules</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="482d0bea35"><code>482d0be</code></a>
release: cut the v18.1.0 release</li>
<li><a
href="0c52d5f807"><code>0c52d5f</code></a>
build: update Angular dependencies to version 18.1.0</li>
<li><a
href="13d2100ddc"><code>13d2100</code></a>
fix(<code>@angular/build</code>): read WASM file from script location
on Node.js</li>
<li><a
href="1772c871ba"><code>1772c87</code></a>
refactor(<code>@angular/cli</code>): provide a default extract-i18n
target for applications</li>
<li><a
href="4c6c32c439"><code>4c6c32c</code></a>
refactor: use explicit coercion of exitCode to number.</li>
<li><a
href="83b75af9f7"><code>83b75af</code></a>
fix(<code>@angular/build</code>): check inlineSourceMap option with
isolated modules optim...</li>
<li><a
href="713f456a27"><code>713f456</code></a>
release: cut the v18.1.0-rc.1 release</li>
<li><a
href="628d87a947"><code>628d87a</code></a>
feat(<code>@angular/build</code>): support WASM/ES Module integration
proposal</li>
<li><a
href="3091956f50"><code>3091956</code></a>
fix(<code>@angular/build</code>): support import attributes in
JavaScript transformer</li>
<li><a
href="c6fc0203e0"><code>c6fc020</code></a>
fix(<code>@angular-devkit/build-angular</code>): rollback terser to
<code>5.29.2</code></li>
<li>Additional commits viewable in <a
href="https://github.com/angular/angular-cli/compare/18.0.7...18.1.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/cli&package-manager=npm_and_yarn&previous-version=18.0.7&new-version=18.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Part of the implementation of the Compass App for the Architecture
sample.
**Merge to `compass-app`**
This PR introduces the Search Form Screen, in which users can select a
region, a date range and the number of guests.
The feature is split in 5 different widgets, each one depending on the
`SearchFormViewModel`. The architecture follows the same patterns
implemented in the previous PR
https://github.com/flutter/samples/pull/2342
TODO later on:
- Error handling is yet not implemented, we need to introduce a "logger"
and a way to handle error responses.
- All repositories return local data, next steps include creating the
dart server app.
- The search query at the moment only takes the "continent" and not the
dates and number of guests, that would be implemented later on as well.
## Demo
[Screencast from 2024-07-12
14-30-48.webm](https://github.com/user-attachments/assets/afbcdd4e-617a-49cc-894c-8e082748e572)
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Bumps [jnigen](https://github.com/dart-lang/native/tree/main/pkgs) from
0.9.3 to 0.10.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/dart-lang/native/commits/HEAD/pkgs">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jnigen&package-manager=pub&previous-version=0.9.3&new-version=0.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [espresso](https://github.com/flutter/packages/tree/main/packages)
from 0.3.0+10 to 0.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="007ec6676f"><code>007ec66</code></a>
Update espresso dependencies (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7048">#7048</a>)</li>
<li><a
href="01527175e3"><code>0152717</code></a>
[camera] Fix iOS torch mode regression (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7085">#7085</a>)</li>
<li><a
href="4063b20243"><code>4063b20</code></a>
[google_maps_flutter] Convert Obj-C->Dart calls to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7086">#7086</a>)</li>
<li><a
href="8e6ac90614"><code>8e6ac90</code></a>
[camera_avfoundation] fix sample times not being numeric after
pause/resume. ...</li>
<li><a
href="5cc641822e"><code>5cc6418</code></a>
[camera] Convert Windows to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6925">#6925</a>)</li>
<li><a
href="f34184e658"><code>f34184e</code></a>
[camera] Deprecate <code>maxDuration</code> in platform interface (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7078">#7078</a>)</li>
<li><a
href="edb38e0eb4"><code>edb38e0</code></a>
[google_maps_flutter] Semi-convert remaining iOS host API calls to
Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7">#7</a>...</li>
<li><a
href="47a92dbdea"><code>47a92db</code></a>
[path_provider] Remove <code>win32</code> (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7073">#7073</a>)</li>
<li><a
href="9627de9141"><code>9627de9</code></a>
[google_maps_flutter] Move iOS inspector to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6937">#6937</a>)</li>
<li><a
href="cbfffa6502"><code>cbfffa6</code></a>
[camera]: Bump com.android.tools.build:gradle from 7.3.0 to 8.5.0 in
/package...</li>
<li>Additional commits viewable in <a
href="https://github.com/flutter/packages/commits/espresso-v0.4.0/packages">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=espresso&package-manager=pub&previous-version=0.3.0+10&new-version=0.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [espresso](https://github.com/flutter/packages/tree/main/packages)
from 0.3.0+10 to 0.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="007ec6676f"><code>007ec66</code></a>
Update espresso dependencies (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7048">#7048</a>)</li>
<li><a
href="01527175e3"><code>0152717</code></a>
[camera] Fix iOS torch mode regression (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7085">#7085</a>)</li>
<li><a
href="4063b20243"><code>4063b20</code></a>
[google_maps_flutter] Convert Obj-C->Dart calls to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7086">#7086</a>)</li>
<li><a
href="8e6ac90614"><code>8e6ac90</code></a>
[camera_avfoundation] fix sample times not being numeric after
pause/resume. ...</li>
<li><a
href="5cc641822e"><code>5cc6418</code></a>
[camera] Convert Windows to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6925">#6925</a>)</li>
<li><a
href="f34184e658"><code>f34184e</code></a>
[camera] Deprecate <code>maxDuration</code> in platform interface (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7078">#7078</a>)</li>
<li><a
href="edb38e0eb4"><code>edb38e0</code></a>
[google_maps_flutter] Semi-convert remaining iOS host API calls to
Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7">#7</a>...</li>
<li><a
href="47a92dbdea"><code>47a92db</code></a>
[path_provider] Remove <code>win32</code> (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/7073">#7073</a>)</li>
<li><a
href="9627de9141"><code>9627de9</code></a>
[google_maps_flutter] Move iOS inspector to Pigeon (<a
href="https://github.com/flutter/packages/tree/main/packages/issues/6937">#6937</a>)</li>
<li><a
href="cbfffa6502"><code>cbfffa6</code></a>
[camera]: Bump com.android.tools.build:gradle from 7.3.0 to 8.5.0 in
/package...</li>
<li>Additional commits viewable in <a
href="https://github.com/flutter/packages/commits/espresso-v0.4.0/packages">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=espresso&package-manager=pub&previous-version=0.3.0+10&new-version=0.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [jni](https://github.com/dart-lang/native/tree/main/pkgs) from
0.9.3 to 0.10.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/dart-lang/native/commits/HEAD/pkgs">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jni&package-manager=pub&previous-version=0.9.3&new-version=0.10.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brett Morgan <brett.morgan@gmail.com>
As part of the work for the compass-app / architecture examples
This PR is considerably large, so apologies for that, but as it contains
the first feature there is a lot of set up work involved.
Could be easier to review by opening the project on the IDE.
**Merge to `compass-app` not `main`**
cc. @ericwindmill
### Details
#### Folder structure
The project follows this folder structure:
- `lib/config/`: Put here any configuration files.
- `lib/config/dependencies.dart`: Configures the dependency tree (i.e.
Provider)
- `lib/data/models/`: Data classes
- `lib/data/repositories/`: Data repositories
- `lib/data/services/`: Data services (e.g. network API client)
- `lib/routing`: Everything related to navigation (could be moved to
`common`)
- `lib/ui/core/themes`: several theming classes are here: colors, text
styles and the app theme.
- `lib/ui/core/ui`: widget components to use across the app
- `lib/ui/<feature>/view_models`: ViewModels for the feature.
- `lib/ui/<feature>/widgets`: Widgets for the feature.
Unit tests also follow the same structure.
#### State Management
Most importantly, the project uses MVVM approach using `ChangeNotifier`
with the help of Provider.
This could be implemented without Provider or using any other way to
inject the VM into the UI classes.
#### Architecture approach
- Data follows a unidirectional flow from Repository -> Usecase ->
ViewModel -> Widgets -> User.
- The provided data Repository is using local data from the `assets`
folder, an abstract class is provided to hide this implementation detail
to the Usecase, and also to allow multiple implementations in the
future.
### Screenshots
![image](https://github.com/flutter/samples/assets/2494376/64c08c73-1f2c-4edd-82f6-3c9065f5995f)
### Extra notes:
- Moved the app code to the `app` folder. We need to create a `server`
project eventually.
### TODO:
- Integrate a logging framework instead of using `print()`.
- Do proper error handling.
- Improve image loading and caching.
- Complete tests with edge-cases and errors.
- Better Desktop UI.
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-devrel
channel on [Discord].
<!-- Links -->
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[CLA]: https://cla.developers.google.com/
[Discord]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
[Contributors Guide]:
https://github.com/flutter/samples/blob/main/CONTRIBUTING.md
Adds the configuration needed to open a subdirectory as a template in
IDX. Configuration is added to two samples that use Gemini -- Dynamic
theme and Gemini tasks
Fixes#2336 2336
## Pre-launch Checklist
- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [x] All existing and new tests are passing.
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.25.9 to 3.25.10.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<p>Note that the only difference between <code>v2</code> and
<code>v3</code> of the CodeQL Action is the node version they support,
with <code>v3</code> running on node 20 while we continue to release
<code>v2</code> to support running on node 16. For example
<code>3.22.11</code> was the first <code>v3</code> release and is
functionally identical to <code>2.22.11</code>. This approach ensures an
easy way to track exactly which features are included in different
versions, indicated by the minor and patch version numbers.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.25.10 - 13 Jun 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2327">#2327</a></li>
</ul>
<h2>3.25.9 - 12 Jun 2024</h2>
<ul>
<li>Avoid failing database creation if the database folder already
exists and contains some unexpected files. Requires CodeQL 2.18.0 or
higher. <a
href="https://redirect.github.com/github/codeql-action/pull/2330">#2330</a></li>
<li>The init Action will attempt to clean up the database cluster
directory before creating a new database and at the end of the job. This
will help to avoid issues where the database cluster directory is left
in an inconsistent state. <a
href="https://redirect.github.com/github/codeql-action/pull/2332">#2332</a></li>
</ul>
<h2>3.25.8 - 04 Jun 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2321">#2321</a></li>
</ul>
<h2>3.25.7 - 31 May 2024</h2>
<ul>
<li>We are rolling out a feature in May/June 2024 that will reduce the
Actions cache usage of the Action by keeping only the newest TRAP cache
for each language. <a
href="https://redirect.github.com/github/codeql-action/pull/2306">#2306</a></li>
</ul>
<h2>3.25.6 - 20 May 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2295">#2295</a></li>
</ul>
<h2>3.25.5 - 13 May 2024</h2>
<ul>
<li>Add a compatibility matrix of supported CodeQL Action, CodeQL CLI,
and GitHub Enterprise Server versions to the <a
href="https://github.com/github/codeql-action/blob/main/README.md">https://github.com/github/codeql-action/blob/main/README.md</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/2273">#2273</a></li>
<li>Avoid printing out a warning for a missing <code>on.push</code>
trigger when the CodeQL Action is triggered via a
<code>workflow_call</code> event. <a
href="https://redirect.github.com/github/codeql-action/pull/2274">#2274</a></li>
<li>The <code>tools: latest</code> input to the <code>init</code> Action
has been renamed to <code>tools: linked</code>. This option specifies
that the Action should use the tools shipped at the same time as the
Action. The old name will continue to work for backwards compatibility,
but we recommend that new workflows use the new name. <a
href="https://redirect.github.com/github/codeql-action/pull/2281">#2281</a></li>
</ul>
<h2>3.25.4 - 08 May 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2270">#2270</a></li>
</ul>
<h2>3.25.3 - 25 Apr 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2247">#2247</a></li>
<li>Workflows running on <code>macos-latest</code> using CodeQL CLI
versions before v2.15.1 will need to either upgrade their CLI version to
v2.15.1 or newer, or change the platform to an Intel MacOS runner, such
as <code>macos-12</code>. ARM machines with SIP disabled, including the
newest <code>macos-latest</code> image, are unsupported for CLI versions
before 2.15.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2261">#2261</a></li>
</ul>
<h2>3.25.2 - 22 Apr 2024</h2>
<p>No user facing changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="23acc5c183"><code>23acc5c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2337">#2337</a>
from github/update-v3.25.10-5bf6dad35</li>
<li><a
href="9b72dbdc68"><code>9b72dbd</code></a>
Update changelog for v3.25.10</li>
<li><a
href="5bf6dad35b"><code>5bf6dad</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2329">#2329</a>
from github/henrymercer/csharp-buildless-rollback-me...</li>
<li><a
href="feec81c66b"><code>feec81c</code></a>
Merge branch 'main' into
henrymercer/csharp-buildless-rollback-mechanism</li>
<li><a
href="789b5f86ef"><code>789b5f8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2328">#2328</a>
from github/henrymercer/direct-tracing-fix</li>
<li><a
href="c36b5fc54f"><code>c36b5fc</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2327">#2327</a>
from github/update-bundle/codeql-bundle-v2.17.5</li>
<li><a
href="b3642aa04d"><code>b3642aa</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.17.5</li>
<li><a
href="1fc6e20182"><code>1fc6e20</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2335">#2335</a>
from github/mergeback/v3.25.9-to-main-530d4fea</li>
<li><a
href="356bee4b4a"><code>356bee4</code></a>
Update checked-in dependencies</li>
<li><a
href="385808c715"><code>385808c</code></a>
Update changelog and version after v3.25.9</li>
<li>Additional commits viewable in <a
href="530d4feaa9...23acc5c183">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.25.9&new-version=3.25.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.25.8 to 3.25.9.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<p>Note that the only difference between <code>v2</code> and
<code>v3</code> of the CodeQL Action is the node version they support,
with <code>v3</code> running on node 20 while we continue to release
<code>v2</code> to support running on node 16. For example
<code>3.22.11</code> was the first <code>v3</code> release and is
functionally identical to <code>2.22.11</code>. This approach ensures an
easy way to track exactly which features are included in different
versions, indicated by the minor and patch version numbers.</p>
<h2>[UNRELEASED]</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2327">#2327</a></li>
</ul>
<h2>3.25.9 - 12 Jun 2024</h2>
<ul>
<li>Avoid failing database creation if the database folder already
exists and contains some unexpected files. Requires CodeQL 2.18.0 or
higher. <a
href="https://redirect.github.com/github/codeql-action/pull/2330">#2330</a></li>
<li>The init Action will attempt to clean up the database cluster
directory before creating a new database and at the end of the job. This
will help to avoid issues where the database cluster directory is left
in an inconsistent state. <a
href="https://redirect.github.com/github/codeql-action/pull/2332">#2332</a></li>
</ul>
<h2>3.25.8 - 04 Jun 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2321">#2321</a></li>
</ul>
<h2>3.25.7 - 31 May 2024</h2>
<ul>
<li>We are rolling out a feature in May/June 2024 that will reduce the
Actions cache usage of the Action by keeping only the newest TRAP cache
for each language. <a
href="https://redirect.github.com/github/codeql-action/pull/2306">#2306</a></li>
</ul>
<h2>3.25.6 - 20 May 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2295">#2295</a></li>
</ul>
<h2>3.25.5 - 13 May 2024</h2>
<ul>
<li>Add a compatibility matrix of supported CodeQL Action, CodeQL CLI,
and GitHub Enterprise Server versions to the <a
href="https://github.com/github/codeql-action/blob/main/README.md">https://github.com/github/codeql-action/blob/main/README.md</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/2273">#2273</a></li>
<li>Avoid printing out a warning for a missing <code>on.push</code>
trigger when the CodeQL Action is triggered via a
<code>workflow_call</code> event. <a
href="https://redirect.github.com/github/codeql-action/pull/2274">#2274</a></li>
<li>The <code>tools: latest</code> input to the <code>init</code> Action
has been renamed to <code>tools: linked</code>. This option specifies
that the Action should use the tools shipped at the same time as the
Action. The old name will continue to work for backwards compatibility,
but we recommend that new workflows use the new name. <a
href="https://redirect.github.com/github/codeql-action/pull/2281">#2281</a></li>
</ul>
<h2>3.25.4 - 08 May 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2270">#2270</a></li>
</ul>
<h2>3.25.3 - 25 Apr 2024</h2>
<ul>
<li>Update default CodeQL bundle version to 2.17.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2247">#2247</a></li>
<li>Workflows running on <code>macos-latest</code> using CodeQL CLI
versions before v2.15.1 will need to either upgrade their CLI version to
v2.15.1 or newer, or change the platform to an Intel MacOS runner, such
as <code>macos-12</code>. ARM machines with SIP disabled, including the
newest <code>macos-latest</code> image, are unsupported for CLI versions
before 2.15.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2261">#2261</a></li>
</ul>
<h2>3.25.2 - 22 Apr 2024</h2>
<p>No user facing changes.</p>
<h2>3.25.1 - 17 Apr 2024</h2>
<ul>
<li>We are rolling out a feature in April/May 2024 that improves the
reliability and performance of analyzing code when analyzing a compiled
language with the <code>autobuild</code> <a
href="https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes">build
mode</a>. <a
href="https://redirect.github.com/github/codeql-action/pull/2235">#2235</a></li>
<li>Fix a bug where the <code>init</code> Action would fail if
<code>--overwrite</code> was specified in
<code>CODEQL_ACTION_EXTRA_OPTIONS</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/2245">#2245</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="530d4feaa9"><code>530d4fe</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2334">#2334</a>
from github/update-v3.25.9-37809d1f1</li>
<li><a
href="65db484585"><code>65db484</code></a>
Update changelog for v3.25.9</li>
<li><a
href="37809d1f16"><code>37809d1</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2332">#2332</a>
from github/henrymercer/cleanup-db-location</li>
<li><a
href="159d9119ac"><code>159d911</code></a>
Tweak changelog entries</li>
<li><a
href="ed34eb9af4"><code>ed34eb9</code></a>
Skip init-post cleanup on GitHub-hosted runners</li>
<li><a
href="31fe7dd0a6"><code>31fe7dd</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2326">#2326</a>
from github/dependabot/npm_and_yarn/npm-8402b9d28a</li>
<li><a
href="d8d73c0e76"><code>d8d73c0</code></a>
Clean up DB cluster directory at the end of each job</li>
<li><a
href="3d849e9df2"><code>3d849e9</code></a>
Include underlying error in error message</li>
<li><a
href="945bb878ef"><code>945bb87</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2331">#2331</a>
from github/igfoo/bash</li>
<li><a
href="9ee83fa7ef"><code>9ee83fa</code></a>
Update checked-in dependencies</li>
<li>Additional commits viewable in <a
href="2e230e8fe0...530d4feaa9">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.25.8&new-version=3.25.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>