Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MAUI: first steps #274

Closed
wants to merge 25 commits into from
Closed

MAUI: first steps #274

wants to merge 25 commits into from

Conversation

webwarrior-ws
Copy link
Contributor

Supersedes #241

@webwarrior-ws
Copy link
Contributor Author

Added "Upload APK as CI artifact" step

scripts/make.fsx Outdated Show resolved Hide resolved
scripts/make.fsx Outdated Show resolved Hide resolved
@@ -409,7 +435,7 @@ type SendPage(account: IAccount, receivePage: Page, newReceivePageFunc: unit->Pa
try
Account.ImportTransactionFromJson transactionEntryText |> Some
with
| :? DeserializationException as _dex ->
| ex when (ex :? Newtonsoft.Json.JsonReaderException || ex :? DeserializationException) ->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@webwarrior-ws how is this related to XF/Maui?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we encountered a bug when testing and had to fix it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so? same conversation as in the other hunk?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could not reproduce the bug during normal operation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then investigate the previous PR, look at commit msgs, etc; if still cannot, remove this hunk

@knocte
Copy link
Member

knocte commented Apr 22, 2024

In PR241, the 1st commit passes CI (it's green), but not here. I think when you pushed on Thursday EOD, it was also green here, but something you must have changed today to not be green anymore.

@knocte
Copy link
Member

knocte commented Apr 23, 2024

UI nits I found:

Screenshot 2024-04-23 at 4 01 40 PM
  • Please add some separation between the button "More info" and the button "Ok"
  • Please add some separation between the DOB label and the DOB picker.

@knocte
Copy link
Member

knocte commented Apr 23, 2024

I tried debugging the Android MAUI app in VS4Mac today and it seems to hang after submitting the payment password (it never goes to next page: loadingPage). Have you tested the Android MAUI app?

@webwarrior-ws
Copy link
Contributor Author

Yes. Android MAUI app was fine for me. I can clear data and launch the app to see if it hangs after submitting payment password.

@webwarrior-ws
Copy link
Contributor Author

As for UI: I think style should be modified to fix things like no margins around buttons and input fields not distinguishable from background.

@knocte
Copy link
Member

knocte commented Apr 23, 2024

Yes. Android MAUI app was fine for me. I can clear data and launch the app to see if it hangs after submitting payment password.

Nevermind, it worked for me in the end; it was not hanging, just extremely slow. We'll look into this later.

Another thing I've noticed wrt UI that needs to be fixed (is not a nit):

Screenshot 2024-04-23 at 4 14 52 PM

See? ReceivePage doesn't have a "back" button.

@knocte
Copy link
Member

knocte commented Apr 23, 2024

I think style should be modified to fix things like no margins around buttons and input fields not distinguishable from background.

What do you mean?

@knocte
Copy link
Member

knocte commented May 13, 2024

These two commits should obviously be squashed too:

  • Fixup: commit to be squashed (cosmetic stuff)
  • Forntend(XF,Maui): addressed comments

parhamsaremi and others added 25 commits May 14, 2024 11:16
Used the template in [1] for Maui.

Install JDK 11 to fix error "Java SDK 11.0 or above is required
when using .NET 6 or higher" when building MAUI Android
frontend [2].

Disable checking of out-of-support workloads in
Frontend.Maui.fsproj so that project can be built because it
still uses .NET6 workloads.

[1] https://github.com/fabulous-dev/FSharp.Mobile.Templates/tree/stable-net6.0/templates/Maui
[2] https://stackoverflow.com/a/77519085/544947
This way we don't have to implement everything from the
beginning, and we can reuse old codes.

Remove "Install JDK 21" step as it's no longer needed.
Workaround for `"RuntimeConfigParserTask" task was not found`
error when building and deploying Android frontend using
Visual Studio 2022.
We use our own fork of maui for building maui-gtk since we
fixed some things.

Maui: added as submodule. Gtk workload: as automatic workload
manifest detection doesn't work for some reason, download and
uzip mainfest file so .NET knows about gtk workload.

Because of new versions of manifest, we got the following
error. So by skipping manifest update we make sure that
we don't get unwanted updates.
```
Workload installation failed: Failed to install manifest gtksharp.net.sdk.gtk version 3.24.24-rev.87-develop: gtksharp.net.sdk.gtk.manifest-6.0.300::3.24.24-rev.87-develop is not found in NuGet feeds https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-runtime-531f715f/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-3f6c45a2/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-3f6c45a2-1/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json;https://pkgs.dev.azure.com/xamarin/public/_packaging/SkiaSharp/nuget/v3/index.json;https://nuget.pkg.github.com/GtkSharp/index.json"..
```

Co-authored-by: webwarrior <reg@webwarrior.ws>
Build Maui Android frontend in macOS--dotnet6-and-mono CI lane.
Initial window size was too thin so we tried to resize
the window once it's created.

Also extracted default window size to a constant in
FrontendHelpers to prevent code duplication.

Co-authored-by: webwarrior <reg@webwarrior.ws>
Add WelcomePage2 .xaml and .xaml.fs files. Enable navigation
to WelcomePage2 in MAUI version of WelcomePage. Fix navigation
by referencing Initialization.fs from Frontend.XF and using
it to set main page like it is done in Frontend.XF project.
Use Grid instead of StackLayout so that Maui layout is fixed.

Co-authored-by: Parham <parhaamsaremi@gmail.com>
Change launchSettings.json so debugging is possible in Linux
using JetBrains Rider.
Added LoadingPage.

Abstracted StartTimer function to work on both Xamarin.Forms
and Maui (Device.StartTimer is deprecated in Maui).

Add mappers for BorderColor and CornerRadius for Frame
elements so they can now have borders.

Use Grid instead of StackLayout so that Maui layout is fixed.

Co-authored-by: Parham <parhaamsaremi@gmail.com>
Add BalancesPage.

Fixed and simplified layout of BalancesPage.

Fix layout of currency balances on balances page in Maui.

Fix circle chart rendering in Maui.

Use Launcher from Maui.Essentials on Maui instead of one from
Xamarin.Essentials.

Made click event handlers work for Gtk. Had to wrap footer label
in a Frame for this.

LogoImg had wrong size and it had to be resized based on the
layout size. The reason is that Aspect for Image is not working
in Maui/Gtk and should be fixed later.

Also added #nowarn 44 and #nowarn 1182 in BalancesPage,
CircleChartView, and FrontendHelpers because of the following
warnings:

```
BalancesPage.xaml.fs(503, 13): [FS1182] The value 'tapper' is unused
BalancesPage.xaml.fs(443, 13): [FS1182] The value 'currentChartView' is unused
BalancesPage.xaml.fs(443, 30): [FS1182] The value 'otherChartView' is unused
BalancesPage.xaml.fs(439, 41): [FS1182] The value 'totalOtherFiatAmountFrame' is unused
BalancesPage.xaml.fs(437, 13): [FS1182] The value 'switchingToReadOnly' is unused
CircleChartView.fs(181, 35): [FS0044] This construct is deprecated. The StackLayout expansion options are deprecated; please use a Grid instead.
BalancesPage.xaml.fs(53, 19): [FS1182] The value 'currencyImages' is unused
CircleChartView.fs(180, 37): [FS0044] This construct is deprecated. The StackLayout expansion options are deprecated; please use a Grid instead.
FrontendHelpers.fs(425, 60): [FS0044] This construct is deprecated. The StackLayout expansion options are deprecated; please use a Grid instead.
```

Co-authored-by: Parham <parhaamsaremi@gmail.com>
Add ZXing.Net.Maui library for barcode gerneration/reading.
It is successor to ZXing.Net.Mobile, which is used in XF
project.

Use CrossMaui version of ZXing.Net.Maui libraryon Gtk.
Reference projects directly instead of using nuget packages.
Added PairingToPage, PairingFromPage, Send, Receive pages.

Made PairingFrom page work on Maui by moving configuration
of barcode view from .xaml file to code. Use Grid instead
of StackLayout so that Maui layout is fixed. Upgrade SendPage
layout so that Maui and Xamarin look like each other.

Abstracted creation of barcode scanner page to
FrontendHelpers.GetBarcodeScannerPage function. Moved platform
checking logic to one place (canScanBarcode variable).
This removes code duplication between XF and Maui.

If QR code is invalid, show alert to the user instead of
crashing the app.

Fix crash after scanning barcode by checking if modal stack
is not empty before calling PopModalAsync().

Co-authored-by: Parham <parhaamsaremi@gmail.com>
Save previous assigned color and use instead of Color.Default.
This is needed because maui doesn't have Color.Default [1]. And
this commit is workaround for that.

[1] dotnet/Microsoft.Maui.Graphics#57
Use nuget source instead of Github packages so that there is
no need for authentication anymore.

Update maui submodule to point to CrossMaui/new branch.
Added stepsto upload generated APK file as CI artifact.
The new MAUI project was not included in the solution so you
could not build it in VS4Mac. After trying it, it was giving
a clang compiler error, that we avoid with a workaorund in
the project file.
Currently crashes the app if using back arrow.
Build MAUI snap (snap_alpha job) in addition to XF snaps.

Temporarily remove CI snap_aplha job dependencies.

Make MAUI/Gtk app process console args, and if it's
"--version", print version and exit without launching UI.

Ignore Frontend.Maui in FindOffendingPrintfUsage function as
it's not relevant for new .NET versions used by MAUI.

Change app name on Gtk so that name can be used in dbus
slots declaration in snap.

Use snapcraft 7.x for MAUI and continue using snapcraft 6.x
for XF.
Switch to .NET8 to fix bug in Android when using back button
in navigation bar crashes the app. Continue using .NET6 for
GTK.
To include latest changes regarding Gtk application id. Use
default MauiGtkApplication.Name derived from executable name.
Upload alpha (MAUI) snap package to snap store.
Show navigation toolbar only after page is loaded in MAUI.
Otherwise, navigation toolbar would show up briefly on old page
(BalancesPage in our case) before switching to new page.
To latest version that uses NonUnique flag for Gtk.Application.
This removes need for DBus communication, so removed DBus slot
from snapcraft.yaml.
@knocte knocte mentioned this pull request May 23, 2024
@webwarrior-ws webwarrior-ws closed this by deleting the head repository May 23, 2024
@webwarrior-ws webwarrior-ws mentioned this pull request May 23, 2024
@knocte
Copy link
Member

knocte commented May 23, 2024

Superseded by #279

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants