RNViewShotModule.smali
.class public Lfr/greweb/reactnativeviewshot/RNViewShotModule;
.super Lcom/facebook/react/bridge/ReactContextBaseJavaModule;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lfr/greweb/reactnativeviewshot/RNViewShotModule$a;
}
.end annotation
# static fields
.field public static final SNAPSHOT_VIEW:Ljava/lang/String; = "SnapshotView"
.field private static final TEMP_FILE_PREFIX:Ljava/lang/String; = "ReactNative-snapshot-image"
.field public static customFilePathFunc:Landroidx/arch/core/util/a;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/arch/core/util/a<",
"Ljava/lang/String;",
"Ljava/io/File;",
">;"
}
.end annotation
.end field
# instance fields
.field private final reactContext:Lcom/facebook/react/bridge/ReactApplicationContext;
# direct methods
.method public constructor <init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
.registers 2
.line 1
invoke-direct {p0, p1}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;-><init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
.line 2
iput-object p1, p0, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->reactContext:Lcom/facebook/react/bridge/ReactApplicationContext;
return-void
.end method
.method private createTempFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
sget-object v0, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->customFilePathFunc:Landroidx/arch/core/util/a;
if-eqz v0, :cond_d
.line 2
invoke-interface {v0, p2}, Landroidx/arch/core/util/a;->apply(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/io/File;
if-eqz v0, :cond_d
return-object v0
.line 3
:cond_d
invoke-virtual {p1}, Landroid/content/Context;->getExternalCacheDir()Ljava/io/File;
move-result-object v0
.line 4
invoke-virtual {p1}, Landroid/content/Context;->getCacheDir()Ljava/io/File;
move-result-object p1
if-nez v0, :cond_22
if-eqz p1, :cond_1a
goto :goto_22
.line 5
:cond_1a
new-instance p1, Ljava/io/IOException;
const-string p2, "No cache directory available"
invoke-direct {p1, p2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw p1
:cond_22
:goto_22
if-nez v0, :cond_26
:cond_24
move-object v0, p1
goto :goto_35
:cond_26
if-nez p1, :cond_29
goto :goto_35
.line 6
:cond_29
invoke-virtual {v0}, Ljava/io/File;->getFreeSpace()J
move-result-wide v1
invoke-virtual {p1}, Ljava/io/File;->getFreeSpace()J
move-result-wide v3
cmp-long v5, v1, v3
if-lez v5, :cond_24
.line 7
:goto_35
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "."
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
const-string p2, "ReactNative-snapshot-image"
.line 8
invoke-static {p2, p1, v0}, Ljava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
move-result-object p1
return-object p1
.end method
# virtual methods
.method public captureRef(ILcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V
.registers 21
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
.end annotation
move-object/from16 v0, p0
move-object/from16 v1, p2
.line 1
invoke-virtual/range {p0 .. p0}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;->getReactApplicationContext()Lcom/facebook/react/bridge/ReactApplicationContext;
move-result-object v2
.line 2
invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
move-result-object v2
invoke-virtual {v2}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics;
move-result-object v2
const-string v3, "format"
.line 3
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v6
const-string v3, "jpg"
.line 4
invoke-virtual {v3, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_21
const/4 v3, 0x0
const/4 v7, 0x0
goto :goto_39
:cond_21
const-string v3, "webm"
.line 5
invoke-virtual {v3, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_2c
const/4 v3, 0x2
const/4 v7, 0x2
goto :goto_39
:cond_2c
const-string v3, "raw"
.line 6
invoke-virtual {v3, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_37
const/4 v3, -0x1
const/4 v7, -0x1
goto :goto_39
:cond_37
const/4 v3, 0x1
const/4 v7, 0x1
:goto_39
const-string v3, "quality"
.line 7
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v8
const-string v3, "width"
.line 8
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v4
const/4 v5, 0x0
if-eqz v4, :cond_58
iget v4, v2, Landroid/util/DisplayMetrics;->density:F
float-to-double v10, v4
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v3
mul-double v3, v3, v10
double-to-int v3, v3
invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
move-object v10, v3
goto :goto_59
:cond_58
move-object v10, v5
:goto_59
const-string v3, "height"
.line 9
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_71
iget v2, v2, Landroid/util/DisplayMetrics;->density:F
float-to-double v11, v2
invoke-interface {v1, v3}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v2
mul-double v2, v2, v11
double-to-int v2, v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
move-object v11, v2
goto :goto_72
:cond_71
move-object v11, v5
:goto_72
const-string v2, "result"
.line 10
invoke-interface {v1, v2}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v13
const-string v2, "snapshotContentContainer"
.line 11
invoke-interface {v1, v2}, Lcom/facebook/react/bridge/ReadableMap;->getBoolean(Ljava/lang/String;)Z
move-result v1
invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v14
:try_start_82
const-string v1, "tmpfile"
.line 12
invoke-virtual {v1, v13}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_94
.line 13
invoke-virtual/range {p0 .. p0}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;->getReactApplicationContext()Lcom/facebook/react/bridge/ReactApplicationContext;
move-result-object v1
invoke-direct {v0, v1, v6}, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->createTempFile(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
move-result-object v1
move-object v12, v1
goto :goto_95
:cond_94
move-object v12, v5
.line 14
:goto_95
invoke-virtual/range {p0 .. p0}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;->getCurrentActivity()Landroid/app/Activity;
move-result-object v15
.line 15
iget-object v1, v0, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->reactContext:Lcom/facebook/react/bridge/ReactApplicationContext;
const-class v2, Lcom/facebook/react/uimanager/UIManagerModule;
invoke-virtual {v1, v2}, Lcom/facebook/react/bridge/ReactContext;->getNativeModule(Ljava/lang/Class;)Lcom/facebook/react/bridge/NativeModule;
move-result-object v1
check-cast v1, Lcom/facebook/react/uimanager/UIManagerModule;
.line 16
new-instance v2, Lfr/greweb/reactnativeviewshot/b;
move-object v4, v2
move/from16 v5, p1
move-object/from16 v16, p3
invoke-direct/range {v4 .. v16}, Lfr/greweb/reactnativeviewshot/b;-><init>(ILjava/lang/String;IDLjava/lang/Integer;Ljava/lang/Integer;Ljava/io/File;Ljava/lang/String;Ljava/lang/Boolean;Landroid/app/Activity;Lcom/facebook/react/bridge/Promise;)V
invoke-virtual {v1, v2}, Lcom/facebook/react/uimanager/UIManagerModule;->addUIBlock(Lcom/facebook/react/uimanager/UIBlock;)V
:try_end_b0
.catchall {:try_start_82 .. :try_end_b0} :catchall_b1
goto :goto_cb
.line 17
:catchall_b1
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Failed to snapshot view tag "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move/from16 v2, p1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "E_UNABLE_TO_SNAPSHOT"
move-object/from16 v3, p3
invoke-interface {v3, v2, v1}, Lcom/facebook/react/bridge/Promise;->reject(Ljava/lang/String;Ljava/lang/String;)V
:goto_cb
return-void
.end method
.method public captureScreen(Lcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V
.registers 4
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
.end annotation
const/4 v0, -0x1
invoke-virtual {p0, v0, p1, p2}, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->captureRef(ILcom/facebook/react/bridge/ReadableMap;Lcom/facebook/react/bridge/Promise;)V
return-void
.end method
.method public getConstants()Ljava/util/Map;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Object;",
">;"
}
.end annotation
invoke-static {}, Ljava/util/Collections;->emptyMap()Ljava/util/Map;
move-result-object v0
return-object v0
.end method
.method public getName()Ljava/lang/String;
.registers 2
const-string v0, "SnapshotView"
return-object v0
.end method
.method public onCatalystInstanceDestroy()V
.registers 4
.line 1
invoke-super {p0}, Lcom/facebook/react/bridge/BaseJavaModule;->onCatalystInstanceDestroy()V
.line 2
new-instance v0, Lfr/greweb/reactnativeviewshot/RNViewShotModule$a;
invoke-virtual {p0}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;->getReactApplicationContext()Lcom/facebook/react/bridge/ReactApplicationContext;
move-result-object v1
.line 3
invoke-direct {v0, v1}, Lfr/greweb/reactnativeviewshot/RNViewShotModule$a;-><init>(Lcom/facebook/react/bridge/ReactContext;)V
.line 4
sget-object v1, Landroid/os/AsyncTask;->THREAD_POOL_EXECUTOR:Ljava/util/concurrent/Executor;
const/4 v2, 0x0
new-array v2, v2, [Ljava/lang/Void;
invoke-virtual {v0, v1, v2}, Landroid/os/AsyncTask;->executeOnExecutor(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;
return-void
.end method
.method public releaseCapture(Ljava/lang/String;)V
.registers 4
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
.end annotation
.line 1
invoke-static {p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object p1
invoke-virtual {p1}, Landroid/net/Uri;->getPath()Ljava/lang/String;
move-result-object p1
if-nez p1, :cond_b
return-void
.line 2
:cond_b
new-instance v0, Ljava/io/File;
invoke-direct {v0, p1}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 3
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result p1
if-nez p1, :cond_17
return-void
.line 4
:cond_17
invoke-virtual {v0}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object p1
.line 5
iget-object v1, p0, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->reactContext:Lcom/facebook/react/bridge/ReactApplicationContext;
invoke-virtual {v1}, Landroid/content/Context;->getExternalCacheDir()Ljava/io/File;
move-result-object v1
invoke-virtual {p1, v1}, Ljava/io/File;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_33
iget-object v1, p0, Lfr/greweb/reactnativeviewshot/RNViewShotModule;->reactContext:Lcom/facebook/react/bridge/ReactApplicationContext;
invoke-virtual {v1}, Landroid/content/Context;->getCacheDir()Ljava/io/File;
move-result-object v1
invoke-virtual {p1, v1}, Ljava/io/File;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_36
.line 6
:cond_33
invoke-virtual {v0}, Ljava/io/File;->delete()Z
:cond_36
return-void
.end method