2021-12-04 00:44:02 +00:00
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Fluxor;
|
|
|
|
|
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
|
|
|
|
|
using Refit;
|
|
|
|
|
using Start.Shared;
|
|
|
|
|
using Start.Shared.Api;
|
|
|
|
|
using Start.Client.Store.Features.ContainersList;
|
2022-04-19 20:04:38 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2021-12-04 00:44:02 +00:00
|
|
|
|
|
|
|
|
|
namespace Start.Client.Store.Features.CreateContainer {
|
|
|
|
|
public class CreateContainerEffects {
|
2021-12-05 23:50:48 +00:00
|
|
|
|
public IBookmarkContainersApi BookmarkContainersApi { get; init; }
|
2021-12-04 00:44:02 +00:00
|
|
|
|
|
|
|
|
|
public CreateContainerEffects(IBookmarkContainersApi bookmarkContainersApi) {
|
|
|
|
|
this.BookmarkContainersApi = bookmarkContainersApi;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[EffectMethod]
|
|
|
|
|
public async Task SubmitCreateContainer(SubmitCreateContainerAction action,
|
|
|
|
|
IDispatcher dispatch) {
|
|
|
|
|
dispatch.Dispatch(new FetchCreateContainerAction());
|
|
|
|
|
|
|
|
|
|
try {
|
2022-04-19 20:04:38 +00:00
|
|
|
|
ApiResponse<IEnumerable<BookmarkContainerDto>>? containersResponse = await this
|
|
|
|
|
.BookmarkContainersApi
|
|
|
|
|
.GetAllBookmarkContainers();
|
|
|
|
|
|
|
|
|
|
if (containersResponse == null || containersResponse.Content == null) {
|
|
|
|
|
dispatch.Dispatch(new ErrorFetchingCreateContainerAction(
|
|
|
|
|
"There was an error checking bookmark containers"));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int sortOrder = !containersResponse.Content.Any()
|
|
|
|
|
? 0
|
|
|
|
|
: containersResponse.Content.Max(c => c.SortOrder) + 1;
|
|
|
|
|
|
2021-12-04 00:44:02 +00:00
|
|
|
|
ApiResponse<BookmarkContainerDto?> apiResponse = await this.BookmarkContainersApi
|
2022-04-19 20:04:38 +00:00
|
|
|
|
.CreateBookmarkContainer(action.NewContainer.Title, sortOrder);
|
2021-12-04 00:44:02 +00:00
|
|
|
|
|
|
|
|
|
BookmarkContainerDto? container = apiResponse.Content;
|
|
|
|
|
|
2021-12-05 23:50:48 +00:00
|
|
|
|
if (container == null) {
|
2021-12-04 00:44:02 +00:00
|
|
|
|
dispatch.Dispatch(new ErrorFetchingCreateContainerAction(
|
|
|
|
|
"Failed to create container"));
|
2021-12-05 23:50:48 +00:00
|
|
|
|
return;
|
2021-12-04 00:44:02 +00:00
|
|
|
|
}
|
2021-12-05 23:50:48 +00:00
|
|
|
|
|
|
|
|
|
dispatch.Dispatch(new AddContainerToListAction(container));
|
|
|
|
|
dispatch.Dispatch(new ReceivedCreateContainerAction());
|
2021-12-04 00:44:02 +00:00
|
|
|
|
} catch (AccessTokenNotAvailableException e) {
|
|
|
|
|
e.Redirect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|