Quick fixes for initial setup
This commit is contained in:
parent
45c8899f06
commit
2356fbab4f
|
@ -2,19 +2,25 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Blazored.LocalStorage;
|
||||||
using Fluxor;
|
using Fluxor;
|
||||||
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
|
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
|
||||||
using Refit;
|
using Refit;
|
||||||
using Start.Client.Store.Features.CreateContainer;
|
using Start.Client.Store.Features.CreateContainer;
|
||||||
|
using Start.Client.Store.Features.CurrentContainer;
|
||||||
|
using Start.Client.Store.State;
|
||||||
using Start.Shared;
|
using Start.Shared;
|
||||||
using Start.Shared.Api;
|
using Start.Shared.Api;
|
||||||
|
|
||||||
namespace Start.Client.Store.Features.ContainersList {
|
namespace Start.Client.Store.Features.ContainersList {
|
||||||
public class ContainerListEffects {
|
public class ContainerListEffects {
|
||||||
public IBookmarkContainersApi BookmarkContainersApi { get; init; }
|
public IBookmarkContainersApi BookmarkContainersApi { get; init; }
|
||||||
|
public ILocalStorageService LocalStorage { get; set; }
|
||||||
|
|
||||||
public ContainerListEffects(IBookmarkContainersApi bookmarkContainersApi) {
|
public ContainerListEffects(IBookmarkContainersApi bookmarkContainersApi,
|
||||||
|
ILocalStorageService localStorage) {
|
||||||
this.BookmarkContainersApi = bookmarkContainersApi;
|
this.BookmarkContainersApi = bookmarkContainersApi;
|
||||||
|
this.LocalStorage = localStorage;
|
||||||
}
|
}
|
||||||
|
|
||||||
[EffectMethod(typeof(LoadContainerListAction))]
|
[EffectMethod(typeof(LoadContainerListAction))]
|
||||||
|
@ -35,21 +41,22 @@ namespace Start.Client.Store.Features.ContainersList {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bookmarkContainers.Any()) {
|
if (!bookmarkContainers.Any()) {
|
||||||
dispatch.Dispatch(new SubmitCreateContainerAction(
|
ApiResponse<BookmarkContainerDto?>? createResponse = await this
|
||||||
new BookmarkContainerDto("Default", 0)));
|
|
||||||
|
|
||||||
// And load again
|
|
||||||
response = await this
|
|
||||||
.BookmarkContainersApi
|
.BookmarkContainersApi
|
||||||
.GetAllBookmarkContainers();
|
.CreateBookmarkContainer("Default", 0);
|
||||||
|
|
||||||
bookmarkContainers = response.Content?.ToList();
|
BookmarkContainerDto? newContainer = createResponse.Content;
|
||||||
|
|
||||||
if (bookmarkContainers == null) {
|
if (newContainer == null) {
|
||||||
dispatch.Dispatch(new ErrorFetchingContainerListAction(
|
dispatch.Dispatch(new ErrorFetchingContainerListAction(
|
||||||
"Failed to fetch containers list"));
|
"Failed to create default container"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bookmarkContainers = new List<BookmarkContainerDto> { newContainer };
|
||||||
|
|
||||||
|
await this.SetSelectedContainer(newContainer.BookmarkContainerId);
|
||||||
|
dispatch.Dispatch(new LoadCurrentContainerAction(newContainer.BookmarkContainerId));
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch.Dispatch(new RecievedContainerListAction(bookmarkContainers));
|
dispatch.Dispatch(new RecievedContainerListAction(bookmarkContainers));
|
||||||
|
@ -58,5 +65,9 @@ namespace Start.Client.Store.Features.ContainersList {
|
||||||
e.Redirect();
|
e.Redirect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task SetSelectedContainer(int selectedContainerId) {
|
||||||
|
await this.LocalStorage.SetItemAsync("SelectedContainer", selectedContainerId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,20 +21,24 @@ namespace Start.Client.Store.State {
|
||||||
dispatch.Dispatch(new LoadCurrentContainerAction(await GetSelectedContainerId()));
|
dispatch.Dispatch(new LoadCurrentContainerAction(await GetSelectedContainerId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<int> GetSelectedContainerId() {
|
public async Task<int> GetSelectedContainerId() {
|
||||||
bool hasValue = await this.LocalStorage.ContainKeyAsync("SelectedContainer");
|
bool hasValue = await this.LocalStorage.ContainKeyAsync("SelectedContainer");
|
||||||
|
|
||||||
if (hasValue)
|
if (hasValue)
|
||||||
return await this.LocalStorage.GetItemAsync<int>("SelectedContainer");
|
return await this.LocalStorage.GetItemAsync<int>("SelectedContainer");
|
||||||
|
|
||||||
// Default to the first container
|
// Default to the first container
|
||||||
int firstContainer = this.State.Value.ContainerListState.Containers
|
int? firstContainer = this.State.Value.ContainerListState.Containers
|
||||||
.First().BookmarkContainerId;
|
.FirstOrDefault()?.BookmarkContainerId;
|
||||||
await this.SetSelectedContainer(firstContainer);
|
|
||||||
return firstContainer;
|
if (firstContainer == null)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
await this.SetSelectedContainer(firstContainer ?? 0);
|
||||||
|
return firstContainer ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task SetSelectedContainer(int selectedContainerId) {
|
public async Task SetSelectedContainer(int selectedContainerId) {
|
||||||
await this.LocalStorage.SetItemAsync("SelectedContainer", selectedContainerId);
|
await this.LocalStorage.SetItemAsync("SelectedContainer", selectedContainerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue