using System.ComponentModel; using System.Threading.Tasks; using Xamarin.Forms; namespace TINK.ViewModel.Contact { public class FeesAndBikesPageViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; /// Holds value wether site caching is on or off. bool IsSiteCachingOn { get; } private string FeesResourcePath { get; } private string BikesResourcePath { get; } /// Constructs view model. /// Set of user permissions /// Delegate to get an an embedded html ressource. Used as fallback if download from web page does not work and cache is empty. public FeesAndBikesPageViewModel( string hostName, string feesResourcePath, string bikesResourcePath, bool isSiteCachingOn) { HostName = hostName; FeesResourcePath = feesResourcePath; BikesResourcePath = bikesResourcePath; IsSiteCachingOn = isSiteCachingOn; } /// Holds the name of the host. private string HostName { get; } /// Called when page is shown. public async void OnAppearing() { RentBikeText = new HtmlWebViewSource { Html = !string.IsNullOrEmpty(FeesResourcePath) ? await ViewModelHelper.GetSource($"https://{HostName}/{FeesResourcePath}" /* "site/tariff_info_1.html" */, IsSiteCachingOn) : await Task.FromResult(ViewModelHelper.FromBody("No fees resource available. Resource path is null or empty.")) }; TypesOfBikesText = new HtmlWebViewSource { Html = !string.IsNullOrEmpty(BikesResourcePath) ? await ViewModelHelper.GetSource($"https://{HostName}/{BikesResourcePath}" /*"site/bike_info.html"*/, IsSiteCachingOn) : await Task.FromResult(ViewModelHelper.FromBody("No bikes instruction resource available. Resource path is null or empty.")) }; } private HtmlWebViewSource rentBikeText; private HtmlWebViewSource typesOfBikesText; public HtmlWebViewSource RentBikeText { get => rentBikeText; set { rentBikeText = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RentBikeText))); } } public HtmlWebViewSource TypesOfBikesText { get => typesOfBikesText; set { typesOfBikesText = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TypesOfBikesText))); } } } }