|
@@ -7,10 +7,13 @@ import { addDom, addDataToStorge } from '../../utils/contentInTwitterJS/addDom';
|
|
|
|
|
|
interface Props {
|
|
|
navigation: any;
|
|
|
+ route: any;
|
|
|
}
|
|
|
class Twitter extends Component<Props> {
|
|
|
webref: any;
|
|
|
packUrl: any;
|
|
|
+ taskLikeMap: Map<string, any> = new Map();
|
|
|
+ taskRetweetMap: Map<string, any> = new Map();
|
|
|
|
|
|
getPostIdByType = (post_Id: string) => {
|
|
|
let result: any = { post_Id };
|
|
@@ -65,6 +68,7 @@ class Twitter extends Component<Props> {
|
|
|
(messageData.nativeEvent.data &&
|
|
|
JSON.parse(messageData.nativeEvent.data)) ||
|
|
|
{};
|
|
|
+ let callBackData: any = null;
|
|
|
switch (actionType) {
|
|
|
case 'goDetailPage':
|
|
|
// const { tweet_Id, ct0, post_Id, invite_code } = data;
|
|
@@ -79,6 +83,23 @@ class Twitter extends Component<Props> {
|
|
|
true;
|
|
|
`);
|
|
|
break;
|
|
|
+ case 'TwitterLikeSuccess':
|
|
|
+ callBackData = this.taskLikeMap.get(data.tweetId) || {};
|
|
|
+ if (callBackData) {
|
|
|
+ DeviceEventEmitter.emit(
|
|
|
+ callBackData.info.rnMessageId,
|
|
|
+ data,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'RetweetSuccess':
|
|
|
+ callBackData = this.taskRetweetMap.get(data.tweetId) || {};
|
|
|
+ if (callBackData) {
|
|
|
+ DeviceEventEmitter.emit(
|
|
|
+ callBackData.info.rnMessageId,
|
|
|
+ data,
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
handleWebViewNavigationStateChange = (newNavState: { url: any }) => {
|
|
@@ -96,16 +117,36 @@ class Twitter extends Component<Props> {
|
|
|
`);
|
|
|
};
|
|
|
|
|
|
+ getSplitTweetId(tweetId: string) {
|
|
|
+ const idArray = tweetId.split('');
|
|
|
+ console.log('idArray', idArray);
|
|
|
+ const len = idArray.length;
|
|
|
+ const idArray1 = idArray.splice(0, Math.floor(len / 2));
|
|
|
+ const id1 = idArray1.join('');
|
|
|
+ const id2 = idArray.join('');
|
|
|
+ return { id1, id2 };
|
|
|
+ }
|
|
|
+
|
|
|
FavoriteTweet = (data: any) => {
|
|
|
- // let jsString = `window.TwitterLikeAPI(${data.tweet_Id})`;
|
|
|
- // data = JSON.parse(data);
|
|
|
console.log('FavoriteTweet', data);
|
|
|
- // this.webref.injectJavaScript(`
|
|
|
- // window.TwitterLikeAPI(${data.id1},${data.id2});
|
|
|
- // true;
|
|
|
- // `);
|
|
|
+ const { id1, id2 } = this.getSplitTweetId(data.data.tweetId);
|
|
|
+ this.taskLikeMap.set(data.data.tweetId, data);
|
|
|
+ this.webref.injectJavaScript(`
|
|
|
+ window.denetJS.TwitterLikeAPI(${id1},${id2});
|
|
|
+ true;
|
|
|
+ `);
|
|
|
};
|
|
|
|
|
|
+ retweet(data: any) {
|
|
|
+ console.log('retweet', data);
|
|
|
+ const { id1, id2 } = this.getSplitTweetId(data.data.tweetId);
|
|
|
+ this.taskRetweetMap.set(data.data.tweetId, data);
|
|
|
+ this.webref.injectJavaScript(`
|
|
|
+ window.denetJS.TwitterRetweetAPI(${id1},${id2});
|
|
|
+ true;
|
|
|
+ `);
|
|
|
+ }
|
|
|
+
|
|
|
getPostId(shortUrl: RequestInfo) {
|
|
|
return fetch(shortUrl) // 返回一个Promise对象
|
|
|
.then(res => {
|
|
@@ -120,10 +161,13 @@ class Twitter extends Component<Props> {
|
|
|
}
|
|
|
|
|
|
async componentDidMount() {
|
|
|
+ DeviceEventEmitter.addListener('IFRAME_DO_TASK_LIKE', (data: any) => {
|
|
|
+ this.FavoriteTweet(data);
|
|
|
+ });
|
|
|
DeviceEventEmitter.addListener(
|
|
|
- 'IFRAME_TWITTER_API_DO_TASK',
|
|
|
+ 'IFRAME_DO_TASK_RETWEET',
|
|
|
(data: any) => {
|
|
|
- this.FavoriteTweet(data);
|
|
|
+ this.retweet(data);
|
|
|
},
|
|
|
);
|
|
|
}
|
|
@@ -138,7 +182,7 @@ class Twitter extends Component<Props> {
|
|
|
handleWebViewNavigationStateChange={
|
|
|
this.handleWebViewNavigationStateChange
|
|
|
}
|
|
|
- uri="https://mobile.twitter.com/home"
|
|
|
+ uri={this.props.route.params.webUrl}
|
|
|
/>
|
|
|
</View>
|
|
|
);
|