@@ -26,21 +26,27 @@ public class IterableInAppFileStorage implements IterableInAppStorage, IterableI
26
26
private static final String FOLDER_PATH = "IterableInAppFileStorage" ;
27
27
private static final String INDEX_FILE = "index.html" ;
28
28
private static final int OPERATION_SAVE = 100 ;
29
+
29
30
private final Context context ;
31
+
30
32
private Map <String , IterableInAppMessage > messages =
31
33
Collections .synchronizedMap (new LinkedHashMap <String , IterableInAppMessage >());
32
34
33
35
private final HandlerThread fileOperationThread = new HandlerThread ("FileOperationThread" );
36
+
34
37
@ VisibleForTesting
35
38
FileOperationHandler fileOperationHandler ;
36
39
37
40
IterableInAppFileStorage (Context context ) {
38
41
this .context = context ;
42
+
39
43
fileOperationThread .start ();
40
44
fileOperationHandler = new FileOperationHandler (fileOperationThread .getLooper ());
45
+
41
46
load ();
42
47
}
43
48
49
+ //region IterableInAppStorage interface implementation
44
50
@ NonNull
45
51
@ Override
46
52
public synchronized List <IterableInAppMessage > getMessages () {
@@ -68,6 +74,45 @@ public synchronized void removeMessage(@NonNull IterableInAppMessage message) {
68
74
saveMessagesInBackground ();
69
75
}
70
76
77
+ @ Override
78
+ public void saveHTML (@ NonNull String messageID , @ NonNull String contentHTML ) {
79
+ File folder = createFolderForMessage (messageID );
80
+ if (folder == null ) {
81
+ IterableLogger .e (TAG , "Failed to create folder for HTML content" );
82
+ return ;
83
+ }
84
+
85
+ File file = new File (folder , INDEX_FILE );
86
+ boolean result = IterableUtil .writeFile (file , contentHTML );
87
+ if (!result ) {
88
+ IterableLogger .e (TAG , "Failed to store HTML content" );
89
+ }
90
+ }
91
+
92
+ @ Nullable
93
+ @ Override
94
+ public String getHTML (@ NonNull String messageID ) {
95
+ File file = getFileForContent (messageID );
96
+ return IterableUtil .readFile (file );
97
+ }
98
+
99
+ @ Override
100
+ public void removeHTML (@ NonNull String messageID ) {
101
+ File folder = getFolderForMessage (messageID );
102
+
103
+ File [] files = folder .listFiles ();
104
+ if (files == null ) {
105
+ return ;
106
+ }
107
+
108
+ for (File file : files ) {
109
+ file .delete ();
110
+ }
111
+ folder .delete ();
112
+ }
113
+ //endregion
114
+
115
+ //region In-App Lifecycle
71
116
@ Override
72
117
public void onInAppMessageChanged (@ NonNull IterableInAppMessage message ) {
73
118
saveMessagesInBackground ();
@@ -80,7 +125,9 @@ private synchronized void clearMessages() {
80
125
}
81
126
messages .clear ();
82
127
}
128
+ //endregion
83
129
130
+ //region JSON Parsing
84
131
@ NonNull
85
132
private JSONObject serializeMessages () {
86
133
JSONObject jsonData = new JSONObject ();
@@ -116,15 +163,9 @@ private void loadMessagesFromJson(JSONObject jsonData) {
116
163
}
117
164
}
118
165
}
166
+ //endregion
119
167
120
- private File getInAppStorageFile () {
121
- return new File (getInAppContentFolder (), "itbl_inapp.json" );
122
- }
123
-
124
- private File getInAppCacheStorageFile () {
125
- return new File (IterableUtil .getSdkCacheDir (context ), "itbl_inapp.json" );
126
- }
127
-
168
+ //region File Saving/Loading
128
169
private void load () {
129
170
try {
130
171
File inAppStorageFile = getInAppStorageFile ();
@@ -169,20 +210,15 @@ private synchronized void saveMetadata() {
169
210
IterableLogger .e (TAG , "Error while saving in-app messages to file" , e );
170
211
}
171
212
}
213
+ //endregion
172
214
173
- @ Override
174
- public void saveHTML (@ NonNull String messageID , @ NonNull String contentHTML ) {
175
- File folder = createFolderForMessage (messageID );
176
- if (folder == null ) {
177
- IterableLogger .e (TAG , "Failed to create folder for HTML content" );
178
- return ;
179
- }
215
+ //region File Management
216
+ private File getInAppStorageFile () {
217
+ return new File (getInAppContentFolder (), "itbl_inapp.json" );
218
+ }
180
219
181
- File file = new File (folder , INDEX_FILE );
182
- boolean result = IterableUtil .writeFile (file , contentHTML );
183
- if (!result ) {
184
- IterableLogger .e (TAG , "Failed to store HTML content" );
185
- }
220
+ private File getInAppCacheStorageFile () {
221
+ return new File (IterableUtil .getSdkCacheDir (context ), "itbl_inapp.json" );
186
222
}
187
223
188
224
@ Nullable
@@ -217,28 +253,7 @@ private File getFileForContent(String messageID) {
217
253
File folder = getFolderForMessage (messageID );
218
254
return new File (folder , INDEX_FILE );
219
255
}
220
-
221
- @ Nullable
222
- @ Override
223
- public String getHTML (@ NonNull String messageID ) {
224
- File file = getFileForContent (messageID );
225
- return IterableUtil .readFile (file );
226
- }
227
-
228
- @ Override
229
- public void removeHTML (@ NonNull String messageID ) {
230
- File folder = getFolderForMessage (messageID );
231
-
232
- File [] files = folder .listFiles ();
233
- if (files == null ) {
234
- return ;
235
- }
236
-
237
- for (File file : files ) {
238
- file .delete ();
239
- }
240
- folder .delete ();
241
- }
256
+ //endregion
242
257
243
258
class FileOperationHandler extends Handler {
244
259
FileOperationHandler (Looper threadLooper ) {
0 commit comments