Skip to content

Commit c25c221

Browse files
committed
Fix save logic on mobile devices.
1 parent eb28226 commit c25c221

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

samples/Unity.Mvvm.ToDoList/Assets/Scripts/Services/DataStoreService.cs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
using System.Collections.ObjectModel;
1+
using System.Collections.Generic;
22
using System.Collections.Specialized;
33
using System.IO;
4+
using System.Linq;
45
using System.Xml.Serialization;
56
using Cysharp.Threading.Tasks;
67
using Interfaces;
@@ -19,13 +20,13 @@ public class DataStoreService : IDataStoreService
1920
private readonly string _dataFilePath;
2021

2122
private AsyncLazy _saveDataTask;
22-
private AsyncLazy<Collection<TaskItemData>> _loadDataTask;
23+
private AsyncLazy<TaskItemData[]> _loadDataTask;
2324

2425
public DataStoreService(IAppContext appContext)
2526
{
2627
_mainViewModel = appContext.Resolve<MainViewModel>();
2728
_dataFilePath = Path.Combine(Application.persistentDataPath, DataFileName);
28-
_serializer = new XmlSerializer(typeof(Collection<TaskItemData>));
29+
_serializer = new XmlSerializer(typeof(TaskItemData[]));
2930
}
3031

3132
public async void Enable()
@@ -66,7 +67,7 @@ private async UniTask SaveDataAsync()
6667
await _saveDataTask;
6768
}
6869

69-
private async UniTask<Collection<TaskItemData>> LoadDataAsync()
70+
private async UniTask<TaskItemData[]> LoadDataAsync()
7071
{
7172
if (_loadDataTask?.Task.Status.IsCompleted() ?? true)
7273
{
@@ -76,32 +77,38 @@ private async UniTask<Collection<TaskItemData>> LoadDataAsync()
7677
return await _loadDataTask;
7778
}
7879

79-
private async UniTask SaveDataAsync(string filePath, Collection<TaskItemData> taskItems)
80+
private async UniTask SaveDataAsync(string filePath, IEnumerable<TaskItemData> taskItems)
8081
{
8182
await using var writeStream = File.Create(filePath);
82-
_serializer.Serialize(writeStream, taskItems);
83+
_serializer.Serialize(writeStream, taskItems.ToArray());
8384
}
8485

85-
private async UniTask<Collection<TaskItemData>> LoadDataAsync(string filePath)
86+
private async UniTask<TaskItemData[]> LoadDataAsync(string filePath)
8687
{
8788
if (File.Exists(filePath) == false)
8889
{
8990
return GetDefaultDataSet();
9091
}
9192

9293
await using var readStream = File.OpenRead(filePath);
93-
return (Collection<TaskItemData>) _serializer.Deserialize(readStream);
94+
return (TaskItemData[]) _serializer.Deserialize(readStream);
9495
}
9596

96-
private Collection<TaskItemData> GetDefaultDataSet()
97+
private TaskItemData[] GetDefaultDataSet()
9798
{
98-
return new Collection<TaskItemData>
99+
return new TaskItemData[]
99100
{
100101
new() { Name = "Add UnitTests" },
101-
new() { Name = "Create UGUI ListView" },
102-
new() { Name = "Write an article" },
103-
new() { Name = "Add UI Toolkit ListView" },
104-
new() { Name = "Fix Command bindings" }
102+
new() { Name = "Add UGUI ListView" },
103+
new() { Name = "Add UI Toolkit ListView", IsDone = true },
104+
new() { Name = "Provide Custom Binding String Parser" },
105+
new() { Name = "Publish to OpenUPM" },
106+
new() { Name = "Fix Command Binding Issue", IsDone = true },
107+
new() { Name = "Add AsyncCommand", IsDone = true },
108+
new() { Name = "Add AsyncLazyCommand", IsDone = true },
109+
new() { Name = "Add Counter Sample", IsDone = true },
110+
new() { Name = "Add Calculator Sample", IsDone = true },
111+
new() { Name = "Add ToDoList Sample", IsDone = true }
105112
};
106113
}
107114
}

0 commit comments

Comments
 (0)