Compare commits
	
		
			4 commits
		
	
	
		
			ad0076156b
			...
			b2d8c1bb2e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						b2d8c1bb2e | ||
| 
							 | 
						bece50643f | ||
| 
							 | 
						47e36a354b | ||
| 
							 | 
						d66bc8ffe1 | 
					 4 changed files with 61 additions and 28 deletions
				
			
		
							
								
								
									
										5
									
								
								src/material/AppTopBar.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/material/AppTopBar.css
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
.AppTopBar {
 | 
			
		||||
  & > .toolbar {
 | 
			
		||||
    padding-top: var(--safe-area-inset-top, 0px);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								src/material/AppTopBar.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/material/AppTopBar.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
import { AppBar, Toolbar } from "@suid/material";
 | 
			
		||||
import { splitProps, type JSX, type ParentComponent } from "solid-js";
 | 
			
		||||
import "./AppTopBar.css";
 | 
			
		||||
import { useWindowSize } from "@solid-primitives/resize-observer";
 | 
			
		||||
 | 
			
		||||
const AppTopBar: ParentComponent<{
 | 
			
		||||
  class?: string;
 | 
			
		||||
  style?: JSX.HTMLAttributes<HTMLElement>["style"];
 | 
			
		||||
}> = (oprops) => {
 | 
			
		||||
  const [props, rest] = splitProps(oprops, ["children", "class"]);
 | 
			
		||||
  const windowSize = useWindowSize();
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <AppBar
 | 
			
		||||
      class={`AppTopBar ${props.class || ""}`}
 | 
			
		||||
      elevation={1}
 | 
			
		||||
      position="static"
 | 
			
		||||
      {...rest}
 | 
			
		||||
    >
 | 
			
		||||
      <Toolbar
 | 
			
		||||
        variant={windowSize.width > windowSize.height ? "dense" : "regular"}
 | 
			
		||||
        class="toolbar"
 | 
			
		||||
        sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }}
 | 
			
		||||
      >
 | 
			
		||||
        {props.children}
 | 
			
		||||
      </Toolbar>
 | 
			
		||||
    </AppBar>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default AppTopBar;
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +29,10 @@ import TootList from "./TootList";
 | 
			
		|||
import "./TootBottomSheet.css";
 | 
			
		||||
import { useNavigator } from "~platform/StackedRouter";
 | 
			
		||||
import BackButton from "~platform/BackButton";
 | 
			
		||||
import ItemSelectionProvider, {
 | 
			
		||||
  createSingluarItemSelection,
 | 
			
		||||
} from "./toots/ItemSelectionProvider";
 | 
			
		||||
import AppTopBar from "~material/AppTopBar";
 | 
			
		||||
 | 
			
		||||
let cachedEntry: [string, mastodon.v1.Status] | undefined;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,13 +48,11 @@ function getCache(acct: string, id: string) {
 | 
			
		|||
 | 
			
		||||
const TootBottomSheet: Component = (props) => {
 | 
			
		||||
  const params = useParams<{ acct: string; id: string }>();
 | 
			
		||||
  const location = useLocation<{
 | 
			
		||||
    tootReply?: boolean;
 | 
			
		||||
  }>();
 | 
			
		||||
  const { pop, push } = useNavigator();
 | 
			
		||||
  const { push } = useNavigator();
 | 
			
		||||
  const time = createTimeSource();
 | 
			
		||||
  const acctText = () => decodeURIComponent(params.acct);
 | 
			
		||||
  const session = useSessionForAcctStr(acctText);
 | 
			
		||||
  const [, selectionState] = createSingluarItemSelection();
 | 
			
		||||
 | 
			
		||||
  const [remoteToot, { mutate: setRemoteToot }] = createResource(
 | 
			
		||||
    () => [session().client, params.id] as const,
 | 
			
		||||
| 
						 | 
				
			
			@ -247,25 +249,18 @@ const TootBottomSheet: Component = (props) => {
 | 
			
		|||
  return (
 | 
			
		||||
    <Scaffold
 | 
			
		||||
      topbar={
 | 
			
		||||
        <AppBar
 | 
			
		||||
          sx={{
 | 
			
		||||
            backgroundColor: "var(--tutu-color-surface)",
 | 
			
		||||
        <AppTopBar
 | 
			
		||||
          style={{
 | 
			
		||||
            "background-color": "var(--tutu-color-surface)",
 | 
			
		||||
            color: "var(--tutu-color-on-surface)",
 | 
			
		||||
          }}
 | 
			
		||||
          elevation={1}
 | 
			
		||||
          position="static"
 | 
			
		||||
        >
 | 
			
		||||
          <Toolbar
 | 
			
		||||
            variant="dense"
 | 
			
		||||
            sx={{ paddingTop: "var(--safe-area-inset-top, 0px)" }}
 | 
			
		||||
          >
 | 
			
		||||
            <BackButton color="inherit" />
 | 
			
		||||
            <Title component="div" class="name" use:solid-styled>
 | 
			
		||||
              <span innerHTML={tootDisplayName() ?? "Someone"}></span>
 | 
			
		||||
              <span>'s toot</span>
 | 
			
		||||
            </Title>
 | 
			
		||||
          </Toolbar>
 | 
			
		||||
        </AppBar>
 | 
			
		||||
          <BackButton color="inherit" />
 | 
			
		||||
          <Title component="div" class="name" use:solid-styled>
 | 
			
		||||
            <span innerHTML={tootDisplayName() ?? "Someone"}></span>
 | 
			
		||||
            <span>'s toot</span>
 | 
			
		||||
          </Title>
 | 
			
		||||
        </AppTopBar>
 | 
			
		||||
      }
 | 
			
		||||
      class="TootBottomSheet"
 | 
			
		||||
    >
 | 
			
		||||
| 
						 | 
				
			
			@ -322,11 +317,13 @@ const TootBottomSheet: Component = (props) => {
 | 
			
		|||
            </div>
 | 
			
		||||
          </Show>
 | 
			
		||||
 | 
			
		||||
          <TootList
 | 
			
		||||
            threads={descendants.list}
 | 
			
		||||
            onUnknownThread={descendants.getPath}
 | 
			
		||||
            onChangeToot={descendants.set}
 | 
			
		||||
          />
 | 
			
		||||
          <ItemSelectionProvider value={selectionState}>
 | 
			
		||||
            <TootList
 | 
			
		||||
              threads={descendants.list}
 | 
			
		||||
              onUnknownThread={descendants.getPath}
 | 
			
		||||
              onChangeToot={descendants.set}
 | 
			
		||||
            />
 | 
			
		||||
          </ItemSelectionProvider>
 | 
			
		||||
        </TimeSourceProvider>
 | 
			
		||||
      </div>
 | 
			
		||||
    </Scaffold>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ function preventDefault(event: Event) {
 | 
			
		|||
  event.preventDefault();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export type TootContentProps = JSX.HTMLAttributes<HTMLDivElement> & {
 | 
			
		||||
export type TootContentProps = JSX.HTMLAttributes<HTMLElement> & {
 | 
			
		||||
  source?: string;
 | 
			
		||||
  emojis?: mastodon.v1.CustomEmoji[];
 | 
			
		||||
  mentions: mastodon.v1.StatusMention[];
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ const TootContent: Component<TootContentProps> = (oprops) => {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div
 | 
			
		||||
    <section
 | 
			
		||||
      ref={(ref) => {
 | 
			
		||||
        createRenderEffect(() => {
 | 
			
		||||
          const finder = clientFinder();
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ const TootContent: Component<TootContentProps> = (oprops) => {
 | 
			
		|||
          }
 | 
			
		||||
        ></div>
 | 
			
		||||
      </Show>
 | 
			
		||||
    </div>
 | 
			
		||||
    </section>
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue