unoplatform/uno.extensions

Extensions is a series of NuGet packages designed to encapsulate common developer tasks associated with...

Extensions is a series of NuGet packages designed to encapsulate common developer tasks associated with building multi-platform mobile, desktop and web applications using the Uno...

Extensions is a series of NuGet packages designed to encapsulate common developer tasks associated with...

# Uno.Extensions

Uno.Extensions is a series of NuGet packages designed to encapsulate common developer tasks associated with building multi-platform mobile, desktop and web applications using the Uno platform.

Getting Started

See the complete documentation for getting started with Uno.Extensions.

Documentation

All the documentation for getting you started with Uno Platform can be found on our website.

License

This project is licensed under the Apache 2.0 license - see the LICENSE file for details.

Contributing

Please read our contributing guide to learn about our development process and how to propose bug fixes and improvements. Come visit us on our Discord Channel #uno-platform for help on how to contribute!

Contribute to Uno in your browser using GitPod.io, follow our guide here.

Be also mindful of our Code of Conduct.

Contributors

Thanks go to these wonderful people (List made with contrib.rocks):

💖 Thank you.

Issues

Quick list of the latest Issues we found

dr1rrb

dr1rrb

kind/enhancement
Icon For Comments0

What would you like to be added:

Unified way to handle exception in commands

Why is this needed:

  • Validation
  • Navigation?

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks
dr1rrb

dr1rrb

kind/enhancement
Icon For Comments0

What would you like to be added:

Selection support for ListState

Why is this needed:

ICollectionView does support selection. How do we get it from the VM when we use the BindableCollection?

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks
dr1rrb

dr1rrb

kind/enhancement
Icon For Comments0

What would you like to be added:

Add ability to aggregate the loading stets of multiple FeedViews

Why is this needed:

A common pattern on "home pages" is to have multiple data source. If we add a FeedView for each source, we gonna have multplie loading wheel which could be annoying.

We could try to combine sources using Feed.Combine but any source is None the whole page is going to be None (same for errors).

Additionally, we usually want only one "pull-to-refresh" per page, so the loading wheel of the RefreshContainer should aggregate the progress of all the FeedViews of the page.

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

For the [pull to] refresh, for now we will offer a way to refresh any feed from the code. Then you can refresh multiple sources using:

dr1rrb

dr1rrb

kind/bug
Icon For Comments0

Current behavior

We didn't provided public API to properly track multiple versions of a same entity (a.k.a. IKeyEquatable), so when we edit an entity (i.e. we replace it as entities are expected to be immutable), the entity tracking raises a remove and a add.

This can causes issues with animations in ListView.

Expected behavior

We should be able to get a replace for shuch updates.

How to reproduce it (as minimally and precisely as possible)

Data-bind to a ListView and observe that invoking the Update will cause some animations.

Environment

Nuget Package: Uno.Extensions.Reactive.[Win]UI Package Version(s): latest Affected platform(s):

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows

Workaround

To hide the issue you can just disable entrance and exit animations on the ListView.

On Android and iOS you also have to disable the native animations:

  • For Android, this is done globally in the app by setting feature flag: FeatureConfiguration.NativeListViewBase.RemoveItemAnimator = true; (note: this is the default value).
  • On iOS: you have to the uno only flag on directly on your ListView: ios:UseCollectionAnimations="False" (You can set it globally in the app by creating an implciti style for your the ListView).
nickrandolph

nickrandolph

kind/enhancement
Icon For Comments4

What would you like to be added:

Proposed interface is essentially a key-value repository with implementations for:

  • In memory
  • ApplicationData using DataProtection API (Windows)
  • Keychain (iOS)
  • Keystore (Android)

Why is this needed:

This is required for authentication to ensure that tokens aren't saved in plain text and are only accessible via the app

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

fperreaultnv

fperreaultnv

kind/bug
Icon For Comments0

Current behavior

When injecting IStringLocalizer in a VM, trying to retrieve a localized string where the key contains a dot results in a resource not found.

Expected behavior

The localized string is retrieve no matter what the key is.

How to reproduce it (as minimally and precisely as possible)

Base uno template is enough to repro

Environment

Nuget Package:

Package Version(s):

Affected platform(s):

I only checked windows.

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Visual Studio:

  • 2017 (version: )
  • 2019 (version: )
  • 2022 (version: 17.2.6)
  • for Mac (version: )

Anything else we need to know?

No

nickrandolph

nickrandolph

kind/bug
Icon For Comments0

Current behavior

Using TabBar to switch between tabs causes a flicker of white page to appear before the page content

Expected behavior

There should be minimal delay when switching tabs before the tab view is shown

How to reproduce it (as minimally and precisely as possible)

Environment

Nuget Package:

Package Version(s):

Affected platform(s):

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Visual Studio:

  • 2017 (version: )
  • 2019 (version: )
  • for Mac (version: )

Relevant plugins:

  • Resharper (version: )

Anything else we need to know?

thierry-fortin1

thierry-fortin1

kind/enhancement
Icon For Comments0

What would you like to be added:

The AsyncPaginated function for the ListState class.

Why is this needed:

I currently have a ListFeed (Messages) linked with the UI to show items in a ListView. I also have a ListState (_stateMessages) to receive the IMessenger notifications when I add items dynamically. The problem is that I can't link both so that when I add an item in the ListState, it also updates the ListFeed (so the UI).

I could just use the ListState as the databinder in the xaml, but it wouldn't work since there's no AsyncPaginated on ListState. image

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

I have tested several other options involving ListState and ListFeed, but none really works. I am on version 2.2.0-dev.77 of Uno.Extensions.Reactive, Reactive.WinUI and Reactive.Core.

dr1rrb

dr1rrb

kind/enhancement
Icon For Comments1

What would you like to be added:

Forward the INotifyPropertyChanges raised by VM to the BindableVM

Why is this needed:

BindableVM re-expose public properties from the VM, if VM raise INPC the view won't be udpated.

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks
nickrandolph

nickrandolph

kind/enhancement
Icon For Comments0

What would you like to be added:

Why is this needed:

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

nickrandolph

nickrandolph

kind/enhancement
Icon For Comments0

What would you like to be added:

Why is this needed:

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

nickrandolph

nickrandolph

kind/enhancement
Icon For Comments0

What would you like to be added:

Two scenarios for passing data into a viewmodel:

  • you have an entity of T, so the entity gets sent during navigation
  • you have the id of T, so need to look up (retreive) T, before sending it via navigation In both scenarios the target viewmodel should ideally receive Feed - this way if a service needs to be called to retrieve T, it can be done asynchronously

Why is this needed:

Async lookup for T would mean that navigation is faster, and that any loading indicator is shown on the target view.

For which Platform:

  • iOS
  • Android
  • WebAssembly
  • WebAssembly renders for Xamarin.Forms
  • Windows
  • Build tasks

Anything else we need to know?

Xiaoy312

Xiaoy312

kind/enhancement
Icon For Comments0

example for a view model-class that properties of type IState/IFeed/IListFeed normally a bindable version of this vm would be generated by Uno.Extensions.Reactive.Generator however, if the said vm class doesnt have the partial modifier, the bindable vm is not generated

it would be nice to have some kind of build warning, or runtime log warning/error for this kind of problem

Versions

Quick list of the latest released versions

2.1.1 - Jul 05, 2022

Bug Fixes

  • Navigation fixes for responsive nav (906eca3)

Contributions

New Contributors

Full Changelog: https://github.com/unoplatform/uno.extensions/compare/2.1.0...2.1.1

2.1.0 - Jul 05, 2022

(https://github.com/unoplatform/uno.extensions/commit/660c4b158ebd201d4e02b0d13bf770ca5e66b8c8))

  • Correcting logic for tabs (4e71dfe)
  • Correcting message dialog test case (b36698e)
  • Correcting paths (8fb9891)
  • Disable broken styles (8b7fe6a)
  • Disabling creation of auth packages (f328bf2)
  • Error with restoring during to conflicting versions of dependencies (349b10f)
  • feed: Fix possible StackOverflow and missing Replace event (a2acedb)
  • feeds: Add safety check on FV.Refresh command to avoid double refresh (15ec6b6)
  • feeds: Fix ChangeSet (collection changes) might not being forwarded properly by some operators (6092dd7)
  • feeds: Fix possible threading issues while sending requests (a92f136)
  • feeds: Fix propagation of the changes when using async operators (e7e0c8c)
  • feeds: Make the CollectionAnalyzer trully generic and fix support of ImmutableList which are not IList (6f3090b)
  • Fix issue with cyclic navigation in todo app after responsive nav changes (c504dc8)
  • Fix test cases (2d3e954)
  • generated code (c7d254e)
  • Getting tests to start new browser for each run (91ab0fc)
  • Improve formatting of bug workaround banner (f39b06f)
  • Making AndroidMessageHandler conditional on net6-android (9996c83)
  • Null ref argumentwarning (69c26fb)
  • nullable warning (d6f8b10)
  • reg: Make sure to clear the Refresh.IsExecuting when FV's subscription is disposed (56e5b5a)
  • Remove excess nested routemap (3ea7d38)
  • Removing duplicates (d0c0344)
  • Removing unpackaged option and updating to winappsdk 1.1.0 (7d098b4)
  • Removing UWP from build configuration (925ec9c)
  • Replacing ancestralbinding with toolkit ancestorbinding (c94c17b)
  • Reverting update to material due to error loading materialprogressringstyle (14b7513)
  • Review and updating basic nav docs (1c18db6)
  • Switching to AndroidMessageHandler instead of deprecated AndroidClientHandler (f9d8a41)
  • test: smoketest (7a06e1b)
  • UI tests (e132539)
  • Updated playground wasm to net6 (d4c70d0)
  • Updated readme and links (1bfa5c4)
  • Updated to latest uno.ext in order to fix responsive nav issue (0d17ddc)
  • Updates and corrections to nav docs (a0cc7fd)
  • Updating Android version (2390259)
  • Updating CI scripts (53d68c1)
  • Updating extensions templatefeat: Adjusting folder structure and fixing uitests (86192bf)
  • Updating mac sln filters (df0a655)
  • Updating to latest uno.extensions to get products list to display (74600dd)
  • Updating UI test (367d112)
  • Updating Uno.Ext and fixing navigation (dd9f8c7)
  • Updating vsconfig (47c49a1)
  • Web fonts and issue with running responsive nav on windows (93dabe2)

Features

  • Adding basic harness functionality (083142c)
  • Adding basic XAML page navigation test (f3e5d80)
  • Adding commerce app sample (263caf3)
  • Adding extensions etc from uno SampleApp UITests (838a053)
  • Adding Favorites list (67f90af)
  • Adding INavigator as Source on nav request (3dbe8a4)
  • Adding ListView page (a506c6b)
  • Adding mapping classes to navigation package (d2aab43)
  • Adding message dialog test cases (ee83684)
  • Adding page navigation tests (c9e85e2)
  • Adding reactive classes (ea71cec)
  • Adding responsive navigation pattern using depends on (5cd5fb2)
  • Adding responsive navigation test (b4ffed2)
  • Adding test harness (28c9b34)
  • Adding test sections (1a3bb8b)
  • Adding todo sample app (b1d799c)
  • Adding Todo sample app nav logic (2662bfb)
  • Allowing for httphandler chaining (f6ebf15)
  • Authentication extensions (4332245)
  • Authentication extensions (169457b)
  • Automating testing of commerce app sample (59a8411)
  • Change Shared to UI (2295414)
  • Cleaning up navigation logic (44d77eb)
  • commerce: Add More/Less and RemoveFromFav commands (addc08f)
  • commerce: Auto refersh Favorites list (fd77ca3)
  • commerce: Update (16eac29)
  • commerce: Update feed syntax (dc26965)
  • Enabling light/dark switching (with persistence) (4c15c54)
  • feed: Add a simple IoC container for the BindableCollection (2044de2)
  • feed: Add ability to test the refresh axis (13bd69e)
  • feed: Add ability to the BindableCollection to accept pre-computed change set (fe28489)
  • feed: Add helpers to test ListFeed and ChangeCollection (ea99450)
  • feed: Add refresh command on the FeedView (69768a9)
  • feed: Add the DifferentialImmutableList (a6dd8e0)
  • feed: Add the Refresh Axis (1cdfe8f)
  • feed: Generate the BinVM mapping for nav (7ac971f)
  • feed: Make Feed<T[]> automatically exposed to binding as IListFeed (6571ccd)
  • feed: Make the AsyncFeed refreshable using the subscription SourceContext (f91da8d)
  • feed: Rename State.Execute to State.ForEachAsync (1bc9b96)
  • feeds: Extract the TokenSet and add helpers to await a set of token (182255e)
  • feeds: Add <Coercing|Sequential>RequestManager heplers (a790de9)
  • feeds: Add ability for a SourceContext to send reqests to feeds subscribed using that context (ad9fbeb)
  • feeds: Add missing ImmutableListToUntypedList adapter (1f866e6)
  • feeds: Add PaginatedListFeed (2835df5)
  • feeds: Make the BindableCollection capable to raise PageRequest (5fe8b77)
  • Refactor to non-ui project (e5636b6)
  • Refactoring namespaces (818993a)
  • Removing pre-net6 template (cf1ec04)
  • Removing UWP head and renaming ProductsEndpoint to ProductEndpoint (58823c0)
  • Splitting host builder (ccb643b)
  • Switching to nuget packages instead of local projects (b611b62)
  • Tidy up namespaces (b24dc9b)
  • Tidying up api contract for custom service (8153584)
  • Updating and adding advanced docs (ea18882)
  • Using data as viewmodel for navigation (7ade063)

Contributions

Full Changelog: https://github.com/unoplatform/uno.extensions/compare/2.0.0...2.1.0

Library Stats (Sep 18, 2022)

Subscribers: 14
Stars: 35
Forks: 13
Issues: 37

FreshMvvm for Xamarin

FreshMvvm is a super light Mvvm Framework designed specifically for Xamarin

FreshMvvm for Xamarin

PullToRefreshLayout for Xamarin

Update - Officially Deprecated

PullToRefreshLayout for Xamarin

SolTech Xamarin Forms Toolkit

A subclass of the Xamarin Forms Picker control that supports databinding

SolTech Xamarin Forms Toolkit

Xamarin Controls

Cross-platform controls for Xamarin and Xamarin

Xamarin Controls

Animated Xamarin

Let's make use of the Xamarin

Animated Xamarin

BlinkID Xamarin SDK

Enhance your Xamarin cross-platform apps with an AI-driven mobile ID scanning software

BlinkID Xamarin SDK

AndroSpy - Xamarin-C# Android RAT

Yes, It is supporting dns connection like no-ip or duckdns or dynu etc

AndroSpy - Xamarin-C# Android RAT

Xamarin Forms Mvvm Adaptor

ViewModel-First Mvvm framework for Xamarin

Xamarin Forms Mvvm Adaptor

SkiaSharpnado: SkiaSharp components and case studies for Xamarin

If you want real details on this, please see my 2 parts blog post on Sharpnado:

SkiaSharpnado: SkiaSharp components and case studies for Xamarin

Xamarin-Forms-InAnger

Are you a skeptic of the promise of Xamarin

Xamarin-Forms-InAnger

Android Xamarin Chat

An Android (Xamarin) Chat client for the ServiceStack Chat application!

Android Xamarin Chat