javascript LPのAPIの返却値でボタン出し分け

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript LPのAPIの返却値でボタン出し分け相关的知识,希望对你有一定的参考价值。

import axios from 'axios'
import forEach from 'lodash/forEach'

import { isLocalEnv, isFrontEnv, isTestEnv } from '../util/env'

// フロントエンド、テスト環境での検証時はhttp://test-present.gnavi.co.jp/present/sample_cors.php の検証ユーザでログイン
const rakutenCpId = isFrontEnv() || isTestEnv() ? 'cam190101_04' : 'cam190301_03'
const rakutenAllianceCode = 'RKT'

const domainPrefix = isFrontEnv() || isTestEnv() ? 'test-' : ''
const endpointUrl = {
  cpHistoryApi: isLocalEnv() ? 'http://localhost:3003/history/1' : `https://${domainPrefix}my.gnavi.co.jp/api/my/cam/v1/subscribe/history?content_id=campaign_lp&event_id=${rakutenCpId}`,
  alliancePointApi: isLocalEnv() ? 'http://localhost:3003/point/1' : `https://${domainPrefix}my.gnavi.co.jp/api/my/point/v1/cooperation/lists?contents_code=VPL`,
}

const entryButtons = document.getElementsByClassName('js-raku-entry-button')
const entryButtonsInactive = document.getElementsByClassName('js-raku-entry-button-inacitve')

const toggleEntryButtons = () => {
  forEach(entryButtons, (entryButton) => {
    entryButton.classList.add('-hide')
  })
  forEach(entryButtonsInactive, (entryButton) => {
    entryButton.classList.add('-active')
  })
}

const fetchAllianceApi = () => (
  new Promise((resolve, reject) => {
    axios.get(endpointUrl.alliancePointApi, { withCredentials: true })
      .then((res) => {
        if (res.data.status === 200) {
          // "cooperation_flg": 1 (連携済み)かつ "default": 1(貯まるポイントに設定)のアライアンスがalliance_infoとして返ってくる
          const isAllianceRakuten = res.data.alliance_info.some(info => info.alliance_code === rakutenAllianceCode)
          if (isAllianceRakuten) resolve()
        }
      })
      .catch((err) => {
        reject(err)
      })
  })
)

const fetchHistoryApi = () => (
  new Promise((resolve, reject) => {
    axios.get(endpointUrl.cpHistoryApi, { withCredentials: true })
      // 既に当キャンペーンに応募済みの場合のみ、ポイント情報のapiを叩きにいく
      .then((res) => {
        if (res.data.status === '200') {
          const subscribeList = res.data.subscribe_list
          if (subscribeList.length) resolve()
        }
      })
      .catch((err) => {
        reject(err)
      })
  })
)

const memberApi = () => {
  // 対象キャンペーンに応募済み、楽天ID連携済み・貯まるポイントを楽天ポイントに設定、をすべて満たした場合のみエントリーボタンを非活性に
  Promise.all([fetchHistoryApi(), fetchAllianceApi()])
    .then(() => toggleEntryButtons())
    .catch((err) => { throw new Error(err) })
}

export default memberApi

以上是关于javascript LPのAPIの返却値でボタン出し分け的主要内容,如果未能解决你的问题,请参考以下文章

java 安卓の戻るボタンで戻れないようにする

javascript Issue329:20171130 - no58。予约ボタンと电话ボタンの追従

css よくるるコンポーネントの设计·実装パターン - ボタン编:http://qiita.com/usako/items/8b34838b1a15e062a122

javascript 开闭ボタン

javascript kintoneアクションボタンの拡张

java Dialogを使って复数项目から一つの项目を选択する(确认ボタンつき)参考:http://qiita.com/Taishi-Y/items/34975da9d1cfd0f72718