Skip to content

Commit

Permalink
Merge pull request #18 from Goddchen/master
Browse files Browse the repository at this point in the history
0.1 release
  • Loading branch information
Goddchen authored Dec 6, 2016
2 parents 29845b0 + 999624f commit 5222ef5
Show file tree
Hide file tree
Showing 28 changed files with 350 additions and 35 deletions.
21 changes: 16 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ android:

# The SDK version used to compile your project
- android-25
- android-22

# Additional components
- extra-google-google_play_services
Expand All @@ -22,13 +23,23 @@ android:

# Specify at least one system image,
# if you need to run emulator(s) during your tests
# - sys-img-armeabi-v7a-android-22
- sys-img-armeabi-v7a-android-22
# - sys-img-x86-android-17
#- sys-img-armeabi-v7a-google_apis-24

before_script:
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &

script:
- cd library
- chmod u+x ./gradlew
- ./gradlew clean assemble test publishToMavenLocal
- cd ../sample
- chmod u+x ./gradlew
- ./gradlew clean assembleDebug
- ./gradlew clean assemble test connectedAndroidTest

after_success:
- if [ "$TRAVIS_BRANCH" == "release" ]; then
cd "$TRAVIS_BUILD_DIR"/library;
./gradlew bintrayUpload;
fi
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,35 @@
# RxFireDroid
Rx wrapper for the Firebase Android library
Rx wrapper for the Firebase Android library.

This is the first one that works with the RxJava 2!

[![Build Status](https://travis-ci.org/Goddchen/RxFireDroid.svg?branch=master)](https://travis-ci.org/Goddchen/RxFireDroid)

## Usage
dependencies {
compile 'de.goddchen.android:rxfiredroid:0.1'
}

## Samples
### Database
#### Single Read
RxFireDroidDatabase.getValues("users")
.subscribe(dataSnapshot -> { /* do something... */});
#### Observe
RxFireDroidDatabase.observeValues("users")
.subscribe(dataSnapshot -> { /* do something... */});
#### Delete
RxFireDroidDatabase.deleteValues("user/123")
.subscribe();
#### Set
RxFireDroidDatabase.setValue("user/123/name", "Goddchen")
.subscribe();
### Auth
#### Login (email, password)
RxFireDroidAuth.signIn("[email protected]", "password123")
.subscribe(
firebaseUser -> { /* do something... */},
throwable -> { /* handle error */});
## License
MIT
54 changes: 52 additions & 2 deletions library/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.bintray'

android {
compileSdkVersion 25
Expand All @@ -10,6 +11,7 @@ android {
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand All @@ -22,14 +24,15 @@ dependencies {
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
testCompile 'junit:junit:4.12'
}

android.libraryVariants
publishing {
publications {
maven(MavenPublication) {
artifact "${project.buildDir}/outputs/aar/${project.name}-release.aar"
artifact androidJavadocsJar
artifact androidSourcesJar
artifactId = 'rxfiredroid'
groupId = 'de.goddchen.android'
version = '0.1'
Expand All @@ -46,4 +49,51 @@ publishing {
}
}

apply plugin: 'com.google.gms.google-services'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}

artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}

bintray {
user = System.getenv("BINTRAY_USER")
key = System.getenv("BINTRAY_KEY")

publications = ['maven']

dryRun = false
publish = true
override = true

pkg {
repo = 'RxFireDroid'
name = 'RxFireDroid'
userOrg = 'goddchen2'
desc = 'Rx (Version 2!) wrapper for the Firebase Android library'
issueTrackerUrl = 'https://github.com/Goddchen/RxFireDroid/issues'
licenses = ['MIT']
vcsUrl = 'https://github.com/Goddchen/RxFireDroid.git'
websiteUrl = 'https://github.com/Goddchen/RxFireDroid'
labels = ['android', 'rxjava', 'rx', 'rxjava2']
publicDownloadNumbers = true
githubRepo = 'Goddchen/RxFireDroid'

version {
name = '0.1'
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,35 +22,55 @@ public class RxFireDroidAuth {
public static Single<FirebaseUser> signIn(String email, String password) {
return Single.<FirebaseUser>create(emitter ->
FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult().getUser()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
emitter.onError(task.getException());
} else {
emitter.onSuccess(task.getResult().getUser());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Single<FirebaseUser> signIn() {
return Single.<FirebaseUser>create(emitter ->
FirebaseAuth.getInstance().signInAnonymously()
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult().getUser()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
emitter.onError(task.getException());
} else {
emitter.onSuccess(task.getResult().getUser());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Single<FirebaseUser> signIn(AuthCredential authCredential) {
return Single.<FirebaseUser>create(emitter ->
FirebaseAuth.getInstance().signInWithCredential(authCredential)
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult().getUser()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
emitter.onError(task.getException());
} else {
emitter.onSuccess(task.getResult().getUser());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Single<FirebaseUser> signIn(String customToken) {
return Single.<FirebaseUser>create(emitter ->
FirebaseAuth.getInstance().signInWithCustomToken(customToken)
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult().getUser()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
emitter.onError(task.getException());
} else {
emitter.onSuccess(task.getResult().getUser());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
Expand All @@ -70,35 +90,55 @@ public static Maybe<FirebaseUser> getCurrentUser() {
public static Single<FirebaseUser> createUser(String email, String password) {
return Single.<FirebaseUser>create(emitter ->
FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult().getUser()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
emitter.onError(task.getException());
} else {
emitter.onSuccess(task.getResult().getUser());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Completable confirmPasswordReset(String code, String newPassword) {
return Completable.create(emitter ->
FirebaseAuth.getInstance().confirmPasswordReset(code, newPassword)
.addOnCompleteListener(task -> emitter.onComplete())
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
emitter.onComplete();
} else {
emitter.onError(task.getException());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Completable sendPasswordResetEmail(String email) {
return Completable.create(emitter ->
FirebaseAuth.getInstance().sendPasswordResetEmail(email)
.addOnCompleteListener(task -> emitter.onComplete())
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
emitter.onComplete();
} else {
emitter.onError(task.getException());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

public static Single<String> verifyPasswordResetCode(String code) {
return Single.<String>create(emitter ->
FirebaseAuth.getInstance().verifyPasswordResetCode(code)
.addOnCompleteListener(task -> emitter.onSuccess(task.getResult()))
.addOnFailureListener(emitter::onError))
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
emitter.onSuccess(task.getResult());
} else {
emitter.onError(task.getException());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
Expand All @@ -114,4 +154,18 @@ public static Observable<FirebaseAuth> observeAuthStateChanges() {
.observeOn(AndroidSchedulers.mainThread());
}

public static Completable deleteUser(FirebaseUser user) {
return Completable.create(emitter -> user.delete()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
emitter.onComplete();
} else {
emitter.onError(task
.getException());
}
}))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}

}
2 changes: 1 addition & 1 deletion library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ buildscript {
// in the individual module build.gradle files

classpath 'me.tatarka:gradle-retrolambda:3.4.0'

classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'
}
}

Expand Down
2 changes: 1 addition & 1 deletion library/settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1 @@
include ':app'
include ':app', ':tests'
1 change: 1 addition & 0 deletions library/tests/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
38 changes: 38 additions & 0 deletions library/tests/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"

defaultConfig {
applicationId "de.goddchen.android.rxfiredroid.tests"
minSdkVersion 9
targetSdkVersion 25
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support:support-annotations:25.0.1'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
compile project(':app')
}

apply plugin: 'com.google.gms.google-services'
Loading

0 comments on commit 5222ef5

Please sign in to comment.