forked from zhouruizhe/gmTouringMiniApp
28 lines
846 B
TypeScript
28 lines
846 B
TypeScript
import { getCheckInTask } from '@/data/check-in'
|
|
import { getPoiRepository } from '@/data/poi'
|
|
import {
|
|
applyCheckIn,
|
|
type CheckInLocationSnapshot,
|
|
type CheckInProfile,
|
|
type CheckInResult,
|
|
} from '@/domain/check-in'
|
|
import { loadCheckInProfile, saveCheckInProfile } from './storage'
|
|
|
|
export function checkInAtPoi(
|
|
poiId: string,
|
|
location: CheckInLocationSnapshot,
|
|
now = Date.now(),
|
|
): CheckInResult {
|
|
const poi = getPoiRepository().getPoiById(poiId)
|
|
const task = poi ? getCheckInTask(poi.id) : null
|
|
if (!poi || !task)
|
|
throw new Error('该点位不存在或已下线,暂时无法打卡')
|
|
const result = applyCheckIn(loadCheckInProfile(), poi, location, now, task.radiusMeters)
|
|
saveCheckInProfile(result.profile)
|
|
return result
|
|
}
|
|
|
|
export function getCheckInProfile(): CheckInProfile {
|
|
return loadCheckInProfile()
|
|
}
|