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 #299

Open
wants to merge 40 commits into
base: master
Choose a base branch
from

Commits on Nov 26, 2024

  1. Add Maui base project

    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
    parhamsaremi authored and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    6ea2bfe View commit details
    Browse the repository at this point in the history
  2. Frontend.Maui: use XF XAML files for building proj

    This way we don't have to implement everything from the
    beginning, and we can reuse existing code.
    
    Remove "Install JDK 21" step as it's no longer needed.
    parhamsaremi authored and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    e071064 View commit details
    Browse the repository at this point in the history
  3. Frontend.Maui: workaround for build fail in VS22

    Workaround for `"RuntimeConfigParserTask" task was not found`
    error when building and deploying Android frontend using
    Visual Studio 2022.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    d514bbc View commit details
    Browse the repository at this point in the history
  4. Frontend.Maui: build Maui on linux using GTK

    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>
    parhamsaremi and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    8e7b2e7 View commit details
    Browse the repository at this point in the history
  5. CI: build Maui (non-GTK) frontend

    Build Maui Android frontend in macOS--dotnet6-and-mono CI lane.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    2939e3e View commit details
    Browse the repository at this point in the history
  6. Frontend.Maui: fix window size for gtk

    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>
    parhamsaremi and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    4de680f View commit details
    Browse the repository at this point in the history
  7. Frontend.MAUI: add WelcomePage2

    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>
    webwarrior-ws and parhamsaremi committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    ee52044 View commit details
    Browse the repository at this point in the history
  8. Frontend.Maui: make Linux debugging possible

    Change launchSettings.json so debugging is possible in Linux
    using JetBrains Rider.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    caa6b3f View commit details
    Browse the repository at this point in the history
  9. Frontend.Maui: add LoadingPage

    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>
    webwarrior-ws and parhamsaremi committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    9b3bf81 View commit details
    Browse the repository at this point in the history
  10. Frontend.Maui: add BalancesPage

    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 (see [1]).
    
    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>
    
    [1] jsuarezruiz/maui-linux#69
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    5fd07d8 View commit details
    Browse the repository at this point in the history
  11. Frontend.Maui: add ZXing.Net.Maui library

    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.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    bde855b View commit details
    Browse the repository at this point in the history
  12. Frontend(XF,Maui): added remaining pages

    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>
    webwarrior-ws and parhamsaremi committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    ef81dce View commit details
    Browse the repository at this point in the history
  13. Frontend.Maui: Color.Default equivalent for Maui

    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
    parhamsaremi authored and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    a5a4fc1 View commit details
    Browse the repository at this point in the history
  14. GithubCI: use nuget source instead of Github

    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.
    parhamsaremi authored and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    c4d5386 View commit details
    Browse the repository at this point in the history
  15. CI: upoad APK as CI artifact

    Added stepsto upload generated APK file as CI artifact.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    7505a86 View commit details
    Browse the repository at this point in the history
  16. sln,Frontend.Maui: allow proj be built in VS4Mac

    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.
    knocte authored and webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    e84d674 View commit details
    Browse the repository at this point in the history
  17. Frontend.Maui: show navigation bar on Android

    Currently crashes the app if using back arrow.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    3f64345 View commit details
    Browse the repository at this point in the history
  18. CI,scripts,Frontend.Maui: build MAUI snap

    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.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    f6c7cbc View commit details
    Browse the repository at this point in the history
  19. snap: use dotnet runtime from packages

    As a workaround to issue 14 of [1].
    
    [1] https://github.com/canonical/dotnet-snap/
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    fb5269d View commit details
    Browse the repository at this point in the history
  20. snap: use dotnet-runtime-7.0 in MAUI snap

    Since dotnet-runtime-6.0 causes the following error when
    running snap:
    ```
    Error: [/snap/gee-maui-preview/x1/usr/share/dotnet/host/fxr] does not exist
    ```
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    5a45af6 View commit details
    Browse the repository at this point in the history
  21. Frontend.Maui: switch to .NET8 for Android

    Switch to .NET8 to fix bug in Android when using back button
    in navigation bar crashes the app. Continue using .NET6 for
    GTK.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    e80c3cd View commit details
    Browse the repository at this point in the history
  22. Frontend.Maui: update Maui submodule

    To include latest changes regarding Gtk application id. Use
    default MauiGtkApplication.Name derived from executable name.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    f34efb5 View commit details
    Browse the repository at this point in the history
  23. Frontend.Maui: show nav toolbar after page load

    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.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    ad5961a View commit details
    Browse the repository at this point in the history
  24. Frontend.Maui: update Maui submodule

    To latest version that uses NonUnique flag for Gtk.Application.
    This removes need for DBus communication, so removed DBus slot
    from snapcraft.yaml.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    d075a18 View commit details
    Browse the repository at this point in the history
  25. Frontend.Maui: show navigation bar on SendPage

    Just like it is on Xamarin.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    82d747b View commit details
    Browse the repository at this point in the history
  26. Frontend.Maui: change from CrossMaui to Mali

    Change Maui submodule to track Mali repository since this is
    what CrossMaui was renamed to.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    f979c84 View commit details
    Browse the repository at this point in the history
  27. Frontend.Maui: fix title on Gtk

    Fix window title on Gtk platform.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    ffbafcf View commit details
    Browse the repository at this point in the history
  28. Frontend.Maui: show nav bar page after sending tx

    Show navigation bar on ReceivePage after navigating to it as
    a result of sending transaction.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    a4bc73c View commit details
    Browse the repository at this point in the history
  29. Frontend.Maui: fix button padding on Gtk

    Set padding for buttons on Gtk to be consistent with other
    platforms as they have padding around buttons by default.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    e6986db View commit details
    Browse the repository at this point in the history
  30. scripts,CI: determine & build frontend in scripts

    Determine frontend to be built in configure script and build it
    in make script.
    
    Have 2 variants of global.json (one for MAUI/Gtk with .NET6
    and one for other MAUI platfoprms with .NET8) and choose
    appropriate one in configure script.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    2171300 View commit details
    Browse the repository at this point in the history
  31. Frontend.Maui: fix spacing after "Amount" label

    Fix spacing after "Amount" label in SendPage on Gtk platform
    so that it is the same as on other platforms.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    4d04256 View commit details
    Browse the repository at this point in the history
  32. CI,scripts: refactoring of Maui/Gtk builds

    Extracted installation of gtk workload and adding Maui nuget
    source to separate script to remove code duplication.
    
    Renamed DotNetVersion to DotNetVersionForMauiGtk and made it
    and GtkSharpVersion workflow-level env vars in CI.yml.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    1860173 View commit details
    Browse the repository at this point in the history
  33. Frontend.Maui: use fix in Mali for WelcomePage

    Fix WelcomePage layout on MAUI/Gtk by using Mali commit that
    has better approximation for Label desired size on Gtk.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    0e61f11 View commit details
    Browse the repository at this point in the history
  34. CI,scripts,snap,Frontend.Maui: use .NET 8

    Switch to using .NET 8 for all frontends. Use Maui 8 on Gtk.
    This unifies .NET versions and gets rid of .NET 6, which is
    nearing end of suport anyway.
    
    Update Microsoft.Extensions.DependencyInjection to v 8.0.0.
    This iss needed to avoid error:
    ```
    error NU1605: Warning As Error: Detected package downgrade:
    Microsoft.Extensions.DependencyInjection from 8.0.0 to 6.0.0. Reference
    the package directly from the project to select a different version.
    ```
    
    Install maui workloads on windows--dotnet8-* lanes so that
    Maui/Android can be built.
    
    Call fsxc with DOTNET_ROLL_FORWARD=Major to allow it to run
    under newer .NET version (we use .NET8 now, and fsxc is
    compiled for .NET6).
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    ae1f179 View commit details
    Browse the repository at this point in the history
  35. Frontend.Maui: fix some layout issues on Maui/Gtk

    Fix layout regressions in BalancesPage on Maui/Gtk after
    upgrading to Maui 8.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    22d9d23 View commit details
    Browse the repository at this point in the history
  36. Forntend.Maui: workaround for button width on Gtk

    Implemented workaround for incorrect width of some buttons on
    Gtk (which were stretched to window width) by introducing
    3 columns to grids in ReceivePage and SendPage. Buttons are
    placed in central column, while other grid children span all
    3 columns.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    dea5d4b View commit details
    Browse the repository at this point in the history
  37. Frontend(XF,Maui): fix in WelcomePage (datepicker)

    Fixed layout of date picker in WelcomePage on Maui/Gtk. It was
    way too tall, now it has height of about one line of text, like
    on other platforms.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    d5950d3 View commit details
    Browse the repository at this point in the history
  38. CI,scripts: upload MAUI snap to snap store

    Upload alpha (MAUI) snap package to snap store.
    webwarrior-ws committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    182695e View commit details
    Browse the repository at this point in the history

Commits on Nov 28, 2024

  1. Frontend.Maui: use Mali packages

    Reference Mali nuget packages instead of projects in maui
    submodule.
    webwarrior-ws committed Nov 28, 2024
    Configuration menu
    Copy the full SHA
    4c705d8 View commit details
    Browse the repository at this point in the history
  2. Frontend.Maui: use ZXing nuget packages on GTK

    Use ZXing nuget packages on GTK platform as well as on other
    platforms. Update to version 0.4.0 because old version does
    not support .NET 8.
    webwarrior-ws committed Nov 28, 2024
    Configuration menu
    Copy the full SHA
    9d6e822 View commit details
    Browse the repository at this point in the history