Skip to content

Commit 08632c7

Browse files
Fix Firebase Database nullable value handling (#167)
1 parent 078137e commit 08632c7

1 file changed

Lines changed: 61 additions & 27 deletions

File tree

source/Firebase/Database/Extension.cs

Lines changed: 61 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ public void SetValue<T> (T value) where T : NSObject
1414

1515
public void SetValues (NSObject [] values)
1616
{
17-
if (values == null)
17+
if (values == null) {
1818
_SetValue (null);
19+
return;
20+
}
1921

2022
var nsArray = VerifyArray (values);
2123

@@ -24,8 +26,10 @@ public void SetValues (NSObject [] values)
2426

2527
public void SetValues<T> (T [] values) where T : NSObject
2628
{
27-
if (values == null)
29+
if (values == null) {
2830
_SetValue (null);
31+
return;
32+
}
2933

3034
var nsArray = VerifyArray (values);
3135

@@ -48,8 +52,10 @@ public void SetValues (NSObject [] values, DatabaseReferenceCompletionHandler co
4852
if (completionHandler == null)
4953
throw new ArgumentNullException (nameof (completionHandler));
5054

51-
if (values == null)
55+
if (values == null) {
5256
_SetValue (null, completionHandler);
57+
return;
58+
}
5359

5460
var nsArray = VerifyArray (values);
5561

@@ -66,8 +72,10 @@ public void SetValue<T> (T value, NSObject priority) where T : NSObject
6672

6773
public void SetValues (NSObject [] values, NSObject priority)
6874
{
69-
if (values == null)
75+
if (values == null) {
7076
_SetValue (null, priority);
77+
return;
78+
}
7179

7280
var nsArray = VerifyArray (values);
7381

@@ -76,8 +84,10 @@ public void SetValues (NSObject [] values, NSObject priority)
7684

7785
public void SetValues<T> (T [] values, NSObject priority) where T : NSObject
7886
{
79-
if (values == null)
87+
if (values == null) {
8088
_SetValue (null, priority);
89+
return;
90+
}
8191

8292
var nsArray = VerifyArray (values);
8393

@@ -100,8 +110,10 @@ public void SetValues (NSObject [] values, NSObject priority, DatabaseReferenceC
100110
if (completionHandler == null)
101111
throw new ArgumentNullException (nameof (completionHandler));
102112

103-
if (values == null)
104-
_SetValue (null, priority);
113+
if (values == null) {
114+
_SetValue (null, priority, completionHandler);
115+
return;
116+
}
105117

106118
var nsArray = VerifyArray (values);
107119

@@ -113,8 +125,10 @@ public void SetValues<T> (T [] values, NSObject priority, DatabaseReferenceCompl
113125
if (completionHandler == null)
114126
throw new ArgumentNullException (nameof (completionHandler));
115127

116-
if (values == null)
117-
_SetValue (null, priority);
128+
if (values == null) {
129+
_SetValue (null, priority, completionHandler);
130+
return;
131+
}
118132

119133
var nsArray = VerifyArray (values);
120134

@@ -131,8 +145,10 @@ public void SetValueOnDisconnect<T> (T value) where T : NSObject
131145

132146
public void SetValuesOnDisconnect (NSObject [] values)
133147
{
134-
if (values == null)
148+
if (values == null) {
135149
_SetValueOnDisconnect (null);
150+
return;
151+
}
136152

137153
var nsArray = VerifyArray (values);
138154

@@ -141,8 +157,10 @@ public void SetValuesOnDisconnect (NSObject [] values)
141157

142158
public void SetValuesOnDisconnect<T> (T [] values) where T : NSObject
143159
{
144-
if (values == null)
160+
if (values == null) {
145161
_SetValueOnDisconnect (null);
162+
return;
163+
}
146164

147165
var nsArray = VerifyArray (values);
148166

@@ -165,8 +183,10 @@ public void SetValuesOnDisconnect (NSObject [] values, DatabaseReferenceCompleti
165183
if (completionHandler == null)
166184
throw new ArgumentNullException (nameof (completionHandler));
167185

168-
if (values == null)
186+
if (values == null) {
169187
_SetValueOnDisconnect (null, completionHandler);
188+
return;
189+
}
170190

171191
var nsArray = VerifyArray (values);
172192

@@ -178,8 +198,10 @@ public void SetValuesOnDisconnect<T> (T [] values, DatabaseReferenceCompletionHa
178198
if (completionHandler == null)
179199
throw new ArgumentNullException (nameof (completionHandler));
180200

181-
if (values == null)
201+
if (values == null) {
182202
_SetValueOnDisconnect (null, completionHandler);
203+
return;
204+
}
183205

184206
var nsArray = VerifyArray (values);
185207

@@ -202,8 +224,10 @@ public void SetValuesOnDisconnect (NSObject [] values, NSObject priority)
202224
if (priority == null)
203225
throw new ArgumentNullException (nameof (priority));
204226

205-
if (values == null)
227+
if (values == null) {
206228
_SetValueOnDisconnect (null, priority);
229+
return;
230+
}
207231

208232
var nsArray = VerifyArray (values);
209233

@@ -215,8 +239,10 @@ public void SetValuesOnDisconnect<T> (T [] values, NSObject priority) where T :
215239
if (priority == null)
216240
throw new ArgumentNullException (nameof (priority));
217241

218-
if (values == null)
242+
if (values == null) {
219243
_SetValueOnDisconnect (null, priority);
244+
return;
245+
}
220246

221247
var nsArray = VerifyArray (values);
222248

@@ -239,8 +265,10 @@ public void SetValuesOnDisconnect (NSObject [] values, NSObject priority, Databa
239265
if (completionHandler == null)
240266
throw new ArgumentNullException (nameof (completionHandler));
241267

242-
if (values == null)
268+
if (values == null) {
243269
_SetValueOnDisconnect (null, priority, completionHandler);
270+
return;
271+
}
244272

245273
var nsArray = VerifyArray (values);
246274

@@ -252,8 +280,10 @@ public void SetValuesOnDisconnect<T> (T [] values, NSObject priority, DatabaseRe
252280
if (completionHandler == null)
253281
throw new ArgumentNullException (nameof (completionHandler));
254282

255-
if (values == null)
283+
if (values == null) {
256284
_SetValueOnDisconnect (null, priority, completionHandler);
285+
return;
286+
}
257287

258288
var nsArray = VerifyArray (values);
259289

@@ -284,7 +314,7 @@ NSArray VerifyArray<T> (T [] values) where T : NSObject
284314

285315
public partial class DataSnapshot
286316
{
287-
public NSObject GetValue ()
317+
public NSObject? GetValue ()
288318
{
289319
var ret = _Value;
290320
if (ret == IntPtr.Zero)
@@ -294,7 +324,7 @@ public NSObject GetValue ()
294324
return nsObject;
295325
}
296326

297-
public T GetValue<T> () where T : NSObject
327+
public T? GetValue<T> () where T : NSObject
298328
{
299329
var ret = _Value;
300330
if (ret == IntPtr.Zero)
@@ -304,7 +334,7 @@ public T GetValue<T> () where T : NSObject
304334
return nsObject;
305335
}
306336

307-
public NSObject [] GetValues ()
337+
public NSObject []? GetValues ()
308338
{
309339
var ret = _Value;
310340
if (ret == IntPtr.Zero)
@@ -314,7 +344,7 @@ public NSObject [] GetValues ()
314344
return objects;
315345
}
316346

317-
public T [] GetValues<T> () where T : NSObject
347+
public T []? GetValues<T> () where T : NSObject
318348
{
319349
var ret = _Value;
320350
if (ret == IntPtr.Zero)
@@ -327,7 +357,7 @@ public T [] GetValues<T> () where T : NSObject
327357

328358
public partial class MutableData
329359
{
330-
public NSObject GetValue ()
360+
public NSObject? GetValue ()
331361
{
332362
var ret = _Value;
333363
if (ret == IntPtr.Zero)
@@ -337,7 +367,7 @@ public NSObject GetValue ()
337367
return nsObject;
338368
}
339369

340-
public T GetValue<T> () where T : NSObject
370+
public T? GetValue<T> () where T : NSObject
341371
{
342372
var ret = _Value;
343373
if (ret == IntPtr.Zero)
@@ -347,7 +377,7 @@ public T GetValue<T> () where T : NSObject
347377
return nsObject;
348378
}
349379

350-
public NSObject [] GetValues ()
380+
public NSObject []? GetValues ()
351381
{
352382
var ret = _Value;
353383
if (ret == IntPtr.Zero)
@@ -357,7 +387,7 @@ public NSObject [] GetValues ()
357387
return objects;
358388
}
359389

360-
public T [] GetValues<T> () where T : NSObject
390+
public T []? GetValues<T> () where T : NSObject
361391
{
362392
var ret = _Value;
363393
if (ret == IntPtr.Zero)
@@ -377,8 +407,10 @@ public void SetValue<T> (T value) where T : NSObject
377407

378408
public void SetValues (NSObject [] values)
379409
{
380-
if (values == null)
410+
if (values == null) {
381411
_Value = IntPtr.Zero;
412+
return;
413+
}
382414

383415
var nsArray = VerifyArray (values);
384416

@@ -387,8 +419,10 @@ public void SetValues (NSObject [] values)
387419

388420
public void SetValues<T> (T [] values) where T : NSObject
389421
{
390-
if (values == null)
422+
if (values == null) {
391423
_Value = IntPtr.Zero;
424+
return;
425+
}
392426

393427
var nsArray = VerifyArray (values);
394428

0 commit comments

Comments
 (0)