Skip to content
This repository has been archived by the owner on Nov 6, 2022. It is now read-only.

Commit

Permalink
+ Added import releases from file
Browse files Browse the repository at this point in the history
  • Loading branch information
trueromanus committed Dec 12, 2020
1 parent 949a376 commit da80227
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 14 deletions.
16 changes: 11 additions & 5 deletions src/Anilibria/Pages/MaintenancePage/MaintenancePageView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@

<Grid
Grid.Row="1"
Grid.Column="1">
Grid.Column="1"
VerticalAlignment="Top">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
Expand All @@ -65,7 +66,8 @@

<Grid
Grid.Row="0"
VerticalAlignment="Top">
VerticalAlignment="Top"
Margin="0 24 0 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240" />
<ColumnDefinition />
Expand All @@ -90,15 +92,16 @@
</Grid>
<Grid
Grid.Row="1"
VerticalAlignment="Top">
VerticalAlignment="Top"
Margin="0 24 0 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button
Grid.Column="0"
Margin="0 4 0 0"
Command="{Binding ClearPosterCacheCommand}"
Command="{Binding ImportReleasesFromFileCommand}"
converters:BackgroundThemeConverter.ActionButton="Origin"
VerticalAlignment="Center"
HorizontalAlignment="Center">
Expand All @@ -113,7 +116,10 @@
Позволяет импортировать релизы из файла. Импортированные релизы не будут обновляться.
</TextBlock>
</Grid>

<Grid
Grid.Row="2">

</Grid>
</Grid>
</Grid>
</UserControl>
29 changes: 24 additions & 5 deletions src/Anilibria/Pages/MaintenancePage/MaintenancePageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@
using Anilibria.Services;
using Anilibria.Services.Implementations;
using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Input;
using Windows.Storage;
using Windows.Storage.Pickers;

namespace Anilibria.Pages.MaintenancePage
{
public class MaintenancePageViewModel : ViewModel, INavigation
{
namespace Anilibria.Pages.MaintenancePage {
public class MaintenancePageViewModel : ViewModel, INavigation {
private readonly IAnalyticsService m_AnalyticsService;

private readonly object m_ClearPosterLock = new object();
private readonly object m_ClearPosterLock = new object ();

private const string PosterGroupName = "Poster";

Expand All @@ -24,6 +25,22 @@ public MaintenancePageViewModel ( IAnalyticsService analyticsService ) {
private void CreateCommands () {
ClearPosterCacheCommand = CreateCommand ( ClearPosterCache );
ShowSidebarCommand = CreateCommand ( OpenSidebar );
ImportReleasesFromFileCommand = CreateCommand ( ImportReleasesFromFile );
}

private async void ImportReleasesFromFile () {
var openPicker = new FileOpenPicker ();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openPicker.FileTypeFilter.Add ( ".releases" );

var file = await openPicker.PickSingleFileAsync ();
if ( file == null ) return;

var content = await FileIO.ReadTextAsync ( file );

var synchronizeService = SyncService.Current ();
await synchronizeService.SynchronizeReleasesFromContent ( content );
}

private void OpenSidebar () => ShowSidebar?.Invoke ();
Expand Down Expand Up @@ -56,6 +73,8 @@ public void NavigateTo ( object parameter ) {

public ICommand ClearPosterCacheCommand { get; set; }

public ICommand ImportReleasesFromFileCommand { get; set; }

public ICommand ShowSidebarCommand { get; set; }

}
Expand Down
6 changes: 6 additions & 0 deletions src/Anilibria/Services/ISynchronizationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ public interface ISynchronizationService {
/// </summary>
Task SynchronizeReleases ();

/// <summary>
/// Synchronize releases from json content.
/// </summary>
/// <param name="content">Json content.</param>
Task SynchronizeReleasesFromContent ( string content );

/// <summary>
/// Synchronize youtubes.
/// </summary>
Expand Down
25 changes: 21 additions & 4 deletions src/Anilibria/Services/Implementations/SynchronizeService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Anilibria.Services.PresentationClasses;
using Anilibria.Storage;
using Anilibria.Storage.Entities;
using Newtonsoft.Json;

namespace Anilibria.Services.Implementations {

Expand Down Expand Up @@ -186,14 +187,30 @@ private void UpdateCachedRelease ( Release release , ReleaseEntity releaseEntity
.ToList ();
}

public async Task SynchronizeReleasesFromContent ( string content ) {
await SynchronizeReleasesFromSource (
() => Task.FromResult ( JsonConvert.DeserializeObject<IEnumerable<Release>> ( content ) )
);
}

public async Task SynchronizeReleases () {
await SynchronizeReleasesFromSource (
async () => {
var releases = await m_AnilibriaApiService.GetPage ( 1 , 2000 );
var schedules = await m_AnilibriaApiService.GetSchedule ();
SaveSchedule ( schedules );
return releases;
}
);
}

private async Task SynchronizeReleasesFromSource ( Func<Task<IEnumerable<Release>>> loadContentHandler ) {
try {
var firstRun = !m_ReleasesService.GetReleases ().Any ();

var releases = await m_AnilibriaApiService.GetPage ( 1 , 2000 );
var schedules = await m_AnilibriaApiService.GetSchedule ();

SaveSchedule ( schedules );
var releases = await loadContentHandler ();

var cacheReleases = m_ReleasesService.GetReleases ().ToList ();

Expand Down

0 comments on commit da80227

Please sign in to comment.