global-shortcuts.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import appSettings from '@/core/config/app-settings'
  2. import { coerceIceServerList } from '@/platform/webrtc-ice'
  3. import { openPage, openWithLogin, openAnyLink } from '@/core/nav/navigation'
  4. import { detailPageUrl, videoDetailUrl } from '@/features/dynamics/post-media'
  5. export function installGlobalShortcuts(proto) {
  6. proto.onGoods = (id) => openPage(`/pages/product/goods?id=${id}`)
  7. proto.orderDetails = (orderId) => openPage(`/pages/user/order/details?id=${orderId}`)
  8. proto.onShop = (id) => openPage(`/pages/shop/index?id=${id}`)
  9. proto.onShopGoods = (id) => openPage(`/pages/shop/product/list?shop_id=${id}`)
  10. proto.onLogistics = (orderId) => openPage(`/pages/user/order/logistics?id=${orderId}`)
  11. proto.toChat = (shopId, goods = null) => {
  12. const base = `/pages/notice/chat?shop_id=${shopId}`
  13. openPage(goods ? `${base}&goods=${JSON.stringify(goods)}` : base)
  14. }
  15. proto.onDetails = (id, title) => {
  16. const raw = id != null ? String(id).trim() : ''
  17. if (!raw) return
  18. const encodedTitle = title != null ? String(title) : ''
  19. if (/^https?:\/\//i.test(raw)) {
  20. openPage(
  21. `/pages/article/details?url=${encodeURIComponent(raw)}&title=${encodedTitle}`
  22. )
  23. return
  24. }
  25. openPage(`/pages/article/details?id=${raw}&title=${encodedTitle}`)
  26. }
  27. proto.onAdvert = (data) => {
  28. if (data.url && !/^https?:\/\//.test(data.url)) {
  29. openAnyLink(data.url)
  30. } else {
  31. openPage(`/pages/article/advert?id=${data.id}`)
  32. }
  33. }
  34. proto.onLive = (id) => openWithLogin(`/pages/apps/find/details/live?id=${id}`)
  35. proto.$webrtcIceServers = () => {
  36. const list = appSettings.webrtcIceServers
  37. if (!Array.isArray(list) || !list.length) return null
  38. return coerceIceServerList(list)
  39. }
  40. proto.onFind = function onFindEntry(data, comments = null) {
  41. if (data.type === 'live') {
  42. this.onLive(data.live_id)
  43. return
  44. }
  45. if (data.type === 'video') {
  46. openPage(videoDetailUrl(data.id, {
  47. labelId: data.label_id,
  48. page: data.page,
  49. compId: data.compID || data.compId,
  50. orderType: data.order_type,
  51. isHotDian: data.is_hot_dian
  52. }))
  53. return
  54. }
  55. const focus = comments ? 'comments' : ''
  56. openPage(detailPageUrl(data.id, { focus, img: data.img }))
  57. }
  58. }