Skip to content

Commit e912d94

Browse files
committed
Add: loadAsync parameter
1 parent 2163ef8 commit e912d94

3 files changed

Lines changed: 29 additions & 30 deletions

File tree

src/NavStack/Assets/NavStack/Runtime/NavigationSheetExtensions.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,21 @@ public static UniTask AddNewObjectAsync<T>(this INavigationSheet navigationSheet
2828
return navigationSheet.AddAsync(instance, cancellationToken);
2929
}
3030

31-
public static UniTask AddNewObjectAsync(this INavigationSheet navigationSheet, string key, CancellationToken cancellationToken = default)
31+
public static async UniTask AddNewObjectAsync(this INavigationSheet navigationSheet, string key, IResourceProvider resourceProvider = null, bool loadAsync = true, CancellationToken cancellationToken = default)
3232
{
33-
return AddNewObjectAsync(navigationSheet, key, ResourceProvider.DefaultResourceProvider, cancellationToken);
34-
}
35-
36-
public static UniTask AddNewObjectAsync(this INavigationSheet navigationSheet, string key, NavigationContext context, CancellationToken cancellationToken = default)
37-
{
38-
return AddNewObjectAsync(navigationSheet, key, ResourceProvider.DefaultResourceProvider, context, cancellationToken);
39-
}
33+
resourceProvider ??= ResourceProvider.DefaultResourceProvider;
4034

41-
public static UniTask AddNewObjectAsync(this INavigationSheet navigationSheet, string key, IResourceProvider resourceProvider, CancellationToken cancellationToken = default)
42-
{
43-
return AddNewObjectAsync(navigationSheet, key, resourceProvider, new NavigationContext(), cancellationToken);
44-
}
35+
UnityEngine.Object resource;
4536

46-
public static async UniTask AddNewObjectAsync(this INavigationSheet navigationSheet, string key, IResourceProvider resourceProvider, NavigationContext context, CancellationToken cancellationToken = default)
47-
{
48-
var resource = await resourceProvider.LoadAsync<UnityEngine.Object>(key, cancellationToken);
37+
if (loadAsync)
38+
{
39+
resource = await resourceProvider.LoadAsync<UnityEngine.Object>(key, cancellationToken);
40+
}
41+
else
42+
{
43+
cancellationToken.ThrowIfCancellationRequested();
44+
resource = resourceProvider.Load<UnityEngine.Object>(key);
45+
}
4946

5047
var instance = UnityEngine.Object.Instantiate(resource);
5148
if (!TryGetComponent<IPage>(instance, out var page)) throw new Exception(); // TODO:

src/NavStack/Assets/NavStack/Runtime/NavigationStackExtensions.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,26 @@ public static UniTask PushNewObjectAsync<T>(this INavigationStack navigationStac
4343

4444
public static UniTask PushNewObjectAsync(this INavigationStack navigationStack, string key, CancellationToken cancellationToken = default)
4545
{
46-
return PushNewObjectAsync(navigationStack, key, ResourceProvider.DefaultResourceProvider, cancellationToken);
46+
return PushNewObjectAsync(navigationStack, key, new NavigationContext(), cancellationToken: cancellationToken);
4747
}
4848

49-
public static UniTask PushNewObjectAsync(this INavigationStack navigationStack, string key, NavigationContext context, CancellationToken cancellationToken = default)
50-
{
51-
return PushNewObjectAsync(navigationStack, key, ResourceProvider.DefaultResourceProvider, context, cancellationToken);
52-
}
53-
54-
public static UniTask PushNewObjectAsync(this INavigationStack navigationStack, string key, IResourceProvider resourceProvider, CancellationToken cancellationToken = default)
55-
{
56-
var context = new NavigationContext();
57-
return PushNewObjectAsync(navigationStack, key, resourceProvider, context, cancellationToken);
58-
}
59-
60-
public static UniTask PushNewObjectAsync(this INavigationStack navigationStack, string key, IResourceProvider resourceProvider, NavigationContext context, CancellationToken cancellationToken = default)
49+
public static UniTask PushNewObjectAsync(this INavigationStack navigationStack, string key, NavigationContext context, IResourceProvider resourceProvider = null, bool loadAsync = true, CancellationToken cancellationToken = default)
6150
{
6251
return navigationStack.PushAsync(async () =>
6352
{
64-
var resource = await resourceProvider.LoadAsync<UnityEngine.Object>(key, cancellationToken);
53+
resourceProvider ??= ResourceProvider.DefaultResourceProvider;
54+
55+
UnityEngine.Object resource;
56+
57+
if (loadAsync)
58+
{
59+
resource = await resourceProvider.LoadAsync<UnityEngine.Object>(key, cancellationToken);
60+
}
61+
else
62+
{
63+
cancellationToken.ThrowIfCancellationRequested();
64+
resource = resourceProvider.Load<UnityEngine.Object>(key);
65+
}
6566

6667
var instance = UnityEngine.Object.Instantiate(resource);
6768
if (!TryGetComponent<IPage>(instance, out var page)) throw new Exception(); // TODO:

src/NavStack/Assets/Sandbox/Sandbox.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ void Update()
3636
{
3737
var context = new NavigationContext();
3838
context.Parameters["id"] = "user" + Random.Range(0, 100);
39-
navigation.PushNewObjectAsync("SamplePage1", ResourceProvider.Addressables, context, destroyCancellationToken).Forget();
39+
navigation.PushNewObjectAsync("SamplePage1", context, ResourceProvider.Addressables, false, destroyCancellationToken).Forget();
40+
Debug.Break();
4041
}
4142

4243
if (Input.GetKeyDown(KeyCode.Backspace))

0 commit comments

Comments
 (0)