RNGeocoderModule.smali
.class public Lcom/devfd/RNGeocoder/RNGeocoderModule;
.super Lcom/facebook/react/bridge/ReactContextBaseJavaModule;
.source "SourceFile"
# annotations
.annotation runtime Lcom/facebook/react/module/annotations/ReactModule;
name = "RNGeocoder"
.end annotation
# static fields
.field public static final NAME:Ljava/lang/String; = "RNGeocoder"
# instance fields
.field private geocoder:Landroid/location/Geocoder;
# direct methods
.method public constructor <init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
.registers 3
.line 1
invoke-direct {p0, p1}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;-><init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
.line 2
new-instance v0, Landroid/location/Geocoder;
invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object p1
invoke-direct {v0, p1}, Landroid/location/Geocoder;-><init>(Landroid/content/Context;)V
iput-object v0, p0, Lcom/devfd/RNGeocoder/RNGeocoderModule;->geocoder:Landroid/location/Geocoder;
return-void
.end method
# virtual methods
.method public geocodeAddress(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V
.registers 5
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
.end annotation
.line 1
invoke-static {}, Landroid/location/Geocoder;->isPresent()Z
move-result v0
if-nez v0, :cond_e
const-string p1, "NOT_AVAILABLE"
const-string v0, "Geocoder not available for this platform"
.line 2
invoke-interface {p2, p1, v0}, Lcom/facebook/react/bridge/Promise;->reject(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 3
:cond_e
:try_start_e
iget-object v0, p0, Lcom/devfd/RNGeocoder/RNGeocoderModule;->geocoder:Landroid/location/Geocoder;
const/16 v1, 0x14
invoke-virtual {v0, p1, v1}, Landroid/location/Geocoder;->getFromLocationName(Ljava/lang/String;I)Ljava/util/List;
move-result-object p1
.line 4
invoke-virtual {p0, p1}, Lcom/devfd/RNGeocoder/RNGeocoderModule;->transform(Ljava/util/List;)Lcom/facebook/react/bridge/WritableArray;
move-result-object p1
invoke-interface {p2, p1}, Lcom/facebook/react/bridge/Promise;->resolve(Ljava/lang/Object;)V
:try_end_1d
.catch Ljava/io/IOException; {:try_start_e .. :try_end_1d} :catch_1e
goto :goto_22
:catch_1e
move-exception p1
.line 5
invoke-interface {p2, p1}, Lcom/facebook/react/bridge/Promise;->reject(Ljava/lang/Throwable;)V
:goto_22
return-void
.end method
.method public geocodePosition(Lcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V
.registers 10
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
.end annotation
.line 1
invoke-static {}, Landroid/location/Geocoder;->isPresent()Z
move-result v0
if-nez v0, :cond_e
const-string p1, "NOT_AVAILABLE"
const-string v0, "Geocoder not available for this platform"
.line 2
invoke-interface {p2, p1, v0}, Lcom/facebook/react/bridge/Promise;->reject(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 3
:cond_e
:try_start_e
iget-object v1, p0, Lcom/devfd/RNGeocoder/RNGeocoderModule;->geocoder:Landroid/location/Geocoder;
const-string v0, "lat"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v2
const-string v0, "lng"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v4
const/16 v6, 0x14
invoke-virtual/range {v1 .. v6}, Landroid/location/Geocoder;->getFromLocation(DDI)Ljava/util/List;
move-result-object p1
.line 4
invoke-virtual {p0, p1}, Lcom/devfd/RNGeocoder/RNGeocoderModule;->transform(Ljava/util/List;)Lcom/facebook/react/bridge/WritableArray;
move-result-object p1
invoke-interface {p2, p1}, Lcom/facebook/react/bridge/Promise;->resolve(Ljava/lang/Object;)V
:try_end_29
.catch Ljava/io/IOException; {:try_start_e .. :try_end_29} :catch_2a
goto :goto_2e
:catch_2a
move-exception p1
.line 5
invoke-interface {p2, p1}, Lcom/facebook/react/bridge/Promise;->reject(Ljava/lang/Throwable;)V
:goto_2e
return-void
.end method
.method public getName()Ljava/lang/String;
.registers 2
const-string v0, "RNGeocoder"
return-object v0
.end method
.method public transform(Ljava/util/List;)Lcom/facebook/react/bridge/WritableArray;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Landroid/location/Address;",
">;)",
"Lcom/facebook/react/bridge/WritableArray;"
}
.end annotation
.line 1
new-instance v0, Lcom/facebook/react/bridge/WritableNativeArray;
invoke-direct {v0}, Lcom/facebook/react/bridge/WritableNativeArray;-><init>()V
.line 2
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_9
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_ed
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroid/location/Address;
.line 3
new-instance v2, Lcom/facebook/react/bridge/WritableNativeMap;
invoke-direct {v2}, Lcom/facebook/react/bridge/WritableNativeMap;-><init>()V
.line 4
new-instance v3, Lcom/facebook/react/bridge/WritableNativeMap;
invoke-direct {v3}, Lcom/facebook/react/bridge/WritableNativeMap;-><init>()V
.line 5
invoke-virtual {v1}, Landroid/location/Address;->getLatitude()D
move-result-wide v4
const-string v6, "lat"
invoke-interface {v3, v6, v4, v5}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
.line 6
invoke-virtual {v1}, Landroid/location/Address;->getLongitude()D
move-result-wide v4
const-string v6, "lng"
invoke-interface {v3, v6, v4, v5}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const-string v4, "position"
.line 7
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putMap(Ljava/lang/String;Lcom/facebook/react/bridge/ReadableMap;)V
.line 8
invoke-virtual {v1}, Landroid/location/Address;->getFeatureName()Ljava/lang/String;
move-result-object v3
const-string v4, "feature"
if-eqz v3, :cond_60
.line 9
invoke-virtual {v1}, Landroid/location/Address;->getSubThoroughfare()Ljava/lang/String;
move-result-object v5
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_60
.line 10
invoke-virtual {v1}, Landroid/location/Address;->getThoroughfare()Ljava/lang/String;
move-result-object v5
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_60
.line 11
invoke-virtual {v1}, Landroid/location/Address;->getLocality()Ljava/lang/String;
move-result-object v5
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_60
.line 12
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_64
:cond_60
const/4 v3, 0x0
.line 13
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 14
:goto_64
invoke-virtual {v1}, Landroid/location/Address;->getLocality()Ljava/lang/String;
move-result-object v3
const-string v4, "locality"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 15
invoke-virtual {v1}, Landroid/location/Address;->getAdminArea()Ljava/lang/String;
move-result-object v3
const-string v4, "adminArea"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 16
invoke-virtual {v1}, Landroid/location/Address;->getCountryName()Ljava/lang/String;
move-result-object v3
const-string v4, "country"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 17
invoke-virtual {v1}, Landroid/location/Address;->getCountryCode()Ljava/lang/String;
move-result-object v3
const-string v4, "countryCode"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 18
invoke-virtual {v1}, Landroid/location/Address;->getLocale()Ljava/util/Locale;
move-result-object v3
invoke-virtual {v3}, Ljava/util/Locale;->toString()Ljava/lang/String;
move-result-object v3
const-string v4, "locale"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 19
invoke-virtual {v1}, Landroid/location/Address;->getPostalCode()Ljava/lang/String;
move-result-object v3
const-string v4, "postalCode"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 20
invoke-virtual {v1}, Landroid/location/Address;->getSubAdminArea()Ljava/lang/String;
move-result-object v3
const-string v4, "subAdminArea"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 21
invoke-virtual {v1}, Landroid/location/Address;->getSubLocality()Ljava/lang/String;
move-result-object v3
const-string v4, "subLocality"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 22
invoke-virtual {v1}, Landroid/location/Address;->getSubThoroughfare()Ljava/lang/String;
move-result-object v3
const-string v4, "streetNumber"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 23
invoke-virtual {v1}, Landroid/location/Address;->getThoroughfare()Ljava/lang/String;
move-result-object v3
const-string v4, "streetName"
invoke-interface {v2, v4, v3}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 24
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const/4 v4, 0x0
.line 25
:goto_c8
invoke-virtual {v1}, Landroid/location/Address;->getMaxAddressLineIndex()I
move-result v5
if-gt v4, v5, :cond_df
if-lez v4, :cond_d5
const-string v5, ", "
.line 26
invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 27
:cond_d5
invoke-virtual {v1, v4}, Landroid/location/Address;->getAddressLine(I)Ljava/lang/String;
move-result-object v5
invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v4, v4, 0x1
goto :goto_c8
.line 28
:cond_df
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v3, "formattedAddress"
invoke-interface {v2, v3, v1}, Lcom/facebook/react/bridge/WritableMap;->putString(Ljava/lang/String;Ljava/lang/String;)V
.line 29
invoke-interface {v0, v2}, Lcom/facebook/react/bridge/WritableArray;->pushMap(Lcom/facebook/react/bridge/ReadableMap;)V
goto/16 :goto_9
:cond_ed
return-object v0
.end method