|  | @@ -1,48 +1,55 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  | -    <div class="invite-friends">
 | 
	
		
			
				|  |  | -      <div class="invite-friends-content">
 | 
	
		
			
				|  |  | -        <div class="invite-friends-content-head">
 | 
	
		
			
				|  |  | -          <div class="title">Invite Friends to Open the Chest!</div>
 | 
	
		
			
				|  |  | -          <div class="info">Invitees Need to be <span>Real New follower</span> of {{followUserStr}} to receive rewards</div>
 | 
	
		
			
				|  |  | +  <div class="invite-friends">
 | 
	
		
			
				|  |  | +    <div class="invite-friends-content">
 | 
	
		
			
				|  |  | +      <div class="invite-friends-content-head">
 | 
	
		
			
				|  |  | +        <div class="title">Invite Friends to Open the Chest!</div>
 | 
	
		
			
				|  |  | +        <div class="info">Invitees Need to be <span>Real New follower</span> of {{ followUserStr }} to receive rewards
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  | -        <div class="invite-friends-content-body">
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <div class="invite-friends-content-body">
 | 
	
		
			
				|  |  | +        <template v-if="state.share_list_end">
 | 
	
		
			
				|  |  |            <img class="tips" v-if="state.active_share_channel" :src="require('@/assets/svg/icon-channel-tips.svg')" />
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -          <div class="share-list" :class="{'share-list-active': state.active_share_channel}">
 | 
	
		
			
				|  |  | +          <div class="share-list" :class="{ 'share-list-active': state.active_share_channel }">
 | 
	
		
			
				|  |  |              <div v-for="(item, index) in state.share_list" :key="index" :data-clipboard-text="item.inviteContent"
 | 
	
		
			
				|  |  | -                @click="clickShare(item)" class="share-item">
 | 
	
		
			
				|  |  | -              <img :src="item.iconPath"  />
 | 
	
		
			
				|  |  | +              @click="clickShare(item)" class="share-item">
 | 
	
		
			
				|  |  | +              <img :src="item.iconPath" />
 | 
	
		
			
				|  |  |                <div class="name">
 | 
	
		
			
				|  |  | -                {{item.name}}
 | 
	
		
			
				|  |  | +                {{ item.name }}
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <div v-show="state.share_list_end" class="share-item copy-btn" @click="clickCopy" v-click-log="state.log_invite_copy_btn_click"
 | 
	
		
			
				|  |  | -                :data-clipboard-text="state.detail.inviteCopyUrl">
 | 
	
		
			
				|  |  | +            <div v-show="state.share_list_end" class="share-item copy-btn" @click="clickCopy"
 | 
	
		
			
				|  |  | +              v-click-log="state.log_invite_copy_btn_click" :data-clipboard-text="state.detail.inviteCopyUrl">
 | 
	
		
			
				|  |  |                <img :src="require('@/assets/svg/icon-copy-url-teasure.svg')" alt="">
 | 
	
		
			
				|  |  |                <div class="name">
 | 
	
		
			
				|  |  |                  Copy URL
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | -      <v-btn :txt="state.open_btn.txt" :font-size="'17px'" class="btn" :icon="false"
 | 
	
		
			
				|  |  | -            :disabled="state.open_btn.disabled" v-show-log="state.log_invite_btn_show" :loading="state.btn_loading"
 | 
	
		
			
				|  |  | -            v-click-log="state.log_invite_btn_click" @onClick="clickBtn" font-weight="600"></v-btn>
 | 
	
		
			
				|  |  | -      <div class="mask" v-show="showShareTips">
 | 
	
		
			
				|  |  | -        <div class="content">
 | 
	
		
			
				|  |  | -          <img class="icon-loading" :src="channelLoadingImg" />
 | 
	
		
			
				|  |  | -          <div class="text">
 | 
	
		
			
				|  |  | -            Link copied to clipboard
 | 
	
		
			
				|  |  | -             <br/>
 | 
	
		
			
				|  |  | -            Opening {{selectShareApp.name }}
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +        <template v-else>
 | 
	
		
			
				|  |  | +          <v-loading></v-loading>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +    <v-btn :txt="state.open_btn.txt" :font-size="'17px'" class="btn" :icon="false" :disabled="state.open_btn.disabled"
 | 
	
		
			
				|  |  | +      v-show-log="state.log_invite_btn_show" :loading="state.btn_loading" v-click-log="state.log_invite_btn_click"
 | 
	
		
			
				|  |  | +      @onClick="clickBtn" font-weight="600"></v-btn>
 | 
	
		
			
				|  |  | +    <div class="mask" v-show="showShareTips">
 | 
	
		
			
				|  |  | +      <div class="content">
 | 
	
		
			
				|  |  | +        <img class="icon-loading" :src="channelLoadingImg" />
 | 
	
		
			
				|  |  | +        <div class="text">
 | 
	
		
			
				|  |  | +          Link copied to clipboard
 | 
	
		
			
				|  |  | +          <br />
 | 
	
		
			
				|  |  | +          Opening {{ selectShareApp.name }}
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  <script setup>
 | 
	
		
			
				|  |  |  import VBtn from '@/view/iframe/treasure-hunt/components/btn.vue'
 | 
	
		
			
				|  |  | +import VLoading from '@/view/components/loading.vue'
 | 
	
		
			
				|  |  |  import { inviteChannel } from '@/http/treasure'
 | 
	
		
			
				|  |  |  import { inject, onMounted, ref } from 'vue'
 | 
	
		
			
				|  |  |  import Report from "@/log-center/log"
 | 
	
	
		
			
				|  | @@ -58,40 +65,40 @@ let channelLoadingImg = ref(loadingImg);
 | 
	
		
			
				|  |  |  let state = inject('state')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  state.log_invite_btn_show = {
 | 
	
		
			
				|  |  | -    businessType: Report.businessType.buttonView,
 | 
	
		
			
				|  |  | -    pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | -    objectType: Report.objectType.openChestButton,
 | 
	
		
			
				|  |  | -    redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | -    shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | -    myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | -    currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | -    postId: state.postId
 | 
	
		
			
				|  |  | +  businessType: Report.businessType.buttonView,
 | 
	
		
			
				|  |  | +  pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | +  objectType: Report.objectType.openChestButton,
 | 
	
		
			
				|  |  | +  redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | +  shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | +  myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | +  currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | +  postId: state.postId
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  state.log_invite_btn_click = {
 | 
	
		
			
				|  |  | -    businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | -    pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | -    objectType: Report.objectType.openChestButton,
 | 
	
		
			
				|  |  | -    redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | -    shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | -    myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | -    currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | -    postId: state.postId
 | 
	
		
			
				|  |  | +  businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | +  pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | +  objectType: Report.objectType.openChestButton,
 | 
	
		
			
				|  |  | +  redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | +  shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | +  myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | +  currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | +  postId: state.postId
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  state.log_invite_copy_btn_click = {
 | 
	
		
			
				|  |  | -    businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | -    pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | -    objectType: Report.objectType.copyButton,
 | 
	
		
			
				|  |  | -    redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | -    shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | -    myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | -    currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | -    postId: state.postId
 | 
	
		
			
				|  |  | +  businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | +  pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | +  objectType: Report.objectType.copyButton,
 | 
	
		
			
				|  |  | +  redPacketType: Report.redPacketType.treasure,
 | 
	
		
			
				|  |  | +  shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | +  myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | +  currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | +  postId: state.postId
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let facebookAppConfig = {
 | 
	
		
			
				|  |  | -    facebookAppId: "",
 | 
	
		
			
				|  |  | -    faceShareRedirectUrl
 | 
	
		
			
				|  |  | +  facebookAppId: "",
 | 
	
		
			
				|  |  | +  faceShareRedirectUrl
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let selectShareApp = ref({});
 | 
	
	
		
			
				|  | @@ -99,299 +106,302 @@ let showShareTips = ref(false);
 | 
	
		
			
				|  |  |  let followUserStr = ref('');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  onMounted(() => {
 | 
	
		
			
				|  |  | -    state.btn_loading = false
 | 
	
		
			
				|  |  | -    setFrontConfig();
 | 
	
		
			
				|  |  | -    initInviteChannel();
 | 
	
		
			
				|  |  | -    getFollowUserStr();
 | 
	
		
			
				|  |  | +  state.btn_loading = false
 | 
	
		
			
				|  |  | +  setFrontConfig();
 | 
	
		
			
				|  |  | +  initInviteChannel();
 | 
	
		
			
				|  |  | +  getFollowUserStr();
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const getFollowUserStr = () => {
 | 
	
		
			
				|  |  |    let arr = [];
 | 
	
		
			
				|  |  | -  if(state.follows && state.follows.length) {
 | 
	
		
			
				|  |  | -    for(let i = 0; i < state.follows.length; i++) {
 | 
	
		
			
				|  |  | +  if (state.follows && state.follows.length) {
 | 
	
		
			
				|  |  | +    for (let i = 0; i < state.follows.length; i++) {
 | 
	
		
			
				|  |  |        let item = state.follows[i];
 | 
	
		
			
				|  |  | -      arr.push('@'+item.name);
 | 
	
		
			
				|  |  | +      arr.push('@' + item.name);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    followUserStr.value = arr.join(" or ");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  chrome.management.onDisabled.addListener(() => {
 | 
	
		
			
				|  |  | -    initInviteChannel()
 | 
	
		
			
				|  |  | +  initInviteChannel()
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  chrome.management.onEnabled.addListener(() => {
 | 
	
		
			
				|  |  | -    initInviteChannel()
 | 
	
		
			
				|  |  | +  initInviteChannel()
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  chrome.management.onInstalled.addListener(() => {
 | 
	
		
			
				|  |  | -    initInviteChannel()
 | 
	
		
			
				|  |  | +  initInviteChannel()
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  chrome.management.onUninstalled.addListener(() => {
 | 
	
		
			
				|  |  | -    initInviteChannel()
 | 
	
		
			
				|  |  | +  initInviteChannel()
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  let linePluginInstalled
 | 
	
		
			
				|  |  |  const initInviteChannel = () => {
 | 
	
		
			
				|  |  | -    try {
 | 
	
		
			
				|  |  | -        chrome.management.get('ophjlpahpchlmihnnnihgmmeilfjmjjc', (res) => {
 | 
	
		
			
				|  |  | -            if ((res && linePluginInstalled == 1) || (!res && linePluginInstalled == 0)) {
 | 
	
		
			
				|  |  | -                return
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if (res) {
 | 
	
		
			
				|  |  | -                linePluginInstalled = 1
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                linePluginInstalled = 0
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            inviteChannel({
 | 
	
		
			
				|  |  | -                params: {
 | 
	
		
			
				|  |  | -                    linePluginInstalled,
 | 
	
		
			
				|  |  | -                    postId: state.postId
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }).then((res) => {
 | 
	
		
			
				|  |  | -                if (res.code == 0) {
 | 
	
		
			
				|  |  | -                    state.share_list = res.data
 | 
	
		
			
				|  |  | -                    state.share_list_end = true
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -    } catch (error) {
 | 
	
		
			
				|  |  | -        console.error(error)
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  try {
 | 
	
		
			
				|  |  | +    chrome.management.get('ophjlpahpchlmihnnnihgmmeilfjmjjc', (res) => {
 | 
	
		
			
				|  |  | +      if ((res && linePluginInstalled == 1) || (!res && linePluginInstalled == 0)) {
 | 
	
		
			
				|  |  | +        return
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      if (res) {
 | 
	
		
			
				|  |  | +        linePluginInstalled = 1
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        linePluginInstalled = 0
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      inviteChannel({
 | 
	
		
			
				|  |  | +        params: {
 | 
	
		
			
				|  |  | +          linePluginInstalled,
 | 
	
		
			
				|  |  | +          postId: state.postId
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }).then((res) => {
 | 
	
		
			
				|  |  | +        if (res.code == 0) {
 | 
	
		
			
				|  |  | +          state.share_list = res.data
 | 
	
		
			
				|  |  | +          state.share_list_end = true
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  } catch (error) {
 | 
	
		
			
				|  |  | +    console.error(error)
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  async function clickBtn() {
 | 
	
		
			
				|  |  | -    let _userInfo = await state.checkIsLogin()
 | 
	
		
			
				|  |  | -    if (!_userInfo) {
 | 
	
		
			
				|  |  | -        return
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    state.btn_loading = true
 | 
	
		
			
				|  |  | -    state.treasureOpen()
 | 
	
		
			
				|  |  | +  let _userInfo = await state.checkIsLogin()
 | 
	
		
			
				|  |  | +  if (!_userInfo) {
 | 
	
		
			
				|  |  | +    return
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  state.btn_loading = true
 | 
	
		
			
				|  |  | +  state.treasureOpen()
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const clickShare = (item) => {
 | 
	
		
			
				|  |  | -    channelLoadingImg.value = loadingImg;
 | 
	
		
			
				|  |  | -    var clipboard = new ClipboardJS('.share-item');
 | 
	
		
			
				|  |  | -    clipboard.on('success', function (e) {
 | 
	
		
			
				|  |  | -        // state.toast.txt = 'Copy Successfully'
 | 
	
		
			
				|  |  | -        // state.toast.has_icon = true
 | 
	
		
			
				|  |  | -        // state.toast.show = true
 | 
	
		
			
				|  |  | -        // setTimeout(() => {
 | 
	
		
			
				|  |  | -        //     state.toast.show = false
 | 
	
		
			
				|  |  | -        // }, 2000)
 | 
	
		
			
				|  |  | -        e.clearSelection();
 | 
	
		
			
				|  |  | +  channelLoadingImg.value = loadingImg;
 | 
	
		
			
				|  |  | +  var clipboard = new ClipboardJS('.share-item');
 | 
	
		
			
				|  |  | +  clipboard.on('success', function (e) {
 | 
	
		
			
				|  |  | +    // state.toast.txt = 'Copy Successfully'
 | 
	
		
			
				|  |  | +    // state.toast.has_icon = true
 | 
	
		
			
				|  |  | +    // state.toast.show = true
 | 
	
		
			
				|  |  | +    // setTimeout(() => {
 | 
	
		
			
				|  |  | +    //     state.toast.show = false
 | 
	
		
			
				|  |  | +    // }, 2000)
 | 
	
		
			
				|  |  | +    e.clearSelection();
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +  showShareTips.value = true;
 | 
	
		
			
				|  |  | +  selectShareApp.value = item;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (item.name == 'facebook') {
 | 
	
		
			
				|  |  | +    setChromeStorage({
 | 
	
		
			
				|  |  | +      shareFacebookData: JSON.stringify({
 | 
	
		
			
				|  |  | +        contentStr: item.inviteContent
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | -    showShareTips.value = true;
 | 
	
		
			
				|  |  | -    selectShareApp.value = item;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (item.name == 'facebook') {
 | 
	
		
			
				|  |  | -        setChromeStorage({
 | 
	
		
			
				|  |  | -            shareFacebookData: JSON.stringify({
 | 
	
		
			
				|  |  | -                contentStr: item.inviteContent
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -        let cbParams = {
 | 
	
		
			
				|  |  | -            bizType: 'TEASURE_INVITE'
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        let url = `https://www.facebook.com/dialog/share?app_id=${facebookAppConfig.facebookAppId}&display=popup&href=${item.treasureInviteUrl}&redirect_uri=${facebookAppConfig.faceShareRedirectUrl}?params=${JSON.stringify(cbParams)}`;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        setTimeout(() => {
 | 
	
		
			
				|  |  | -          showShareTips.value = false;
 | 
	
		
			
				|  |  | -          chrome.windows.create({
 | 
	
		
			
				|  |  | -            width: 800,
 | 
	
		
			
				|  |  | -              type: 'normal',
 | 
	
		
			
				|  |  | -              url
 | 
	
		
			
				|  |  | -          }, function (window) {
 | 
	
		
			
				|  |  | -          })
 | 
	
		
			
				|  |  | -        }, 1000)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -        setTimeout(() => {
 | 
	
		
			
				|  |  | -          showShareTips.value = false;
 | 
	
		
			
				|  |  | -          channelLoadingImg.value = '';
 | 
	
		
			
				|  |  | -          chrome.tabs.create({
 | 
	
		
			
				|  |  | -              url: item.redirectPath
 | 
	
		
			
				|  |  | -          });
 | 
	
		
			
				|  |  | -        }, 1000)
 | 
	
		
			
				|  |  | +    let cbParams = {
 | 
	
		
			
				|  |  | +      bizType: 'TEASURE_INVITE'
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    Report.reportLog({
 | 
	
		
			
				|  |  | -        businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | -        pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | -        objectType: Report.objectType.channelButton,
 | 
	
		
			
				|  |  | -        shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | -        myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | -        currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | -        postId: state.postId,
 | 
	
		
			
				|  |  | -        redPacketType: Report.redPacketType.treasure
 | 
	
		
			
				|  |  | -    }, {
 | 
	
		
			
				|  |  | -        'channel-name': item.name
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | +    let url = `https://www.facebook.com/dialog/share?app_id=${facebookAppConfig.facebookAppId}&display=popup&href=${item.treasureInviteUrl}&redirect_uri=${facebookAppConfig.faceShareRedirectUrl}?params=${JSON.stringify(cbParams)}`;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    setTimeout(() => {
 | 
	
		
			
				|  |  | +      showShareTips.value = false;
 | 
	
		
			
				|  |  | +      chrome.windows.create({
 | 
	
		
			
				|  |  | +        width: 800,
 | 
	
		
			
				|  |  | +        type: 'normal',
 | 
	
		
			
				|  |  | +        url
 | 
	
		
			
				|  |  | +      }, function (window) {
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    }, 1000)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    setTimeout(() => {
 | 
	
		
			
				|  |  | +      showShareTips.value = false;
 | 
	
		
			
				|  |  | +      channelLoadingImg.value = '';
 | 
	
		
			
				|  |  | +      chrome.tabs.create({
 | 
	
		
			
				|  |  | +        url: item.redirectPath
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }, 1000)
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  Report.reportLog({
 | 
	
		
			
				|  |  | +    businessType: Report.businessType.buttonClick,
 | 
	
		
			
				|  |  | +    pageSource: Report.pageSource.inviteFriendsPage,
 | 
	
		
			
				|  |  | +    objectType: Report.objectType.channelButton,
 | 
	
		
			
				|  |  | +    shareLinkId: state.invite_code,
 | 
	
		
			
				|  |  | +    myShareLinkId: state.detail.inviteCopyUrl,
 | 
	
		
			
				|  |  | +    currentInvitedNum: state.inviteCount,
 | 
	
		
			
				|  |  | +    postId: state.postId,
 | 
	
		
			
				|  |  | +    redPacketType: Report.redPacketType.treasure
 | 
	
		
			
				|  |  | +  }, {
 | 
	
		
			
				|  |  | +    'channel-name': item.name
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const setFrontConfig = () => {
 | 
	
		
			
				|  |  | -    getFrontConfig({
 | 
	
		
			
				|  |  | -        params: {},
 | 
	
		
			
				|  |  | -    }).then((res) => {
 | 
	
		
			
				|  |  | -        if (res.code == 0) {
 | 
	
		
			
				|  |  | -            facebookAppConfig.facebookAppId = res.data.fbClientId;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | +  getFrontConfig({
 | 
	
		
			
				|  |  | +    params: {},
 | 
	
		
			
				|  |  | +  }).then((res) => {
 | 
	
		
			
				|  |  | +    if (res.code == 0) {
 | 
	
		
			
				|  |  | +      facebookAppConfig.facebookAppId = res.data.fbClientId;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const clickCopy = () => {
 | 
	
		
			
				|  |  | -    var clipboard = new ClipboardJS('.copy-btn');
 | 
	
		
			
				|  |  | -    clipboard.on('success', function (e) {
 | 
	
		
			
				|  |  | -        state.toast.txt = 'Copy Successfully'
 | 
	
		
			
				|  |  | -        state.toast.has_icon = true
 | 
	
		
			
				|  |  | -        state.toast.show = true
 | 
	
		
			
				|  |  | -        setTimeout(() => {
 | 
	
		
			
				|  |  | -            state.toast.show = false
 | 
	
		
			
				|  |  | -        }, 2000)
 | 
	
		
			
				|  |  | -        e.clearSelection();
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    clipboard.on('error', function (e) {
 | 
	
		
			
				|  |  | -        state.toast.txt = 'Copy Error'
 | 
	
		
			
				|  |  | -        state.toast.has_icon = false
 | 
	
		
			
				|  |  | -        state.toast.show = true
 | 
	
		
			
				|  |  | -        setTimeout(() => {
 | 
	
		
			
				|  |  | -            state.toast.show = false
 | 
	
		
			
				|  |  | -        }, 2000)
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | +  var clipboard = new ClipboardJS('.copy-btn');
 | 
	
		
			
				|  |  | +  clipboard.on('success', function (e) {
 | 
	
		
			
				|  |  | +    state.toast.txt = 'Copy Successfully'
 | 
	
		
			
				|  |  | +    state.toast.has_icon = true
 | 
	
		
			
				|  |  | +    state.toast.show = true
 | 
	
		
			
				|  |  | +    setTimeout(() => {
 | 
	
		
			
				|  |  | +      state.toast.show = false
 | 
	
		
			
				|  |  | +    }, 2000)
 | 
	
		
			
				|  |  | +    e.clearSelection();
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  clipboard.on('error', function (e) {
 | 
	
		
			
				|  |  | +    state.toast.txt = 'Copy Error'
 | 
	
		
			
				|  |  | +    state.toast.has_icon = false
 | 
	
		
			
				|  |  | +    state.toast.show = true
 | 
	
		
			
				|  |  | +    setTimeout(() => {
 | 
	
		
			
				|  |  | +      state.toast.show = false
 | 
	
		
			
				|  |  | +    }, 2000)
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  <style lang="scss" scoped>
 | 
	
		
			
				|  |  |  .invite-friends {
 | 
	
		
			
				|  |  | -    padding: 9px 14px 14px 14px;
 | 
	
		
			
				|  |  | -    background: #fff;
 | 
	
		
			
				|  |  | +  padding: 9px 14px 14px 14px;
 | 
	
		
			
				|  |  | +  background: #fff;
 | 
	
		
			
				|  |  | +  box-sizing: border-box;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .invite-friends-content {
 | 
	
		
			
				|  |  | +    max-height: 242px;
 | 
	
		
			
				|  |  | +    overflow-y: auto;
 | 
	
		
			
				|  |  | +    margin-bottom: 10px;
 | 
	
		
			
				|  |  |      box-sizing: border-box;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    .invite-friends-content {
 | 
	
		
			
				|  |  | -      max-height: 242px;
 | 
	
		
			
				|  |  | -      overflow-y: auto;
 | 
	
		
			
				|  |  | -      margin-bottom: 10px;
 | 
	
		
			
				|  |  | +    .invite-friends-content-head {
 | 
	
		
			
				|  |  | +      margin-bottom: 16px;
 | 
	
		
			
				|  |  | +      padding: 0 6px;
 | 
	
		
			
				|  |  |        box-sizing: border-box;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      .invite-friends-content-head {
 | 
	
		
			
				|  |  | -        margin-bottom: 16px;
 | 
	
		
			
				|  |  | -        padding: 0 6px;
 | 
	
		
			
				|  |  | -        box-sizing: border-box;
 | 
	
		
			
				|  |  | +      .title {
 | 
	
		
			
				|  |  | +        font-weight: 900;
 | 
	
		
			
				|  |  | +        font-size: 18px;
 | 
	
		
			
				|  |  | +        margin-bottom: 7px;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        .title {
 | 
	
		
			
				|  |  | -          font-weight: 900;
 | 
	
		
			
				|  |  | -          font-size: 18px;
 | 
	
		
			
				|  |  | -          margin-bottom: 7px;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        .info {
 | 
	
		
			
				|  |  | -          font-weight: 400;
 | 
	
		
			
				|  |  | +      .info {
 | 
	
		
			
				|  |  | +        font-weight: 400;
 | 
	
		
			
				|  |  | +        font-size: 12px;
 | 
	
		
			
				|  |  | +        color: #7A7A7A;
 | 
	
		
			
				|  |  | +        line-height: 15px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        span {
 | 
	
		
			
				|  |  | +          font-weight: 800;
 | 
	
		
			
				|  |  |            font-size: 12px;
 | 
	
		
			
				|  |  | -          color: #7A7A7A;
 | 
	
		
			
				|  |  |            line-height: 15px;
 | 
	
		
			
				|  |  | -          span{
 | 
	
		
			
				|  |  | -            font-family: 'SF Pro Display';
 | 
	
		
			
				|  |  | -            font-style: normal;
 | 
	
		
			
				|  |  | -            font-weight: 800;
 | 
	
		
			
				|  |  | -            font-size: 12px;
 | 
	
		
			
				|  |  | -            line-height: 15px;
 | 
	
		
			
				|  |  | -            /* identical to box height, or 125% */
 | 
	
		
			
				|  |  | -            letter-spacing: 0.3px;
 | 
	
		
			
				|  |  | -            color: #000000;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | +          color: #000000;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .invite-friends-content-body {
 | 
	
		
			
				|  |  | +      position: relative;
 | 
	
		
			
				|  |  | +      height: 159px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      .tips {
 | 
	
		
			
				|  |  | +        position: absolute;
 | 
	
		
			
				|  |  | +        top: -42px;
 | 
	
		
			
				|  |  | +        left: 0;
 | 
	
		
			
				|  |  | +        width: 146px;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      .invite-friends-content-body {
 | 
	
		
			
				|  |  | -        position: relative;
 | 
	
		
			
				|  |  | -        height: 159px;
 | 
	
		
			
				|  |  | +      .share-list-active {
 | 
	
		
			
				|  |  | +        background: rgba(29, 155, 240, 0.1);
 | 
	
		
			
				|  |  | +        border: 1.5px solid #1D9BF0 !important;
 | 
	
		
			
				|  |  | +        border-radius: 10px;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        .tips {
 | 
	
		
			
				|  |  | -          position: absolute;
 | 
	
		
			
				|  |  | -          top: -42px;
 | 
	
		
			
				|  |  | -          left: 0;
 | 
	
		
			
				|  |  | -          width: 146px;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +      .share-list {
 | 
	
		
			
				|  |  | +        display: flex;
 | 
	
		
			
				|  |  | +        flex-wrap: wrap;
 | 
	
		
			
				|  |  | +        width: 100%;
 | 
	
		
			
				|  |  | +        box-sizing: border-box;
 | 
	
		
			
				|  |  | +        border: 1.5px solid #fff;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        .share-list-active {
 | 
	
		
			
				|  |  | -          background: rgba(29, 155, 240, 0.1);
 | 
	
		
			
				|  |  | -          border: 1.5px solid #1D9BF0 !important;
 | 
	
		
			
				|  |  | -          border-radius: 10px;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        .share-list {
 | 
	
		
			
				|  |  | +        .share-item {
 | 
	
		
			
				|  |  | +          user-select: none;
 | 
	
		
			
				|  |  | +          width: 20%;
 | 
	
		
			
				|  |  |            display: flex;
 | 
	
		
			
				|  |  | -          flex-wrap: wrap;
 | 
	
		
			
				|  |  | -          width: 100%;
 | 
	
		
			
				|  |  | +          flex-direction: column;
 | 
	
		
			
				|  |  | +          align-items: center;
 | 
	
		
			
				|  |  | +          justify-content: center;
 | 
	
		
			
				|  |  | +          padding: 8px 2px;
 | 
	
		
			
				|  |  |            box-sizing: border-box;
 | 
	
		
			
				|  |  | -          border: 1.5px solid #fff;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          .share-item {
 | 
	
		
			
				|  |  | -            user-select: none;
 | 
	
		
			
				|  |  | -            width: 20%;
 | 
	
		
			
				|  |  | -            display: flex;
 | 
	
		
			
				|  |  | -            flex-direction: column;
 | 
	
		
			
				|  |  | -            align-items: center;
 | 
	
		
			
				|  |  | -            justify-content: center;
 | 
	
		
			
				|  |  | -            padding: 8px 2px;
 | 
	
		
			
				|  |  | -            box-sizing: border-box;
 | 
	
		
			
				|  |  | -            border-radius: 12px;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            cursor: pointer;
 | 
	
		
			
				|  |  | -            img {
 | 
	
		
			
				|  |  | -                width: 40px;
 | 
	
		
			
				|  |  | -                height: 40px;
 | 
	
		
			
				|  |  | -                border-radius: 100px;
 | 
	
		
			
				|  |  | -                margin-bottom: 8px;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            .name {
 | 
	
		
			
				|  |  | -              font-weight: 400;
 | 
	
		
			
				|  |  | -              font-size: 12px;
 | 
	
		
			
				|  |  | -              color: #898989;
 | 
	
		
			
				|  |  | -              width: 100%;
 | 
	
		
			
				|  |  | -              overflow: hidden;
 | 
	
		
			
				|  |  | -              text-overflow: ellipsis; //文本溢出显示省略号
 | 
	
		
			
				|  |  | -              white-space: nowrap;
 | 
	
		
			
				|  |  | -              text-align: center;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +          border-radius: 12px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          cursor: pointer;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          img {
 | 
	
		
			
				|  |  | +            width: 40px;
 | 
	
		
			
				|  |  | +            height: 40px;
 | 
	
		
			
				|  |  | +            border-radius: 100px;
 | 
	
		
			
				|  |  | +            margin-bottom: 8px;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -          .share-item:hover {
 | 
	
		
			
				|  |  | -            animation: fade-in-gray 0.25s linear forwards;
 | 
	
		
			
				|  |  | +          .name {
 | 
	
		
			
				|  |  | +            font-weight: 400;
 | 
	
		
			
				|  |  | +            font-size: 12px;
 | 
	
		
			
				|  |  | +            color: #898989;
 | 
	
		
			
				|  |  | +            width: 100%;
 | 
	
		
			
				|  |  | +            overflow: hidden;
 | 
	
		
			
				|  |  | +            text-overflow: ellipsis; //文本溢出显示省略号
 | 
	
		
			
				|  |  | +            white-space: nowrap;
 | 
	
		
			
				|  |  | +            text-align: center;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        .share-item:hover {
 | 
	
		
			
				|  |  | +          animation: fade-in-gray 0.25s linear forwards;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    .mask {
 | 
	
		
			
				|  |  | -      position: fixed;
 | 
	
		
			
				|  |  | -      top: 0;
 | 
	
		
			
				|  |  | -      left: 0;
 | 
	
		
			
				|  |  | -      width: 375px;
 | 
	
		
			
				|  |  | -      height: 100%;
 | 
	
		
			
				|  |  | -      background: rgba($color: #000000, $alpha: 0.9);
 | 
	
		
			
				|  |  | -      z-index: 1000;
 | 
	
		
			
				|  |  | -      display: flex;
 | 
	
		
			
				|  |  | -      align-items: center;
 | 
	
		
			
				|  |  | -      justify-content: center;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      .content {
 | 
	
		
			
				|  |  | -        text-align: center;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      .icon-loading {
 | 
	
		
			
				|  |  | -        width: 60px;
 | 
	
		
			
				|  |  | -        height: 60px;
 | 
	
		
			
				|  |  | -        margin-bottom: 30px;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +  .mask {
 | 
	
		
			
				|  |  | +    position: fixed;
 | 
	
		
			
				|  |  | +    top: 0;
 | 
	
		
			
				|  |  | +    left: 0;
 | 
	
		
			
				|  |  | +    width: 375px;
 | 
	
		
			
				|  |  | +    height: 100%;
 | 
	
		
			
				|  |  | +    background: rgba($color: #000000, $alpha: 0.9);
 | 
	
		
			
				|  |  | +    z-index: 1000;
 | 
	
		
			
				|  |  | +    display: flex;
 | 
	
		
			
				|  |  | +    align-items: center;
 | 
	
		
			
				|  |  | +    justify-content: center;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .content {
 | 
	
		
			
				|  |  | +      text-align: center;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      .text {
 | 
	
		
			
				|  |  | -        font-weight: 600;
 | 
	
		
			
				|  |  | -        font-size: 17px;
 | 
	
		
			
				|  |  | -        color: #FFFFFF;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +    .icon-loading {
 | 
	
		
			
				|  |  | +      width: 60px;
 | 
	
		
			
				|  |  | +      height: 60px;
 | 
	
		
			
				|  |  | +      margin-bottom: 30px;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .text {
 | 
	
		
			
				|  |  | +      font-weight: 600;
 | 
	
		
			
				|  |  | +      font-size: 17px;
 | 
	
		
			
				|  |  | +      color: #FFFFFF;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    @keyframes fade-in-gray {
 | 
	
		
			
				|  |  |      from {
 | 
	
		
			
				|  |  |        background: none;
 |