diff --git a/src/BeerTrade/BeerTrade.Android/BeerTrade.Android.csproj b/src/BeerTrade/BeerTrade.Android/BeerTrade.Android.csproj
index a32a1a9..9492bb8 100644
--- a/src/BeerTrade/BeerTrade.Android/BeerTrade.Android.csproj
+++ b/src/BeerTrade/BeerTrade.Android/BeerTrade.Android.csproj
@@ -63,6 +63,12 @@
4.0.0.394984-pre10
+
+ 2.4.11.982
+
+
+ 2.4.11.982
+
diff --git a/src/BeerTrade/BeerTrade.Android/MainActivity.cs b/src/BeerTrade/BeerTrade.Android/MainActivity.cs
index 24d1b28..26bb00c 100644
--- a/src/BeerTrade/BeerTrade.Android/MainActivity.cs
+++ b/src/BeerTrade/BeerTrade.Android/MainActivity.cs
@@ -20,6 +20,7 @@ protected override void OnCreate(Bundle savedInstanceState)
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
+ FFImageLoading.Forms.Platform.CachedImageRenderer.Init(enableFastRenderer: false);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
diff --git a/src/BeerTrade/BeerTrade.Android/linker.xml b/src/BeerTrade/BeerTrade.Android/linker.xml
index ba4d2ea..239ea6a 100644
--- a/src/BeerTrade/BeerTrade.Android/linker.xml
+++ b/src/BeerTrade/BeerTrade.Android/linker.xml
@@ -26,5 +26,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/BeerTrade/BeerTrade.iOS/AppDelegate.cs b/src/BeerTrade/BeerTrade.iOS/AppDelegate.cs
index 6cf868d..c6d5a38 100644
--- a/src/BeerTrade/BeerTrade.iOS/AppDelegate.cs
+++ b/src/BeerTrade/BeerTrade.iOS/AppDelegate.cs
@@ -24,6 +24,7 @@ public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Xamarin.Calabash.Start();
global::Xamarin.Forms.Forms.Init();
+ FFImageLoading.Forms.Platform.CachedImageRenderer.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
diff --git a/src/BeerTrade/BeerTrade.iOS/BeerTrade.iOS.csproj b/src/BeerTrade/BeerTrade.iOS/BeerTrade.iOS.csproj
index d0c5d61..6128b10 100644
--- a/src/BeerTrade/BeerTrade.iOS/BeerTrade.iOS.csproj
+++ b/src/BeerTrade/BeerTrade.iOS/BeerTrade.iOS.csproj
@@ -138,6 +138,12 @@
4.0.0.394984-pre10
+
+ 2.4.11.982
+
+
+ 2.4.11.982
+
diff --git a/src/BeerTrade/BeerTrade.iOS/linker.xml b/src/BeerTrade/BeerTrade.iOS/linker.xml
index ba4d2ea..239ea6a 100644
--- a/src/BeerTrade/BeerTrade.iOS/linker.xml
+++ b/src/BeerTrade/BeerTrade.iOS/linker.xml
@@ -26,5 +26,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/BeerTrade/BeerTrade/App.xaml.cs b/src/BeerTrade/BeerTrade/App.xaml.cs
index 45e36d6..7087d11 100644
--- a/src/BeerTrade/BeerTrade/App.xaml.cs
+++ b/src/BeerTrade/BeerTrade/App.xaml.cs
@@ -1,4 +1,6 @@
using System.Threading.Tasks;
+using BeerTrade.Interfaces;
+using BeerTrade.Services;
using BeerTrade.ViewModels;
using BeerTrade.Views;
using Prism;
@@ -31,6 +33,7 @@ protected override void RegisterTypes(IContainerRegistry containerRegistry)
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
+ containerRegistry.RegisterSingleton();
}
protected override void OnStart()
diff --git a/src/BeerTrade/BeerTrade/BeerTrade.csproj b/src/BeerTrade/BeerTrade/BeerTrade.csproj
index b0c730f..d8b93cf 100644
--- a/src/BeerTrade/BeerTrade/BeerTrade.csproj
+++ b/src/BeerTrade/BeerTrade/BeerTrade.csproj
@@ -13,14 +13,22 @@
latest
+
+ TRACE;RELEASE;NETSTANDARD;NETSTANDARD2_0;DISABLE_XAMARINFORMSLIVE
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/BeerTrade/BeerTrade/Interfaces/IApi.cs b/src/BeerTrade/BeerTrade/Interfaces/IApi.cs
new file mode 100644
index 0000000..3ca4d54
--- /dev/null
+++ b/src/BeerTrade/BeerTrade/Interfaces/IApi.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using BeerTrade.Models;
+
+namespace BeerTrade.Interfaces
+{
+ public interface IApi
+ {
+ Task> GetFeed();
+ }
+}
diff --git a/src/BeerTrade/BeerTrade/Models/FeedItem.cs b/src/BeerTrade/BeerTrade/Models/FeedItem.cs
new file mode 100644
index 0000000..bbbe367
--- /dev/null
+++ b/src/BeerTrade/BeerTrade/Models/FeedItem.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace BeerTrade.Models
+{
+ public class FeedItem
+ {
+ public string BeerPhoto { get; set; }
+ public string AvatarPhoto { get; set; }
+ public string Nickname { get; set; }
+ public string Location { get; set; }
+ }
+}
diff --git a/src/BeerTrade/BeerTrade/Services/ApiServiceFake.cs b/src/BeerTrade/BeerTrade/Services/ApiServiceFake.cs
new file mode 100644
index 0000000..41b5bca
--- /dev/null
+++ b/src/BeerTrade/BeerTrade/Services/ApiServiceFake.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using BeerTrade.Interfaces;
+using BeerTrade.Models;
+
+namespace BeerTrade.Services
+{
+ public class ApiServiceFake : IApi
+ {
+ public async Task> GetFeed()
+ {
+ var feed = new List();
+
+ feed.Add(new FeedItem
+ {
+ BeerPhoto = "https://cdn-b.william-reed.com/var/wrbm_gb_hospitality/storage/images/publications/hospitality/bighospitality.co.uk/article/2018/04/26/beer-quiz-25-questions-to-test-your-knowledge/2807204-1-eng-GB/Beer-quiz-25-questions-to-test-your-knowledge_wrbm_large.jpg",
+ AvatarPhoto = "https://avatars3.githubusercontent.com/u/519642?v=4&s=460",
+ Nickname = "ionixjunior",
+ Location = "Joinville, SC, Brazil"
+ });
+
+ feed.Add(new FeedItem
+ {
+ BeerPhoto = "https://cdn-b.william-reed.com/var/wrbm_gb_hospitality/storage/images/publications/hospitality/bighospitality.co.uk/article/2018/04/26/beer-quiz-25-questions-to-test-your-knowledge/2807204-1-eng-GB/Beer-quiz-25-questions-to-test-your-knowledge_wrbm_large.jpg",
+ AvatarPhoto = "https://avatars3.githubusercontent.com/u/519642?v=4&s=460",
+ Nickname = "ionixjunior",
+ Location = "Joinville, SC, Brazil"
+ });
+
+ feed.Add(new FeedItem
+ {
+ BeerPhoto = "https://cdn-b.william-reed.com/var/wrbm_gb_hospitality/storage/images/publications/hospitality/bighospitality.co.uk/article/2018/04/26/beer-quiz-25-questions-to-test-your-knowledge/2807204-1-eng-GB/Beer-quiz-25-questions-to-test-your-knowledge_wrbm_large.jpg",
+ AvatarPhoto = "https://avatars3.githubusercontent.com/u/519642?v=4&s=460",
+ Nickname = "ionixjunior",
+ Location = "Joinville, SC, Brazil"
+ });
+
+ return await Task.FromResult(feed);
+ }
+ }
+}
diff --git a/src/BeerTrade/BeerTrade/ViewModels/FeedPageViewModel.cs b/src/BeerTrade/BeerTrade/ViewModels/FeedPageViewModel.cs
index cd2e116..f84d75e 100644
--- a/src/BeerTrade/BeerTrade/ViewModels/FeedPageViewModel.cs
+++ b/src/BeerTrade/BeerTrade/ViewModels/FeedPageViewModel.cs
@@ -1,12 +1,60 @@
-using Prism.Navigation;
+using System;
+using System.Collections.ObjectModel;
+using System.Threading.Tasks;
+using BeerTrade.Interfaces;
+using BeerTrade.Models;
+using Prism;
+using Prism.Navigation;
namespace BeerTrade.ViewModels
{
- public sealed class FeedPageViewModel : BaseViewModel
- {
- public FeedPageViewModel(INavigationService navigationService)
+ public class FeedPageViewModel : BaseViewModel, IActiveAware
+ {
+ private readonly IApi _api;
+
+ public ObservableCollection Items { get; private set; }
+
+ public FeedPageViewModel(
+ INavigationService navigationService,
+ IApi api)
: base(navigationService)
+ {
+ _api = api;
+ Items = new ObservableCollection();
+ }
+
+ public event EventHandler IsActiveChanged;
+
+ private bool _isActive;
+ public bool IsActive
+ {
+ get { return _isActive; }
+ set { SetProperty(ref _isActive, value, RaiseIsActiveChanged); }
+ }
+
+ protected virtual async void RaiseIsActiveChanged()
+ {
+ IsActiveChanged?.Invoke(this, EventArgs.Empty);
+
+ if (IsActive)
+ await GetFeed();
+ }
+
+ private async Task GetFeed()
{
+ try
+ {
+ var feed = await _api.GetFeed();
+
+ Items.Clear();
+
+ foreach (var item in feed)
+ Items.Add(item);
+ }
+ catch (Exception exception)
+ {
+ System.Diagnostics.Debug.WriteLine(exception.Message);
+ }
}
}
}
\ No newline at end of file
diff --git a/src/BeerTrade/BeerTrade/Views/FeedPage.xaml b/src/BeerTrade/BeerTrade/Views/FeedPage.xaml
index 3a66deb..8384876 100644
--- a/src/BeerTrade/BeerTrade/Views/FeedPage.xaml
+++ b/src/BeerTrade/BeerTrade/Views/FeedPage.xaml
@@ -4,9 +4,83 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
+ xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
+ xmlns:fftransformations="clr-namespace:FFImageLoading.Transformations;assembly=FFImageLoading.Transformations"
x:Class="BeerTrade.Views.FeedPage"
Title="Home">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+