diff --git a/GitTrends.UWP/App.xaml b/GitTrends.UWP/App.xaml new file mode 100644 index 000000000..45680eef1 --- /dev/null +++ b/GitTrends.UWP/App.xaml @@ -0,0 +1,7 @@ + + + diff --git a/GitTrends.UWP/App.xaml.cs b/GitTrends.UWP/App.xaml.cs new file mode 100644 index 000000000..6a6d0a1de --- /dev/null +++ b/GitTrends.UWP/App.xaml.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace GitTrends.UWP +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + sealed partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + Xamarin.Forms.Forms.Init(e); + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + //TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (e.PrelaunchActivated == false) + { + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + // Ensure the current window is active + Window.Current.Activate(); + } + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + //TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/GitTrends.UWP/Assets/LockScreenLogo.scale-200.png b/GitTrends.UWP/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 000000000..735f57adb Binary files /dev/null and b/GitTrends.UWP/Assets/LockScreenLogo.scale-200.png differ diff --git a/GitTrends.UWP/Assets/SplashScreen.scale-200.png b/GitTrends.UWP/Assets/SplashScreen.scale-200.png new file mode 100644 index 000000000..023e7f1fe Binary files /dev/null and b/GitTrends.UWP/Assets/SplashScreen.scale-200.png differ diff --git a/GitTrends.UWP/Assets/Square150x150Logo.scale-200.png b/GitTrends.UWP/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 000000000..af49fec1a Binary files /dev/null and b/GitTrends.UWP/Assets/Square150x150Logo.scale-200.png differ diff --git a/GitTrends.UWP/Assets/Square44x44Logo.scale-200.png b/GitTrends.UWP/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 000000000..ce342a2ec Binary files /dev/null and b/GitTrends.UWP/Assets/Square44x44Logo.scale-200.png differ diff --git a/GitTrends.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/GitTrends.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 000000000..f6c02ce97 Binary files /dev/null and b/GitTrends.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/GitTrends.UWP/Assets/StoreLogo.png b/GitTrends.UWP/Assets/StoreLogo.png new file mode 100644 index 000000000..7385b56c0 Binary files /dev/null and b/GitTrends.UWP/Assets/StoreLogo.png differ diff --git a/GitTrends.UWP/Assets/Wide310x150Logo.scale-200.png b/GitTrends.UWP/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 000000000..288995b39 Binary files /dev/null and b/GitTrends.UWP/Assets/Wide310x150Logo.scale-200.png differ diff --git a/GitTrends.UWP/DefaultProfileImage.png b/GitTrends.UWP/DefaultProfileImage.png new file mode 100644 index 000000000..53447d885 Binary files /dev/null and b/GitTrends.UWP/DefaultProfileImage.png differ diff --git a/GitTrends.UWP/GitTrends.UWP.csproj b/GitTrends.UWP/GitTrends.UWP.csproj new file mode 100644 index 000000000..d33796927 --- /dev/null +++ b/GitTrends.UWP/GitTrends.UWP.csproj @@ -0,0 +1,208 @@ + + + + + Debug + x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E} + AppContainerExe + Properties + GitTrends.UWP + GitTrends.UWP + en-US + UAP + 10.0.16299.0 + 10.0.16299.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + true + false + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM64 + false + prompt + true + true + + + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM64 + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + PackageReference + + + + App.xaml + + + MainPage.xaml + + + + + + Designer + + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + 3.1.0 + + + 4.9.4 + + + 6.2.9 + + + 12.0.2 + + + 7.1.1 + + + 4.7.51 + + + 1.6.292 + + + 17.3.0.14 + + + 17.3.0.14 + + + 3.0.0.5 + + + 1.3.1 + + + 4.3.0.851321-pre3 + + + + + {e9e411f7-7bb9-4176-8950-3a2d1c27ff33} + GitTrends + + + + 14.0 + + + + \ No newline at end of file diff --git a/GitTrends.UWP/MainPage.xaml b/GitTrends.UWP/MainPage.xaml new file mode 100644 index 000000000..a102f4255 --- /dev/null +++ b/GitTrends.UWP/MainPage.xaml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/GitTrends.UWP/MainPage.xaml.cs b/GitTrends.UWP/MainPage.xaml.cs new file mode 100644 index 000000000..e6eeaa1e7 --- /dev/null +++ b/GitTrends.UWP/MainPage.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace GitTrends.UWP +{ + public sealed partial class MainPage + { + public MainPage() + { + this.InitializeComponent(); + LoadApplication(new GitTrends.App()); + } + } +} diff --git a/GitTrends.UWP/Package.appxmanifest b/GitTrends.UWP/Package.appxmanifest new file mode 100644 index 000000000..d1c70e795 --- /dev/null +++ b/GitTrends.UWP/Package.appxmanifest @@ -0,0 +1,49 @@ + + + + + + + + + + GitTrends.UWP + glenn + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GitTrends.UWP/Properties/AssemblyInfo.cs b/GitTrends.UWP/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..097ec6763 --- /dev/null +++ b/GitTrends.UWP/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GitTrends.UWP")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GitTrends.UWP")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/GitTrends.UWP/Properties/Default.rd.xml b/GitTrends.UWP/Properties/Default.rd.xml new file mode 100644 index 000000000..af00722cd --- /dev/null +++ b/GitTrends.UWP/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/GitTrends.sln b/GitTrends.sln index 0bfa4fcea..fd7495485 100644 --- a/GitTrends.sln +++ b/GitTrends.sln @@ -1,17 +1,18 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29326.143 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitTrends.Android", "GitTrends.Android\GitTrends.Android.csproj", "{E5785129-AB94-4359-9947-B600D33A9958}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitTrends.iOS", "GitTrends.iOS\GitTrends.iOS.csproj", "{E1C47721-EF16-4F21-AA2F-78951DB0D715}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitTrends", "GitTrends\GitTrends.csproj", "{E9E411F7-7BB9-4176-8950-3A2D1C27FF33}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitTrends", "GitTrends\GitTrends.csproj", "{E9E411F7-7BB9-4176-8950-3A2D1C27FF33}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{BA9E6A61-3143-42DF-9669-97F7F557B7A2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backend", "Backend", "{30BA162E-26D2-4B3D-9347-986271EF77A7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitTrends.Functions", "GitTrends.Functions\GitTrends.Functions.csproj", "{19D38885-5E94-4CA1-AFAD-18172E8AAFD5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GitTrends.Functions", "GitTrends.Functions\GitTrends.Functions.csproj", "{19D38885-5E94-4CA1-AFAD-18172E8AAFD5}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{542E2517-3912-4324-B383-9F1FC42AA3CD}" EndProject @@ -19,71 +20,186 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "GitTrends.Shared", "GitTren EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "GitTrends.Mobile.Shared", "GitTrends.Mobile.Shared\GitTrends.Mobile.Shared.shproj", "{16224020-A5FB-41CB-AD1D-A411B4C7B75B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitTrends.UWP", "GitTrends.UWP\GitTrends.UWP.csproj", "{C0C40D13-F7B2-4587-9429-4C6FB796D18E}" +EndProject Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + GitTrends.Mobile.Shared\GitTrends.Mobile.Shared.projitems*{16224020-a5fb-41cb-ad1d-a411b4c7b75b}*SharedItemsImports = 13 + GitTrends.Shared\GitTrends.Shared.projitems*{d14f8262-1d13-493f-b78b-5c34f282ef07}*SharedItemsImports = 13 + EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - Debug|iPhoneSimulator = Debug|iPhoneSimulator - Release|iPhoneSimulator = Release|iPhoneSimulator + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 Debug|iPhone = Debug|iPhone + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E5785129-AB94-4359-9947-B600D33A9958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E5785129-AB94-4359-9947-B600D33A9958}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Release|Any CPU.Build.0 = Release|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM.Deploy.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM64.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|ARM64.Deploy.0 = Debug|Any CPU {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhone.ActiveCfg = Debug|Any CPU {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhone.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x64.ActiveCfg = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x64.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x64.Deploy.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x86.ActiveCfg = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x86.Build.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Debug|x86.Deploy.0 = Debug|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|Any CPU.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM.Deploy.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM64.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM64.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|ARM64.Deploy.0 = Release|Any CPU {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhone.ActiveCfg = Release|Any CPU {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhone.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x64.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x64.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x64.Deploy.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x86.ActiveCfg = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x86.Build.0 = Release|Any CPU + {E5785129-AB94-4359-9947-B600D33A9958}.Release|x86.Deploy.0 = Release|Any CPU {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|Any CPU.Build.0 = Release|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|ARM.ActiveCfg = Debug|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|ARM64.ActiveCfg = Debug|iPhone {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhone.ActiveCfg = Debug|iPhone {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhone.Build.0 = Debug|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|x64.ActiveCfg = Debug|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Debug|x86.ActiveCfg = Debug|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|Any CPU.Build.0 = Release|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|ARM.ActiveCfg = Release|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|ARM64.ActiveCfg = Release|iPhone {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhone.ActiveCfg = Release|iPhone {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhone.Build.0 = Release|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|x64.ActiveCfg = Release|iPhone + {E1C47721-EF16-4F21-AA2F-78951DB0D715}.Release|x86.ActiveCfg = Release|iPhone {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|Any CPU.Build.0 = Release|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|ARM.Build.0 = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|ARM64.Build.0 = Debug|Any CPU {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhone.ActiveCfg = Debug|Any CPU {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhone.Build.0 = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|x64.ActiveCfg = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|x64.Build.0 = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|x86.ActiveCfg = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Debug|x86.Build.0 = Debug|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|Any CPU.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|ARM.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|ARM.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|ARM64.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|ARM64.Build.0 = Release|Any CPU {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhone.ActiveCfg = Release|Any CPU {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhone.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|x64.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|x64.Build.0 = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|x86.ActiveCfg = Release|Any CPU + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33}.Release|x86.Build.0 = Release|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|Any CPU.Build.0 = Release|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|ARM.Build.0 = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|ARM64.Build.0 = Debug|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhone.ActiveCfg = Debug|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhone.Build.0 = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|x64.ActiveCfg = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|x64.Build.0 = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|x86.ActiveCfg = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Debug|x86.Build.0 = Debug|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|Any CPU.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|ARM.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|ARM.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|ARM64.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|ARM64.Build.0 = Release|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhone.ActiveCfg = Release|Any CPU {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhone.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|x64.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|x64.Build.0 = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|x86.ActiveCfg = Release|Any CPU + {19D38885-5E94-4CA1-AFAD-18172E8AAFD5}.Release|x86.Build.0 = Release|Any CPU + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|Any CPU.ActiveCfg = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM.ActiveCfg = Debug|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM.Build.0 = Debug|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM.Deploy.0 = Debug|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM64.Build.0 = Debug|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|iPhone.ActiveCfg = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x64.ActiveCfg = Debug|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x64.Build.0 = Debug|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x64.Deploy.0 = Debug|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x86.ActiveCfg = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x86.Build.0 = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Debug|x86.Deploy.0 = Debug|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|Any CPU.ActiveCfg = Release|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM.ActiveCfg = Release|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM.Build.0 = Release|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM.Deploy.0 = Release|ARM + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM64.ActiveCfg = Release|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM64.Build.0 = Release|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|ARM64.Deploy.0 = Release|ARM64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|iPhone.ActiveCfg = Release|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|iPhoneSimulator.ActiveCfg = Release|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x64.ActiveCfg = Release|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x64.Build.0 = Release|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x64.Deploy.0 = Release|x64 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x86.ActiveCfg = Release|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x86.Build.0 = Release|x86 + {C0C40D13-F7B2-4587-9429-4C6FB796D18E}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {E9E411F7-7BB9-4176-8950-3A2D1C27FF33} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} {E5785129-AB94-4359-9947-B600D33A9958} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} {E1C47721-EF16-4F21-AA2F-78951DB0D715} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} + {E9E411F7-7BB9-4176-8950-3A2D1C27FF33} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} {19D38885-5E94-4CA1-AFAD-18172E8AAFD5} = {30BA162E-26D2-4B3D-9347-986271EF77A7} {D14F8262-1D13-493F-B78B-5C34F282EF07} = {542E2517-3912-4324-B383-9F1FC42AA3CD} {16224020-A5FB-41CB-AD1D-A411B4C7B75B} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} + {C0C40D13-F7B2-4587-9429-4C6FB796D18E} = {BA9E6A61-3143-42DF-9669-97F7F557B7A2} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1DDBEF5A-40CC-4A99-8D88-DF96AA0C9D55} EndGlobalSection EndGlobal diff --git a/GitTrends/GitTrends.csproj b/GitTrends/GitTrends.csproj index b49987574..b5512358e 100644 --- a/GitTrends/GitTrends.csproj +++ b/GitTrends/GitTrends.csproj @@ -1,7 +1,7 @@  - netstandard2.1 + netstandard2.0 true 8.0 enable @@ -16,6 +16,7 @@ true + diff --git a/GitTrends/Services/GitHubGraphQLApiService.cs b/GitTrends/Services/GitHubGraphQLApiService.cs index 79e904ec5..e8c1a3c33 100644 --- a/GitTrends/Services/GitHubGraphQLApiService.cs +++ b/GitTrends/Services/GitHubGraphQLApiService.cs @@ -37,16 +37,20 @@ public async Task GetRepository(string repositoryOwner, string repos return data.Repository; } - public async IAsyncEnumerable> GetRepositories(string repositoryOwner, int numberOfRepositoriesPerRequest = 100) + public async Task> GetRepositories(string repositoryOwner, int numberOfRepositoriesPerRequest = 100) { RepositoryConnection? repositoryConnection = null; + List gitHubRepositoryList = new List(); + do { repositoryConnection = await GetRepositoryConnection(repositoryOwner, repositoryConnection?.PageInfo?.EndCursor, numberOfRepositoriesPerRequest).ConfigureAwait(false); - yield return repositoryConnection?.RepositoryList ?? Enumerable.Empty(); + gitHubRepositoryList.AddRange(repositoryConnection?.RepositoryList); } while (repositoryConnection?.PageInfo?.HasNextPage is true); + + return gitHubRepositoryList; } async Task GetRepositoryConnection(string repositoryOwner, string? endCursor, int numberOfRepositoriesPerRequest = 100) diff --git a/GitTrends/ViewModels/RepositoryViewModel.cs b/GitTrends/ViewModels/RepositoryViewModel.cs index 9470d9472..45c1a42d1 100644 --- a/GitTrends/ViewModels/RepositoryViewModel.cs +++ b/GitTrends/ViewModels/RepositoryViewModel.cs @@ -63,11 +63,11 @@ async Task ExecutePullToRefreshCommand(string repositoryOwner) try { - await foreach (var retrievedRepository in _gitHubGraphQLApiService.GetRepositories(repositoryOwner)) - { - AddRepositoriesToCollection(retrievedRepository, repositoryOwner, _searchBarText); - _repositoryDatabase.SaveRepositories(retrievedRepository).SafeFireAndForget(); - } + var repositoryList = await _gitHubGraphQLApiService.GetRepositories(repositoryOwner).ConfigureAwait(false); + + SetRepositoriesCollection(repositoryList, repositoryOwner, _searchBarText); + + _repositoryDatabase.SaveRepositories(repositoryList).SafeFireAndForget(); } catch (ApiException e) when (e.StatusCode is HttpStatusCode.Unauthorized) {