Compare commits
	
		
			6 commits
		
	
	
		
			5742932c86
			...
			d7e1358495
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | d7e1358495 | ||
|  | 59c7a5c588 | ||
|  | 8d04874bce | ||
|  | 4df609f1f5 | ||
|  | 81b5fe1450 | ||
|  | 2da07a8d01 | 
					 8 changed files with 105 additions and 83 deletions
				
			
		|  | @ -1,6 +1,8 @@ | ||||||
| import { createCacheBucket } from "~platform/cache"; | import { createCacheBucket } from "~platform/cache"; | ||||||
| 
 | 
 | ||||||
| export const cacheBucket = /* @__PURE__ */ createCacheBucket("mastodon"); | export const CACHE_BUCKET_NAME = "mastodon" | ||||||
|  | 
 | ||||||
|  | export const cacheBucket = /* @__PURE__ */ createCacheBucket(CACHE_BUCKET_NAME); | ||||||
| 
 | 
 | ||||||
| export function toSmallCamelCase<T>(object: T) :T { | export function toSmallCamelCase<T>(object: T) :T { | ||||||
|   if (!object || typeof object !== "object") { |   if (!object || typeof object !== "object") { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,31 @@ | ||||||
| .AppTopBar { | .AppTopBar { | ||||||
|   & > .toolbar { |   &::before { | ||||||
|  |     contain: strict; | ||||||
|  |     content: ""; | ||||||
|  |     position: absolute; | ||||||
|  |     top: 0; | ||||||
|  |     left: 0; | ||||||
|  |     right: 0; | ||||||
|  |     height: var(--safe-area-inset-top, 0); | ||||||
|  |     background-color: rgba(0, 0, 0, 0.2); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   &>.MuiToolbar-root { | ||||||
|     padding-top: var(--safe-area-inset-top, 0px); |     padding-top: var(--safe-area-inset-top, 0px); | ||||||
|     gap: 8px; |     gap: 8px; | ||||||
|  | 
 | ||||||
|  |     &>button:first-child, | ||||||
|  |     &>.MuiButtonBase-root:first-child { | ||||||
|  |       margin-left: -0.15em; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &>button:last-child, | ||||||
|  |     &>.MuiButtonBase-root:last-child { | ||||||
|  |       margin-right: -0.15em; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     &>.title { | ||||||
|  |       margin-top: -0.2ch; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | @ -20,7 +20,6 @@ const AppTopBar: ParentComponent<{ | ||||||
|     > |     > | ||||||
|       <Toolbar |       <Toolbar | ||||||
|         variant={windowSize.width > windowSize.height ? "dense" : "regular"} |         variant={windowSize.width > windowSize.height ? "dense" : "regular"} | ||||||
|         class="toolbar" |  | ||||||
|         sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |         sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} | ||||||
|       > |       > | ||||||
|         {props.children} |         {props.children} | ||||||
|  |  | ||||||
|  | @ -25,6 +25,7 @@ import type { Template } from "@solid-primitives/i18n"; | ||||||
| import { useStore } from "@nanostores/solid"; | import { useStore } from "@nanostores/solid"; | ||||||
| import { $settings } from "./stores"; | import { $settings } from "./stores"; | ||||||
| import { useNavigator } from "~platform/StackedRouter"; | import { useNavigator } from "~platform/StackedRouter"; | ||||||
|  | import AppTopBar from "~material/AppTopBar"; | ||||||
| 
 | 
 | ||||||
| const ChooseLang: Component = () => { | const ChooseLang: Component = () => { | ||||||
|   const { pop } = useNavigator(); |   const { pop } = useNavigator(); | ||||||
|  | @ -54,17 +55,12 @@ const ChooseLang: Component = () => { | ||||||
|   return ( |   return ( | ||||||
|     <Scaffold |     <Scaffold | ||||||
|       topbar={ |       topbar={ | ||||||
|         <AppBar position="static"> |         <AppTopBar> | ||||||
|           <Toolbar |           <IconButton color="inherit" onClick={[pop, 1]} disableRipple> | ||||||
|             variant="dense" |             <ArrowBack /> | ||||||
|             sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |           </IconButton> | ||||||
|           > |           <Title>{t("Choose Language")}</Title> | ||||||
|             <IconButton color="inherit" onClick={[pop, 1]} disableRipple> |         </AppTopBar> | ||||||
|               <ArrowBack /> |  | ||||||
|             </IconButton> |  | ||||||
|             <Title>{t("Choose Language")}</Title> |  | ||||||
|           </Toolbar> |  | ||||||
|         </AppBar> |  | ||||||
|       } |       } | ||||||
|     > |     > | ||||||
|       <List |       <List | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ import { createTranslator } from "~platform/i18n"; | ||||||
| import { useStore } from "@nanostores/solid"; | import { useStore } from "@nanostores/solid"; | ||||||
| import { $settings } from "./stores"; | import { $settings } from "./stores"; | ||||||
| import { useNavigator } from "~platform/StackedRouter"; | import { useNavigator } from "~platform/StackedRouter"; | ||||||
|  | import AppTopBar from "~material/AppTopBar"; | ||||||
| 
 | 
 | ||||||
| const Motions: Component = () => { | const Motions: Component = () => { | ||||||
|   const {pop} = useNavigator(); |   const {pop} = useNavigator(); | ||||||
|  | @ -31,17 +32,12 @@ const Motions: Component = () => { | ||||||
|   return ( |   return ( | ||||||
|     <Scaffold |     <Scaffold | ||||||
|       topbar={ |       topbar={ | ||||||
|         <AppBar position="static"> |         <AppTopBar> | ||||||
|           <Toolbar |           <IconButton color="inherit" onClick={[pop, 1]} disableRipple> | ||||||
|             variant="dense" |  | ||||||
|             sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |  | ||||||
|           > |  | ||||||
|             <IconButton color="inherit" onClick={[pop, 1]} disableRipple> |  | ||||||
|               <ArrowBack /> |               <ArrowBack /> | ||||||
|             </IconButton> |             </IconButton> | ||||||
|             <Title>{t("motions")}</Title> |             <Title>{t("motions")}</Title> | ||||||
|           </Toolbar> |         </AppTopBar> | ||||||
|         </AppBar> |  | ||||||
|       } |       } | ||||||
|     > |     > | ||||||
|       <List |       <List | ||||||
|  |  | ||||||
|  | @ -23,9 +23,10 @@ import type { Template } from "@solid-primitives/i18n"; | ||||||
| import { $settings } from "./stores"; | import { $settings } from "./stores"; | ||||||
| import { useStore } from "@nanostores/solid"; | import { useStore } from "@nanostores/solid"; | ||||||
| import { useNavigator } from "~platform/StackedRouter"; | import { useNavigator } from "~platform/StackedRouter"; | ||||||
|  | import AppTopBar from "~material/AppTopBar"; | ||||||
| 
 | 
 | ||||||
| const ChooseRegion: Component = () => { | const ChooseRegion: Component = () => { | ||||||
|   const {pop} = useNavigator(); |   const { pop } = useNavigator(); | ||||||
|   const [t] = createTranslator( |   const [t] = createTranslator( | ||||||
|     () => import("./i18n/generic.json"), |     () => import("./i18n/generic.json"), | ||||||
|     (code) => |     (code) => | ||||||
|  | @ -49,17 +50,12 @@ const ChooseRegion: Component = () => { | ||||||
|   return ( |   return ( | ||||||
|     <Scaffold |     <Scaffold | ||||||
|       topbar={ |       topbar={ | ||||||
|         <AppBar position="static"> |         <AppTopBar> | ||||||
|           <Toolbar |           <IconButton color="inherit" onClick={[pop, 1]} disableRipple> | ||||||
|             variant="dense" |             <ArrowBack /> | ||||||
|             sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |           </IconButton> | ||||||
|           > |           <Title>{t("Choose Region")}</Title> | ||||||
|             <IconButton color="inherit" onClick={[pop, 1]} disableRipple> |         </AppTopBar> | ||||||
|               <ArrowBack /> |  | ||||||
|             </IconButton> |  | ||||||
|             <Title>{t("Choose Region")}</Title> |  | ||||||
|           </Toolbar> |  | ||||||
|         </AppBar> |  | ||||||
|       } |       } | ||||||
|     > |     > | ||||||
|       <List |       <List | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ import { | ||||||
| import { | import { | ||||||
|   Animation as AnimationIcon, |   Animation as AnimationIcon, | ||||||
|   Close as CloseIcon, |   Close as CloseIcon, | ||||||
|  |   DeleteForever, | ||||||
|   Logout, |   Logout, | ||||||
|   Public as PublicIcon, |   Public as PublicIcon, | ||||||
|   Refresh as RefreshIcon, |   Refresh as RefreshIcon, | ||||||
|  | @ -40,6 +41,7 @@ import { type Template } from "@solid-primitives/i18n"; | ||||||
| import { useServiceWorker } from "~platform/host.js"; | import { useServiceWorker } from "~platform/host.js"; | ||||||
| import { useSessions } from "../masto/clients.js"; | import { useSessions } from "../masto/clients.js"; | ||||||
| import { useNavigator } from "~platform/StackedRouter.jsx"; | import { useNavigator } from "~platform/StackedRouter.jsx"; | ||||||
|  | import AppTopBar from "~material/AppTopBar.jsx"; | ||||||
| 
 | 
 | ||||||
| type Inset = { | type Inset = { | ||||||
|   top?: number; |   top?: number; | ||||||
|  | @ -141,11 +143,16 @@ function setupSafeAreaEmulation(name: string) { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | const $$SAFE_AREA_EMU = "$$SAFE_AREA_EMU"; | ||||||
|  | 
 | ||||||
| if (import.meta.hot) { | if (import.meta.hot) { | ||||||
|   import.meta.hot.accept((mod) => { |   import.meta.hot.on("vite:beforeUpdate", () => { | ||||||
|     if (!mod) return; |     import.meta.hot!.data[$$SAFE_AREA_EMU] = screenOrientationCallback; | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   import.meta.hot.on("vite:afterUpdate", () => { | ||||||
|  |     screenOrientationCallback = import.meta.hot?.data?.[$$SAFE_AREA_EMU]; | ||||||
|     if (screenOrientationCallback) { |     if (screenOrientationCallback) { | ||||||
|       mod["screenOrientationCallback"] = screenOrientationCallback; |  | ||||||
|       setTimeout(screenOrientationCallback, 0); |       setTimeout(screenOrientationCallback, 0); | ||||||
|     } |     } | ||||||
|   }); |   }); | ||||||
|  | @ -193,17 +200,12 @@ const Settings: Component = () => { | ||||||
|   return ( |   return ( | ||||||
|     <Scaffold |     <Scaffold | ||||||
|       topbar={ |       topbar={ | ||||||
|         <AppBar position="static"> |         <AppTopBar> | ||||||
|           <Toolbar |           <IconButton color="inherit" onClick={[pop, 1]} disableRipple> | ||||||
|             variant="dense" |             <CloseIcon /> | ||||||
|             sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |           </IconButton> | ||||||
|           > |           <Title>{t("Settings")}</Title> | ||||||
|             <IconButton color="inherit" onClick={[pop, 1]} disableRipple> |         </AppTopBar> | ||||||
|               <CloseIcon /> |  | ||||||
|             </IconButton> |  | ||||||
|             <Title>{t("Settings")}</Title> |  | ||||||
|           </Toolbar> |  | ||||||
|         </AppBar> |  | ||||||
|       } |       } | ||||||
|     > |     > | ||||||
|       <List class="setting-list" use:solid-styled> |       <List class="setting-list" use:solid-styled> | ||||||
|  | @ -270,6 +272,17 @@ const Settings: Component = () => { | ||||||
|           </ListItemButton> |           </ListItemButton> | ||||||
|           <Divider /> |           <Divider /> | ||||||
|         </li> |         </li> | ||||||
|  |         <li> | ||||||
|  |           <ListSubheader>Storage</ListSubheader> | ||||||
|  |           <ListItemButton disabled> | ||||||
|  |             <ListItemIcon> | ||||||
|  |               <DeleteForever /> | ||||||
|  |             </ListItemIcon> | ||||||
|  |             <ListItemText secondary={"The cache is managed by your browser."}> | ||||||
|  |               Clear cache... | ||||||
|  |             </ListItemText> | ||||||
|  |           </ListItemButton> | ||||||
|  |         </li> | ||||||
|         <li> |         <li> | ||||||
|           <ListSubheader>{t("This Application")}</ListSubheader> |           <ListSubheader>{t("This Application")}</ListSubheader> | ||||||
|           <ListItemButton component={A} href="./language"> |           <ListItemButton component={A} href="./language"> | ||||||
|  |  | ||||||
|  | @ -31,6 +31,7 @@ import { | ||||||
|   createSingluarItemSelection, |   createSingluarItemSelection, | ||||||
|   default as ItemSelectionProvider, |   default as ItemSelectionProvider, | ||||||
| } from "./toots/ItemSelectionProvider"; | } from "./toots/ItemSelectionProvider"; | ||||||
|  | import AppTopBar from "~material/AppTopBar"; | ||||||
| 
 | 
 | ||||||
| const Home: ParentComponent = (props) => { | const Home: ParentComponent = (props) => { | ||||||
|   let panelList: HTMLDivElement; |   let panelList: HTMLDivElement; | ||||||
|  | @ -165,40 +166,34 @@ const Home: ParentComponent = (props) => { | ||||||
|     <> |     <> | ||||||
|       <Scaffold |       <Scaffold | ||||||
|         topbar={ |         topbar={ | ||||||
|           <AppBar position="static"> |           <AppTopBar> | ||||||
|             <Toolbar |             <Tabs> | ||||||
|               variant="dense" |               <Tab focus={isTabFocus(0)} onClick={[onTabClick, 0]}> | ||||||
|               class="responsive" |                 Home | ||||||
|               sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }} |               </Tab> | ||||||
|             > |               <Tab focus={isTabFocus(1)} onClick={[onTabClick, 1]}> | ||||||
|               <Tabs> |                 Trending | ||||||
|                 <Tab focus={isTabFocus(0)} onClick={[onTabClick, 0]}> |               </Tab> | ||||||
|                   Home |               <Tab focus={isTabFocus(2)} onClick={[onTabClick, 2]}> | ||||||
|                 </Tab> |                 Public | ||||||
|                 <Tab focus={isTabFocus(1)} onClick={[onTabClick, 1]}> |               </Tab> | ||||||
|                   Trending |             </Tabs> | ||||||
|                 </Tab> |             <ProfileMenuButton profile={profiles()[0]}> | ||||||
|                 <Tab focus={isTabFocus(2)} onClick={[onTabClick, 2]}> |               <MenuItem | ||||||
|                   Public |                 onClick={(e) => | ||||||
|                 </Tab> |                   $settings.setKey( | ||||||
|               </Tabs> |                     "prefetchTootsDisabled", | ||||||
|               <ProfileMenuButton profile={profiles()[0]}> |                     !$settings.get().prefetchTootsDisabled, | ||||||
|                 <MenuItem |                   ) | ||||||
|                   onClick={(e) => |                 } | ||||||
|                     $settings.setKey( |               > | ||||||
|                       "prefetchTootsDisabled", |                 <ListItemText>Prefetch Toots</ListItemText> | ||||||
|                       !$settings.get().prefetchTootsDisabled, |                 <ListItemSecondaryAction> | ||||||
|                     ) |                   <Switch checked={prefetching()}></Switch> | ||||||
|                   } |                 </ListItemSecondaryAction> | ||||||
|                 > |               </MenuItem> | ||||||
|                   <ListItemText>Prefetch Toots</ListItemText> |             </ProfileMenuButton> | ||||||
|                   <ListItemSecondaryAction> |           </AppTopBar> | ||||||
|                     <Switch checked={prefetching()}></Switch> |  | ||||||
|                   </ListItemSecondaryAction> |  | ||||||
|                 </MenuItem> |  | ||||||
|               </ProfileMenuButton> |  | ||||||
|             </Toolbar> |  | ||||||
|           </AppBar> |  | ||||||
|         } |         } | ||||||
|       > |       > | ||||||
|         <ItemSelectionProvider value={selectionState}> |         <ItemSelectionProvider value={selectionState}> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue