update libs
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using AssetStoreTools.Previews.Data;
|
||||
using AssetStoreTools.Utility;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace AssetStoreTools.Previews.Services
|
||||
{
|
||||
internal class CachingService : ICachingService
|
||||
{
|
||||
public void CacheMetadata(IEnumerable<PreviewMetadata> previews)
|
||||
{
|
||||
var updatedDatabase = UpdatePreviewDatabase(previews);
|
||||
|
||||
var serializerSettings = new JsonSerializerSettings()
|
||||
{
|
||||
ContractResolver = PreviewDatabaseContractResolver.Instance,
|
||||
Converters = new List<JsonConverter>() { new StringEnumConverter() },
|
||||
Formatting = Formatting.Indented
|
||||
};
|
||||
|
||||
CacheUtil.CreateFileInTempCache(Constants.Previews.PreviewDatabaseFile, JsonConvert.SerializeObject(updatedDatabase, serializerSettings), true);
|
||||
}
|
||||
|
||||
public bool GetCachedMetadata(out PreviewDatabase previewDatabase)
|
||||
{
|
||||
previewDatabase = null;
|
||||
if (!CacheUtil.GetFileFromTempCache(Constants.Previews.PreviewDatabaseFile, out string filePath))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
var serializerSettings = new JsonSerializerSettings()
|
||||
{
|
||||
ContractResolver = PreviewDatabaseContractResolver.Instance,
|
||||
Converters = new List<JsonConverter>() { new StringEnumConverter() }
|
||||
};
|
||||
|
||||
previewDatabase = JsonConvert.DeserializeObject<PreviewDatabase>(File.ReadAllText(filePath, Encoding.UTF8), serializerSettings);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private PreviewDatabase UpdatePreviewDatabase(IEnumerable<PreviewMetadata> previews)
|
||||
{
|
||||
PreviewDatabase database;
|
||||
if (!GetCachedMetadata(out database))
|
||||
database = new PreviewDatabase();
|
||||
|
||||
// Delete missing previews
|
||||
for (int i = database.Previews.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (database.Previews[i].Exists())
|
||||
continue;
|
||||
|
||||
database.Previews.RemoveAt(i);
|
||||
}
|
||||
|
||||
// Append new previews & Replace existing previews
|
||||
foreach (var preview in previews)
|
||||
{
|
||||
var matchingPreviews = database.Previews.Where(x => x.Guid == preview.Guid).ToList();
|
||||
foreach (var matchingPreview in matchingPreviews)
|
||||
{
|
||||
// Delete previously generated preview of the same type
|
||||
if (matchingPreview.Type == preview.Type)
|
||||
database.Previews.Remove(matchingPreview);
|
||||
// Delete previously generated preview of a different type if the path matches
|
||||
else if (matchingPreview.Path.Equals(preview.Path))
|
||||
database.Previews.Remove(matchingPreview);
|
||||
}
|
||||
|
||||
database.Previews.Add(preview);
|
||||
}
|
||||
|
||||
database.Previews = database.Previews.OrderBy(x => x.Guid).ThenBy(x => x.Type).ToList();
|
||||
return database;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e0b6cf909c8798b4590744959571a21f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 12.0.1
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Previews/Scripts/Services/Caching/CachingService.cs
|
||||
uploadId: 724584
|
||||
@@ -0,0 +1,11 @@
|
||||
using AssetStoreTools.Previews.Data;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssetStoreTools.Previews.Services
|
||||
{
|
||||
internal interface ICachingService : IPreviewService
|
||||
{
|
||||
void CacheMetadata(IEnumerable<PreviewMetadata> previews);
|
||||
bool GetCachedMetadata(out PreviewDatabase previewDatabase);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eeaeae010299dcd489adb00dbf51b274
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 12.0.1
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Previews/Scripts/Services/Caching/ICachingService.cs
|
||||
uploadId: 724584
|
||||
Reference in New Issue
Block a user