Return a Promise for Clipboard.getString()

Summary:
For clipboard, add error callback in Android. Code like
```javascript
Clipboard.getString((content)=>{
    //do something
},(error)=>{
   //do something for error
})
```
Closes https://github.com/facebook/react-native/pull/4792

Reviewed By: svcscm

Differential Revision: D2844937

Pulled By: nicklockwood

fb-gh-sync-id: 19953807ff07238e6a6ef5aedf1a3fcbca7e62a1
This commit is contained in:
tantan
2016-01-20 10:53:59 -08:00
committed by facebook-github-bot-5
parent 1dffd056bf
commit 15f806957f
4 changed files with 62 additions and 23 deletions

View File

@@ -21,6 +21,7 @@ import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Promise;
import com.facebook.react.common.ReactConstants;
import java.util.ArrayList;
@@ -43,28 +44,25 @@ public class ClipboardModule extends ReactContextBaseJavaModule {
}
private ClipboardManager getClipboardService() {
ReactApplicationContext reactContext = getReactApplicationContext();
return (ClipboardManager) reactContext.getSystemService(reactContext.CLIPBOARD_SERVICE);
return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
}
@ReactMethod
public void getString(Callback cb) {
public void getString(Promise promise){
try {
ClipboardManager clipboard = getClipboardService();
ClipData clipData = clipboard.getPrimaryClip();
if (clipData == null) {
cb.invoke("");
return;
promise.resolve("");
}
if (clipData.getItemCount() >= 1) {
ClipData.Item firstItem = clipboard.getPrimaryClip().getItemAt(0);
String text = "" + firstItem.getText();
cb.invoke(text);
promise.resolve("" + firstItem.getText());
} else {
cb.invoke("");
promise.resolve("");
}
} catch(Exception e) {
FLog.w(ReactConstants.TAG, "Cannot get clipboard contents: " + e.getMessage());
promise.reject(e);
}
}