1- using ClipboardCanvas . Enums ;
1+ using Newtonsoft . Json ;
2+ using System . IO ;
3+ using System . Threading . Tasks ;
4+ using Windows . Storage ;
5+
6+ using ClipboardCanvas . Enums ;
27using ClipboardCanvas . Exceptions ;
38using ClipboardCanvas . Helpers . Filesystem ;
49using ClipboardCanvas . Helpers . SafetyHelpers ;
5- using Newtonsoft . Json ;
610using System ;
7- using System . IO ;
8- using System . Threading . Tasks ;
9- using Windows . Storage ;
1011
1112namespace ClipboardCanvas . ReferenceItems
1213{
@@ -17,47 +18,46 @@ public sealed class ReferenceFile
1718 {
1819 private readonly StorageFile _innerReferenceFile ;
1920
21+ private ReferenceFileData _referenceFileData ;
22+
2023 public SafeWrapperResult LastError { get ; private set ; } = SafeWrapperResult . SUCCESS ;
2124
2225 public IStorageItem ReferencedItem { get ; private set ; }
2326
24- public ReferenceFileData ReferenceFileData { get ; private set ; }
25-
2627 private ReferenceFile ( StorageFile innerFile , IStorageItem referencedItem )
2728 {
2829 this . _innerReferenceFile = innerFile ;
2930 this . ReferencedItem = referencedItem ;
3031 }
3132
32- public async Task < SafeWrapperResult > UpdateReference ( ReferenceFileData referenceFileData )
33+ public async Task < SafeWrapperResult > UpdateReference ( string newPath )
3334 {
34- string serialized = JsonConvert . SerializeObject ( referenceFileData , Formatting . Indented ) ;
35- SafeWrapperResult result = await FilesystemOperations . WriteFileText ( _innerReferenceFile , serialized ) ;
35+ _referenceFileData = new ReferenceFileData ( newPath ) ;
36+ string serialized = JsonConvert . SerializeObject ( _referenceFileData , Formatting . Indented ) ;
3637
37- return result ;
38+ return await FilesystemOperations . WriteFileText ( _innerReferenceFile , serialized ) ;
3839 }
3940
4041 private static async Task < SafeWrapper < ReferenceFileData > > ReadData ( StorageFile referenceFile )
4142 {
4243 SafeWrapper < string > data = await FilesystemOperations . ReadFileText ( referenceFile ) ;
43-
4444 if ( ! data )
4545 {
46- return new SafeWrapper < ReferenceFileData > ( null , data . Details ) ;
46+ return ( null , data . Details ) ;
4747 }
4848
4949 ReferenceFileData referenceFileData = JsonConvert . DeserializeObject < ReferenceFileData > ( data ) ;
50-
51- return new SafeWrapper < ReferenceFileData > ( referenceFileData , SafeWrapperResult . SUCCESS ) ;
50+ return ( referenceFileData , SafeWrapperResult . SUCCESS ) ;
5251 }
5352
54- public static async Task < ReferenceFile > GetFile ( StorageFile referenceFile )
53+ public static async Task < ReferenceFile > GetReferenceFile ( StorageFile referenceFile )
5554 {
5655 // The file is not a Reference File
5756 if ( ! IsReferenceFile ( referenceFile ) )
5857 {
5958 return null ;
6059 }
60+
6161 // The file does not exist
6262 if ( ! StorageHelpers . Existsh ( referenceFile . Path ) )
6363 {
@@ -74,13 +74,20 @@ public static async Task<ReferenceFile> GetFile(StorageFile referenceFile)
7474
7575 private static async Task < ReferenceFile > GetFile ( StorageFile referenceFile , SafeWrapper < ReferenceFileData > referenceFileData )
7676 {
77- if ( ! referenceFileData || string . IsNullOrEmpty ( referenceFileData . Result ? . path ) )
77+ if ( ! referenceFileData )
7878 {
7979 return new ReferenceFile ( referenceFile , null )
8080 {
8181 LastError = referenceFileData
8282 } ;
8383 }
84+ else if ( string . IsNullOrEmpty ( referenceFileData ? . Result ? . path ) )
85+ {
86+ return new ReferenceFile ( referenceFile , null )
87+ {
88+ LastError = new SafeWrapperResult ( OperationErrorCode . InvalidArgument , new NullReferenceException ( ) , "Reference File path is null." )
89+ } ;
90+ }
8491
8592 SafeWrapper < IStorageItem > file = await StorageHelpers . ToStorageItemWithError < IStorageItem > ( referenceFileData . Result . path ) ;
8693
@@ -98,12 +105,15 @@ private static async Task<ReferenceFile> GetFile(StorageFile referenceFile, Safe
98105 {
99106 return new ReferenceFile ( referenceFile , null )
100107 {
101- LastError = ( SafeWrapperResult ) file
108+ LastError = file
102109 } ;
103110 }
104111 }
105112
106- return new ReferenceFile ( referenceFile , file . Result ) ;
113+ return new ReferenceFile ( referenceFile , file . Result )
114+ {
115+ _referenceFileData = referenceFileData . Result
116+ } ;
107117 }
108118
109119 public static bool IsReferenceFile ( StorageFile file )
0 commit comments