Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5a735ab

Browse files
authored
Merge branch 'v3' into v3-transaction
2 parents 6ac8fda + 63fcf4b commit 5a735ab

File tree

15 files changed

+317
-82
lines changed

15 files changed

+317
-82
lines changed

‎android/src/main/java/io/fullstack/firestack/auth/FirestackAuth.java‎

Lines changed: 68 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import com.google.firebase.auth.UserProfileChangeRequest;
2626
import com.google.firebase.auth.FacebookAuthProvider;
2727
import com.google.firebase.auth.FirebaseAuth;
28+
import com.google.firebase.auth.FirebaseAuthException;
2829
import com.google.firebase.auth.FirebaseUser;
2930
import com.google.firebase.auth.GetTokenResult;
3031
import com.google.firebase.auth.GoogleAuthProvider;
32+
import com.google.firebase.auth.EmailAuthProvider;
33+
3134

3235
import io.fullstack.firestack.Utils;
3336

@@ -50,7 +53,7 @@ public FirestackAuth(ReactApplicationContext reactContext) {
5053
mReactContext = reactContext;
5154
mAuth = FirebaseAuth.getInstance();
5255

53-
Log.d(TAG, "New FirestackAuth instance");
56+
Log.d(TAG, "New FirestackAuth instance");
5457
}
5558

5659
@Override
@@ -165,6 +168,43 @@ public void signInWithProvider(final String provider, final String authToken, fi
165168
Utils.todoNote(TAG, "signInWithProvider", callback);
166169
}
167170

171+
@ReactMethod
172+
public void linkPassword(final String email, final String password, final Callback callback) {
173+
FirebaseUser user = mAuth.getCurrentUser();
174+
175+
if (user != null) {
176+
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
177+
user
178+
.linkWithCredential(credential)
179+
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
180+
@Override
181+
public void onComplete(@NonNull Task<AuthResult> task) {
182+
try {
183+
if (task.isSuccessful()) {
184+
Log.d(TAG, "user linked with password credential");
185+
userCallback(mAuth.getCurrentUser(), callback);
186+
} else {
187+
userErrorCallback(task, callback);
188+
}
189+
} catch (Exception ex) {
190+
userExceptionCallback(ex, callback);
191+
}
192+
}
193+
});
194+
} else {
195+
callbackNoUser(callback, true);
196+
}
197+
}
198+
199+
@ReactMethod
200+
public void link(final String provider, final String authToken, final String authSecret, final Callback callback) {
201+
if (provider.equals("password")) {
202+
linkPassword(authToken, authSecret, callback);
203+
} else
204+
// TODO other providers
205+
Utils.todoNote(TAG, "linkWithProvider", callback);
206+
}
207+
168208
@ReactMethod
169209
public void signInAnonymously(final Callback callback) {
170210
Log.d(TAG, "signInAnonymously:called:");
@@ -435,9 +475,32 @@ public void signOut(final Callback callback) {
435475
callback.invoke(null, resp);
436476
}
437477

478+
@ReactMethod
479+
public void reloadUser(final Callback callback) {
480+
FirebaseUser user = mAuth.getCurrentUser();
481+
482+
if (user == null) {
483+
callbackNoUser(callback, false);
484+
} else {
485+
user.reload()
486+
.addOnCompleteListener(new OnCompleteListener<Void>() {
487+
@Override
488+
public void onComplete(@NonNull Task<Void> task) {
489+
if (task.isSuccessful()) {
490+
Log.d(TAG, "user reloaded");
491+
userCallback(mAuth.getCurrentUser(), callback);
492+
} else {
493+
userErrorCallback(task, callback);
494+
}
495+
}
496+
});
497+
}
498+
}
499+
438500
@ReactMethod
439501
public void getCurrentUser(final Callback callback) {
440502
FirebaseUser user = mAuth.getCurrentUser();
503+
441504
if (user == null) {
442505
callbackNoUser(callback, false);
443506
} else {
@@ -513,19 +576,15 @@ public void onComplete(@NonNull Task<GetTokenResult> task) {
513576

514577
private void userErrorCallback(Task task, final Callback onFail) {
515578
WritableMap error = Arguments.createMap();
516-
error.putInt("errorCode", task.getException().hashCode());
517-
error.putString("errorMessage", task.getException().getMessage());
518-
error.putString("allErrorMessage", task.getException().toString());
519-
579+
error.putString("code", ((FirebaseAuthException) task.getException()).getErrorCode());
580+
error.putString("message", task.getException().getMessage());
520581
onFail.invoke(error);
521582
}
522583

523584
private void userExceptionCallback(Exception ex, final Callback onFail) {
524585
WritableMap error = Arguments.createMap();
525-
error.putInt("errorCode", ex.hashCode());
526-
error.putString("errorMessage", ex.getMessage());
527-
error.putString("allErrorMessage", ex.toString());
528-
586+
error.putInt("code", ex.hashCode());
587+
error.putString("message", ex.getMessage());
529588
onFail.invoke(error);
530589
}
531590

‎android/src/main/java/io/fullstack/firestack/database/FirestackDatabaseReference.java‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
6868

6969
@Override
7070
public void onCancelled(DatabaseError error) {
71-
handleDatabaseError(eventName, error);
71+
handleDatabaseError(error);
7272
}
7373
};
7474
mQuery.addChildEventListener(mEventListener);
@@ -90,7 +90,7 @@ public void onDataChange(DataSnapshot dataSnapshot) {
9090

9191
@Override
9292
public void onCancelled(DatabaseError error) {
93-
handleDatabaseError("value", error);
93+
handleDatabaseError(error);
9494
}
9595
};
9696
mQuery.addValueEventListener(mValueListener);
@@ -162,22 +162,22 @@ private void handleDatabaseEvent(final String name, final DataSnapshot dataSnaps
162162
WritableMap data = Utils.dataSnapshotToMap(name, mPath, mModifiersString, dataSnapshot);
163163
WritableMap evt = Arguments.createMap();
164164
evt.putString("eventName", name);
165-
evt.putString("path", mPath);
166-
evt.putString("modifiersString", mModifiersString);
167165
evt.putMap("body", data);
168166

169167
Utils.sendEvent(mReactContext, "database_event", evt);
170168
}
171169

172-
private void handleDatabaseError(final Stringname, finalDatabaseError error) {
170+
private void handleDatabaseError(final DatabaseError error) {
173171
WritableMap err = Arguments.createMap();
172+
err.putString("eventName", "database_error");
173+
err.putString("path", mPath);
174+
err.putString("modifiersString", mModifiersString);
174175
err.putInt("errorCode", error.getCode());
175176
err.putString("errorDetails", error.getDetails());
176-
err.putString("description", error.getMessage());
177+
err.putString("msg", error.getMessage());
177178

178179
WritableMap evt = Arguments.createMap();
179-
evt.putString("eventName", name);
180-
evt.putString("path", mPath);
180+
evt.putString("eventName", "database_error");
181181
evt.putMap("body", err);
182182

183183
Utils.sendEvent(mReactContext, "database_error", evt);

‎android/src/main/java/io/fullstack/firestack/messaging/FirestackMessaging.java‎

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -165,31 +165,42 @@ public void unsubscribeFromTopic(String topic, final Callback callback) {
165165
}
166166
}
167167

168+
// String senderId, String messageId, String messageType,
168169
@ReactMethod
169-
public void send(String senderId, String messageId, String messageType, ReadableMap params, final Callback callback) {
170+
public void send(ReadableMap params, final Callback callback) {
171+
ReadableMap data = params.getMap("data");
170172
FirebaseMessaging fm = FirebaseMessaging.getInstance();
171-
RemoteMessage.Builder remoteMessage = new RemoteMessage.Builder(senderId);
172-
remoteMessage.setMessageId(messageId);
173-
remoteMessage.setMessageType(messageType);
174-
ReadableMapKeySetIterator iterator = params.keySetIterator();
173+
RemoteMessage.Builder remoteMessage = new RemoteMessage.Builder(params.getString("sender"));
174+
175+
remoteMessage.setMessageId(params.getString("id"));
176+
remoteMessage.setMessageType(params.getString("type"));
177+
178+
if (params.hasKey("ttl")) {
179+
remoteMessage.setTtl(params.getInt("ttl"));
180+
}
181+
182+
if (params.hasKey("collapseKey")) {
183+
remoteMessage.setCollapseKey(params.getString("collapseKey"));
184+
}
185+
186+
ReadableMapKeySetIterator iterator = data.keySetIterator();
175187

176188
while (iterator.hasNextKey()) {
177189
String key = iterator.nextKey();
178-
ReadableType type = params.getType(key);
190+
ReadableType type = data.getType(key);
179191
if (type == ReadableType.String) {
180-
remoteMessage.addData(key, params.getString(key));
181-
Log.d(TAG, "Firebase send: " + key);
182-
Log.d(TAG, "Firebase send: " + params.getString(key));
192+
remoteMessage.addData(key, data.getString(key));
183193
}
184194
}
185195

186196
try {
187197
fm.send(remoteMessage.build());
188198
WritableMap res = Arguments.createMap();
189199
res.putString("status", "success");
200+
Log.d(TAG, "send: Message sent");
190201
callback.invoke(null, res);
191202
} catch (Exception e) {
192-
Log.e(TAG, "Error sending message", e);
203+
Log.e(TAG, "send: error sending message", e);
193204
WritableMap error = Arguments.createMap();
194205
error.putString("code", e.toString());
195206
error.putString("message", e.toString());

‎docs/api/authentication.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ Sign in the user with a 3rd party credential provider. `credential` requires the
100100

101101
```javascript
102102
const credential = {
103-
provider: 'facebook.com',
103+
provider: 'facebook',
104104
token: '12345',
105105
secret: '6789',
106106
};
@@ -227,7 +227,7 @@ Refreshes the current user.
227227

228228
```javascript
229229
firestack.auth().currentUser
230-
.getToken()
230+
.reload()
231231
.then((user) => {})
232232
.catch();
233233
```

‎docs/api/storage‎

Lines changed: 0 additions & 1 deletion
This file was deleted.

‎docs/api/storage.md‎

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
2+
# Storage
3+
4+
Firestack mimics the [Web Firebase SDK Storage](https://firebase.google.com/docs/storage/web/start), whilst
5+
providing some iOS and Android specific functionality.
6+
7+
All Storage operations are accessed via `storage()`.
8+
9+
## Uploading files
10+
11+
### Simple
12+
13+
```javascript
14+
firestack.storage()
15+
.ref('/files/1234')
16+
.putFile('/path/to/file/1234')
17+
.then(uploadedFile => {
18+
//success
19+
})
20+
.catch(err => {
21+
//Error
22+
});
23+
```
24+
25+
### Listen to upload state
26+
27+
```javascript
28+
const unsubscribe = firestack.storage()
29+
.ref('/files/1234')
30+
.putFile('/path/to/file/1234')
31+
.on('state_changed', snapshot => {
32+
//Current upload state
33+
}, err => {
34+
//Error
35+
unsubscribe();
36+
}, uploadedFile => {
37+
//Success
38+
unsubscribe();
39+
});
40+
```
41+
42+
## Downloading files
43+
44+
### Simple
45+
46+
```javascript
47+
firestack.storage()
48+
.ref('/files/1234')
49+
.downloadFile('/path/to/save/file')
50+
.then(downloadedFile => {
51+
//success
52+
})
53+
.catch(err => {
54+
//Error
55+
});
56+
```
57+
58+
### Listen to download state
59+
60+
```javascript
61+
const unsubscribe = firestack.storage()
62+
.ref('/files/1234')
63+
.downloadFile('/path/to/save/file')
64+
.on('state_changed', snapshot => {
65+
//Current download state
66+
}, err => {
67+
//Error
68+
unsubscribe();
69+
}, downloadedFile => {
70+
//Success
71+
unsubscribe();
72+
});
73+
```
74+
75+
## TODO
76+
77+
There are a few methods which have not yet been implemented for Storage:
78+
79+
### Reference
80+
- put()
81+
- putString()
82+
83+
### UploadTask
84+
- cancel()
85+
- pause()
86+
- resume()
87+
88+
### DownloadTask
89+
- cancel()
90+
- pause()
91+
- resume()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /