diff --git a/android/src/main/java/cl/json/RNShareImpl.java b/android/src/main/java/cl/json/RNShareImpl.java index f9e14f27..831d83c2 100644 --- a/android/src/main/java/cl/json/RNShareImpl.java +++ b/android/src/main/java/cl/json/RNShareImpl.java @@ -34,6 +34,7 @@ import cl.json.social.MessengerShare; import cl.json.social.LinkedinShare; import cl.json.social.ViberShare; +import cl.json.social.DiscordShare; import java.util.HashMap; import java.util.Locale; @@ -90,7 +91,8 @@ private enum SHARES { sms, linkedin, telegram, - viber; + viber, + discord; public static ShareIntent getShareClass(String social, ReactApplicationContext reactContext) { @@ -132,6 +134,8 @@ public static ShareIntent getShareClass(String social, ReactApplicationContext r return new TelegramShare(reactContext); case viber: return new ViberShare(reactContext); + case discord: + return new DiscordShare(reactContext); default: return null; } diff --git a/android/src/main/java/cl/json/social/DiscordShare.java b/android/src/main/java/cl/json/social/DiscordShare.java new file mode 100644 index 00000000..99528c27 --- /dev/null +++ b/android/src/main/java/cl/json/social/DiscordShare.java @@ -0,0 +1,43 @@ +package cl.json.social; + +import android.content.ActivityNotFoundException; +import android.content.Intent; +import java.io.File; +import android.os.Environment; +import android.net.Uri; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReadableMap; + + +public class DiscordShare extends SingleShareIntent { + + private static final String PACKAGE = "com.discord"; + private static final String PLAY_STORE_LINK = "https://play.google.com/store/apps/details?id=com.discord"; + + public DiscordShare(ReactApplicationContext reactContext) { + super(reactContext); + } + + @Override + public void open(ReadableMap options) throws ActivityNotFoundException { + super.open(options); + // extra params here + this.openIntentChooser(); + } + + @Override + protected String getPackage() { + return PACKAGE; + } + + @Override + protected String getDefaultWebLink() { + return null; + } + + @Override + protected String getPlayStoreLink() { + return PLAY_STORE_LINK; + } +} \ No newline at end of file diff --git a/codegenSpec/NativeRNShare.ts b/codegenSpec/NativeRNShare.ts index 70f27a03..27e623c6 100644 --- a/codegenSpec/NativeRNShare.ts +++ b/codegenSpec/NativeRNShare.ts @@ -25,6 +25,7 @@ export interface Spec extends TurboModule { SHARE_BACKGROUND_AND_STICKER_IMAGE?: string; SMS?: string; GENERIC?: string; + DISCORD?: string; }; open: (options: Object) => Promise<{ success: boolean; message: string }>; shareSingle: (options: Object) => Promise<{ success: boolean; message: string }>; diff --git a/example/App.js b/example/App.js index 0e073ab3..7082ac84 100644 --- a/example/App.js +++ b/example/App.js @@ -343,6 +343,23 @@ const App = () => { } }; + const shareToDiscord = async () => { + const shareOptions = { + message: 'Example Discord', + url: 'https://google.com', + social: Share.Social.DISCORD, + }; + + try { + const ShareResponse = await Share.shareSingle(shareOptions); + console.log('Response =>', ShareResponse); + setResult(JSON.stringify(ShareResponse, null, 2)); + } catch (error) { + console.log('Error =>', error); + setResult('error: '.concat(getErrorString(error))); + } + }; + const sharePdfBase64 = async () => { const shareOptions = { title: '', @@ -413,6 +430,9 @@ const App = () => {