Skip to content

Instantly share code, notes, and snippets.

View ralphpina's full-sized avatar

Ralph Pina ralphpina

  • Affirm
  • San Francisco, CA
View GitHub Profile
permissionsManager.request(Permission.Location.Fine)
.doOnSuccess {
Toast.makeText(
dataBinding.root.context,
"Permission result for ${it[0].permission.value}, given: ${it[0].isGranted()}",
Toast.LENGTH_SHORT
).show()
}
.subscribe()
permissionsManager.observe(Permission.Location.Fine)
.doOnNext {
println("Fine location granted: ${it[0].isGranted()}")
}
.subscribe()
@Module
class AppModule {
@AppScope
@Provides
fun providePermissionsManager(context: Context): PermissionsManager =
PermissionsComponent.Initializer()
.context(context)
.prepare()
}
data class PermissionResult(
val permission: Permission,
val result: Result,
val hasAskedForPermissions: Boolean,
val isMarkedAsDontAsk: Boolean = false
)
enum class Result {
GRANTED, // PermissionChecker.PERMISSION_GRANTED
DENIED, // PermissionChecker.PERMISSION_DENIED
/**
* Maps to permission groups and permissions found here:
* https://developer.android.com/guide/topics/permissions/overview#permission-groups
*/
sealed class Permission(val value: String) {
sealed class Calendar(value: String) : Permission(value) {
object Read : Calendar("android.permission.READ_CALENDAR")
object Write : Calendar("android.permission.WRITE_CALENDAR")
}
/**
* This is the main API for the SDK. It provides methods to observe and request permissions.
*/
interface PermissionsManager {
/**
* Observe the state of permissions. You will get notified when there's new changes to it.
*/
fun observe(vararg permissions: Permission): Observable<List<PermissionResult>>
/**
machine:
environment:
TERM: "dumb"
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx5120m -XX:+HeapDumpOnOutOfMemoryError"'
ANDROID_HOME: /usr/local/android-sdk-linux
java:
version:
oraclejdk8
dependencies:
pre:
task incrementVersion << {
def propsFile = file("../gradle.properties")
def propsText = propsFile.getText()
def patternVersionNumber = Pattern.compile("app_version=(\\d+)\\.(\\d+)\\.(\\d+)")
def matcherVersionNumber = patternVersionNumber.matcher(propsText)
matcherVersionNumber.find()
def majorVersion = Integer.parseInt(matcherVersionNumber.group(1))
def minorVersion = Integer.parseInt(matcherVersionNumber.group(2))
@ralphpina
ralphpina / download_gcloud_sdk.txt
Created March 3, 2018 20:08
Download GCloud SDK Welnys API
# Google Cloud SDK. We need it to setup the environment with the commands below
# https://discuss.circleci.com/t/gcloud-permissions-error/2631/25
- run:
name: Downloading Google Cloud SDK
command: |
curl -L -o google-cloud-sdk.zip https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.zip \
&& unzip google-cloud-sdk.zip \
&& rm google-cloud-sdk.zip \
&& google-cloud-sdk/install.sh \
--usage-reporting=false \
@ralphpina
ralphpina / setting_up_gcloud.txt
Created March 3, 2018 20:07
Setting up GCloud Welnys API CircleCI
post:
- echo $GCLOUD_SERVICE_KEY | base64 --decode > ${HOME}/gcloud-service-key.json
- sudo /opt/google-cloud-sdk/bin/gcloud --quiet components update
- sudo /opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
- sudo /opt/google-cloud-sdk/bin/gcloud config set project welnys-api
- sudo /opt/google-cloud-sdk/bin/gcloud --quiet components install app-engine-python
- sudo /opt/google-cloud-sdk/bin/gcloud --quiet components install app-engine-go