import { defineStore } from 'pinia'

export const useBreadcrumbs = defineStore('breadcrumbsStore', {
	state: () => ({
		names: new Map(),
		context: null,
		rootContext: null,
	}),
	actions: {
		getName(route) {
			return this.names.get(route) ?? ''
		},
		setName(route, title) {
			this.names.set(route, title)
		},
		// resets breadcrumbs to only included ones as to not have stale breadcrumbs
		resetToNames(breadcrumbs) {
			if (!breadcrumbs) return
			// names is an array of every breadcrumb.name that starts with a ?
			const names = breadcrumbs
				.filter((breadcrumb) => breadcrumb.name.charAt(0) === '?')
				.map((breadcrumb) => breadcrumb.name.slice(1))
			// remove all names that are not in the names array
			for (const [route] of this.names) {
				if (!names.includes(route)) {
					this.names.delete(route)
				}
			}
		},
		setContext(context) {
			this.context = context
		},
		setRootContext(context) {
			this.rootContext = context
		},
	},
})
