index.ts 980 Bytes
import * as dd from 'dingtalk-jsapi';

export const handleWindowOpen = (
  strUrl: string,
  strWindowName: string = '_blank',
  strWindowFeatures?: string,
) => {
  const isInDing = dd && dd?.env?.platform !== 'notInDingTalk';
  const dingSearch =
    localStorage.getItem('__DING_SEARCH__')?.replace('?', '&') || '';
  const appendStr = `${
    strWindowName !== '_self' ? 'ddtab=true' : ''
  }${dingSearch}`;

  if (!isInDing || strUrl.includes(appendStr)) {
    console.log('handleWindowOpen-prevUrl', strUrl);
    window.open(strUrl, strWindowName, strWindowFeatures);
    return;
  }

  let newUrl: string = '';
  if (strUrl.includes('#/')) {
    const [prev, next] = strUrl.split('#/');
    newUrl = `${prev}${prev.includes('?') ? '&' : '?'}${appendStr}#/${next}`;
  } else {
    newUrl = `${strUrl}${strUrl.includes('?') ? '&' : '?'}${appendStr}`;
  }
  console.log('handleWindowOpen-newUrl', newUrl);
  window.open(newUrl, strWindowName, strWindowFeatures);
  return;
};