import { useState, useEffect } from 'react'
import { Link, useLocation, useParams, Navigate, useSearchParams } from 'react-router-dom'
import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
dayjs.extend(utc)
import Message from './Message'
import Spinner from './Spinner'
import UserInfo from './UserInfo'
import { getMessages } from '../api'
import { useVisitor } from './VisitorContext'
import { Helmet } from 'react-helmet-async'
/**
* @typedef {object} Query
* @property {string} baseUrl
* @property {object=} search
* @property {string} pageParam
*/
/**
* @typedef {object} PageProps
* @property {string=} search
* @property {import('../api').Message[]=} msgs
*/
function RequireAuth({ children }) {
let location = useLocation()
let [visitor] = useVisitor()
if (!visitor.hash) {
// Redirect them to the /login page, but save the current location they were
// trying to go to when they were redirected. This allows us to send them
// along to that page after they login, which is a nicer user experience
// than dropping them off on the home page.
return
}
return children
}
/**
*
*/
export function Discover() {
const [search] = useSearchParams()
const query = {
baseUrl: '/api/messages',
search: search,
pageParam: search.search ? 'page' : 'before_mid'
}
return (
<>
Discover
>
)
}
/**
*
*/
export function Discussions() {
const query = {
baseUrl: '/api/messages/discussions',
pageParam: 'to'
}
return (
<>
Discussions
>
)
}
/**
*
*/
export function Blog() {
const { user } = useParams()
const [params] = useSearchParams()
const search = {
...params,
uname: user
}
const query = {
baseUrl: '/api/messages',
search: search,
pageParam: search.search ? 'page' : 'before_mid'
}
const blogTitle = `${user} blog`
const pageTitle = search.tag ? `${blogTitle}: #${search.tag}` : blogTitle
return (
<>
{pageTitle}