MainView

๐Ÿ“Ž ๋ฉ”์ธ ๋ ˆ์ด์•„์›ƒ

<div class="dash-body">
  <aside class="dash-left">
    <MainCalendar ... />
  </aside>

  <main class="dash-right">
    <MainList ... />
  </main>
</div>

๐Ÿ“Ž ์ธ์ฆ ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌ(Unauthorized Logout)

function unauthorizedLogout() {
  setAuthMessage({ error: "์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ด์ฃผ์„ธ์š”.", info: "" });
  timer.stop();
  clearAuth();
  router.replace("/auth");
}

๐Ÿ“Ž useTodos ์—ฐ๊ฒฐ ๊ตฌ์กฐ

const {
  todoList,
  newTitle,
  editId,
  editTitle,
  startEdit,
  cancelEdit,
  saveEdit,
  selectedDateObj,
  selectedDate,
  calendarAttrs,
  remainingForSelectedDate,
  loadMonthSummary,
  initialPage,
  addTodo,
  toggleTodo,
  deleteTodo,
} = useTodos({
  tokenRef: token,
  authHeaderFn: authHeader,
  onUnauthorized: unauthorizedLogout,
});

๐Ÿ“Ž ์บ˜๋ฆฐ๋” ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ

<MainCalendar
  v-model:selectedDateObj="selectedDateObj"
  :calendar-attrs="calendarAttrs"
  :selected-date="selectedDate"
  :remaining="remainingForSelectedDate"
  :initial-page="initialPage"
  @monthChange="loadMonthSummary"
/>

๐Ÿ“Ž ์„ธ์…˜ ํƒ€์ด๋จธ

if (token.value) timer.start();

function extendSession() {
  timer.reset(60 * 60);
  setAuthMessage({ info: "์„ธ์…˜์ด 60๋ถ„์œผ๋กœ ์—ฐ์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.", error: "" });
}