<script setup lang="ts">
import PageState from '@/components/poi/PageState.vue'

/**
 * 旧详情页路由的兼容跳板。
 *
 * 详情页已从 `pages/poi/detail` 移入 `pages-poi` 分包（见 f8ad5e1）。
 * 旧路径一旦从 app.json 消失，任何还攥着它的入口 —— 开发者工具模拟器上次停留的
 * 路由、预览时的启动页、已经发出去的分享卡片或二维码 —— 冷启动都会落到一个
 * 微信解析不出来的路由上，渲染成白屏，左上角只剩一个回首页的小房子。
 *
 * 这里保留一个只做重定向的空页面把流量接回新路径。等所有入口都刷新过之后可以删掉。
 */
const REDIRECT_FAILURE_TOAST = '点位详情已更新，正在返回地图'

function fallbackToMap() {
  uni.reLaunch({ url: '/pages/map/index' })
}

onLoad((query) => {
  const rawPoiId = typeof query?.poiId === 'string' ? query.poiId : ''
  if (!rawPoiId.trim()) {
    fallbackToMap()
    return
  }

  // redirectTo 而非 navigateTo：跳板本身不该留在页面栈里。
  uni.redirectTo({
    url: `/pages-poi/detail?poiId=${encodeURIComponent(rawPoiId)}`,
    fail: () => {
      uni.showToast({ title: REDIRECT_FAILURE_TOAST, icon: 'none' })
      fallbackToMap()
    },
  })
})
</script>

<template>
  <view class="poi-detail-redirect">
    <PageState state="loading" title="正在打开点位详情…" />
  </view>
</template>

<route lang="yaml">
layout: map
style:
  navigationBarTitleText: 点位详情
  navigationBarBackgroundColor: '#ffffff'
  navigationBarTextStyle: black
  backgroundColor: '#f5f7f6'
</route>

<style scoped lang="scss">
.poi-detail-redirect {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 100vh;
  background: #f5f7f6;
}
</style>
