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

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

Commits on Jun 27, 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 Jun 27, 2024
    Configuration menu
    Copy the full SHA
    a37df96 View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2024

  1. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    8f9c5be View commit details
    Browse the repository at this point in the history
  2. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    bf7b23c View commit details
    Browse the repository at this point in the history
  3. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    89b2fe0 View commit details
    Browse the repository at this point in the history
  4. CI: build Maui (non-GTK) frontend

    Build Maui Android frontend in macOS--dotnet6-and-mono CI lane.
    webwarrior-ws committed Jul 1, 2024
    Configuration menu
    Copy the full SHA
    7904186 View commit details
    Browse the repository at this point in the history
  5. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    478fba5 View commit details
    Browse the repository at this point in the history
  6. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    ab5e5bf View commit details
    Browse the repository at this point in the history
  7. Frontend.Maui: make Linux debugging possible

    Change launchSettings.json so debugging is possible in Linux
    using JetBrains Rider.
    webwarrior-ws committed Jul 1, 2024
    Configuration menu
    Copy the full SHA
    4c2ed64 View commit details
    Browse the repository at this point in the history
  8. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    5b99c92 View commit details
    Browse the repository at this point in the history
  9. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    e9d7645 View commit details
    Browse the repository at this point in the history
  10. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    95816b4 View commit details
    Browse the repository at this point in the history
  11. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    b50759f View commit details
    Browse the repository at this point in the history
  12. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    33f6432 View commit details
    Browse the repository at this point in the history
  13. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    18e1f3c View commit details
    Browse the repository at this point in the history
  14. CI: upoad APK as CI artifact

    Added stepsto upload generated APK file as CI artifact.
    webwarrior-ws committed Jul 1, 2024
    Configuration menu
    Copy the full SHA
    863c09d View commit details
    Browse the repository at this point in the history
  15. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    1cddef1 View commit details
    Browse the repository at this point in the history
  16. Frontend.Maui: show navigation bar on Android

    Currently crashes the app if using back arrow.
    webwarrior-ws committed Jul 1, 2024
    Configuration menu
    Copy the full SHA
    20f47f4 View commit details
    Browse the repository at this point in the history
  17. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    55ab531 View commit details
    Browse the repository at this point in the history
  18. snap: use dotnet runtime from packages

    As a workaround to issue 14 of [1].
    
    [1] https://github.com/canonical/dotnet-snap/
    webwarrior-ws committed Jul 1, 2024
    Configuration menu
    Copy the full SHA
    9738880 View commit details
    Browse the repository at this point in the history
  19. 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 Jul 1, 2024
    Configuration menu
    Copy the full SHA
    7096103 View commit details
    Browse the repository at this point in the history

Commits on Jul 2, 2024

  1. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    0b14ef9 View commit details
    Browse the repository at this point in the history
  2. Frontend.Maui: update Maui submodule

    To include latest changes regarding Gtk application id. Use
    default MauiGtkApplication.Name derived from executable name.
    webwarrior-ws committed Jul 2, 2024
    Configuration menu
    Copy the full SHA
    7442172 View commit details
    Browse the repository at this point in the history
  3. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    ae5c492 View commit details
    Browse the repository at this point in the history
  4. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    a07d797 View commit details
    Browse the repository at this point in the history
  5. Frontend.Maui: show navigation bar on SendPage

    Just like it is on Xamarin.
    webwarrior-ws committed Jul 2, 2024
    Configuration menu
    Copy the full SHA
    a33af41 View commit details
    Browse the repository at this point in the history
  6. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    9673f3b View commit details
    Browse the repository at this point in the history
  7. Frontend.Maui: fix title on Gtk

    Fix window title on Gtk platform.
    webwarrior-ws committed Jul 2, 2024
    Configuration menu
    Copy the full SHA
    1acfb27 View commit details
    Browse the repository at this point in the history
  8. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    111ba85 View commit details
    Browse the repository at this point in the history
  9. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    2552e3c View commit details
    Browse the repository at this point in the history
  10. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    26171f9 View commit details
    Browse the repository at this point in the history
  11. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    e97aea3 View commit details
    Browse the repository at this point in the history
  12. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    63d0870 View commit details
    Browse the repository at this point in the history
  13. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    197942f View commit details
    Browse the repository at this point in the history
  14. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    de6fa0e View commit details
    Browse the repository at this point in the history
  15. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    260a58c View commit details
    Browse the repository at this point in the history
  16. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    701d8f2 View commit details
    Browse the repository at this point in the history
  17. 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 Jul 2, 2024
    Configuration menu
    Copy the full SHA
    bec7e9c View commit details
    Browse the repository at this point in the history
  18. CI,scripts: upload MAUI snap to snap store

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