diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2025-08-16 07:32:06 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2025-08-16 07:32:06 +0000 |
| commit | e3bf34095ac7571d04ebddba6f04815d7a71ed13 (patch) | |
| tree | d5940768d254d3aa6862c32012002d5274467227 /src/lib/maps/stores/useMaps.js | |
| parent | 3d556e5835e5ff058c48000639f7171cb350a84d (diff) | |
| parent | cf76c139519b8fda880969e151928c203538fd69 (diff) | |
Merged in fix-map (pull request #445)
Fix map
Diffstat (limited to 'src/lib/maps/stores/useMaps.js')
| -rw-r--r-- | src/lib/maps/stores/useMaps.js | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/lib/maps/stores/useMaps.js b/src/lib/maps/stores/useMaps.js index c57a05ad..f7636c24 100644 --- a/src/lib/maps/stores/useMaps.js +++ b/src/lib/maps/stores/useMaps.js @@ -1,32 +1,47 @@ import { create } from "zustand"; -const center = { - lat: -6.200000, // Default latitude (Jakarta) - lng: 106.816666, // Default longitude (Jakarta) -}; - -export const useMaps = create((set) => ({ - // State existing - selectedPosition: center, +const DEFAULT_CENTER = { lat: -6.2, lng: 106.816666 }; + +export const useMaps = create((set, get) => ({ + // ==== STATE ==== + selectedPosition: null, addressMaps: '', detailAddress: {}, pinedMaps: false, - // State tambahan untuk penyimpanan posisi sementara + // posisi sementara (create/edit) tempPositionCreate: null, tempPositionEdit: null, - // Setter existing + // ==== SETTERS ==== setSelectedPosition: (position) => set({ selectedPosition: position }), setAddressMaps: (addressMaps) => set({ addressMaps }), setDetailAddress: (detailAddress) => set({ detailAddress }), setPinedMaps: (pinedMaps) => set({ pinedMaps }), - // Setter tambahan untuk posisi sementara setTempPositionCreate: (position) => set({ tempPositionCreate: position }), setTempPositionEdit: (position) => set({ tempPositionEdit: position }), - // Opsional: Reset jika ingin clear saat keluar halaman resetTempPositionCreate: () => set({ tempPositionCreate: null }), resetTempPositionEdit: () => set({ tempPositionEdit: null }), + + getDefaultCenter: () => DEFAULT_CENTER, + + isPinned: () => { + const p = get().selectedPosition; + if (!p || typeof p.lat !== 'number' || typeof p.lng !== 'number') return false; + const isDefault = + Math.abs(p.lat - DEFAULT_CENTER.lat) < 1e-6 && + Math.abs(p.lng - DEFAULT_CENTER.lng) < 1e-6; + return !isDefault; + }, + + resetPin: () => set({ + selectedPosition: null, + addressMaps: '', + detailAddress: {}, + pinedMaps: false, + tempPositionCreate: null, + tempPositionEdit: null, + }), })); |
