I’ll figure it out later

  • 14 Posts
  • 14 Comments
Joined 1 year ago
cake
Cake day: June 16th, 2023

help-circle











  • Because of the difference is that there’s a hard cut in continuity with the teleporter. The body is destroyed. In normal life, our body does get replaced, but the continuity remains equal through that time. With the teleporter, everything gets replaced at once, which is a hard continuity cut.

    For this reason, sleep doesn’t affect continuity, just its potency and what can be accessed during sleep. If we turn a microwave off by unplugging it, whatever continuity it has ceases, this is in no way equal to sleeping. The functions, information, and mind are still present and functional.


  • If you loved Cradle, then you might like Bastion. If Crafle is eastern, then Bastion is Greco-Roman.

    Scorio will rise from the ashes to conquer the ten layers of hell.

    Reborn without memories, Scorio learns that he is a Great Soul, a legendary defender of the ancient city of Bastion. That within the hallowed halls of the Academy and under the stern eyes of the underworld’s greatest instructors he will enjoy enormous privilege, rediscover unique and wondrous powers, and one day return to the millennium-old battle against their infernal foes.

    Until he is betrayed. Singled out and sentenced to die for crimes he can’t remember, Scorio is hurled to his doom—and forgotten.

    But from even the dimmest spark an inferno may one day rage.

    Clawing his way back from oblivion, Scorio vows to return to the Academy at any cost. To emerge from the ruins and within those golden walls defeat his elite classmates in a quest to ascend the ranks and change the course of history. For only then will he learn about his forgotten past, and why his enemies have rightly feared him since the day he was reborn



  • I’ll stay away from the LLMs for now – they’re largely unhelpful anyway.

    The value of those elements needs to be concatenated and displayed to the user. Is that right?

    Right. The other components with a single text box seem to work fine, it’s the multiple boxes in the phone component, and it’s local state, that are confusing me to no end.

    I think what you’re talking about are Signals from Preact?

    Oh, no, when I was talking to Bing it said that the local state interferes with the parent state, so I instead need to bring the parent state into the child. It sort of makes sense? At least the part that local and parent state can interfere with each other makes sense.

    If you’re still interested we could try writing a couple of basic components that get us part of the way there.

    Please, I’m all ears. I have a feeling that your approach will help me a lot.



  • Hey, I’m just now seeing this. So, my component hierarchy is something like this:

    App

    • Form
      • TextInput
      • PhoneInput

    The TextInput components are very simple:

    import { ErrorMessage } from "../ErrorMessage"; //this function can be used to determine if the error message renders based on criteria
    
    export const FunctionalTextInput = ({
      dataProperty,
      errorMessage,
      placeholder,
      value,
      propertyHandler,
    }: {
      dataProperty: string;
      errorMessage: string;
      placeholder: string;
      value: string;
      propertyHandler: (property: string, e: string) => void;
    }) => {
      //Object.keys(initialUserData)[0]
      return (
        <>
          <div>
            {dataProperty}:
             propertyHandler(dataProperty, e.target.value)}
            />
          </div>
          
        
      );
    };
    
    export const FunctionalTextInput = ({
      dataProperty,
      errorMessage,
      placeholder,
      value,
      propertyHandler,
    }: {
      dataProperty: string;
      errorMessage: string;
      placeholder: string;
      value: string;
      propertyHandler: (property: string, e: string) => void;
    }) => {
      //Object.keys(initialUserData)[0]
      return (
        &lt;>
          <div>
            {dataProperty}:
             propertyHandler(dataProperty, e.target.value)}
            />
          </div>
          
        
      );
    };
    

    The shape of my data is like so:

    export type UserInformation = {
      firstName: string;
      lastName: string;
      email: string;
      city: string;
      phone: string[];
    };
    

    In my Form Component, I have two functions that work in the TextInput component, but not the PhoneInput component.

    const dataHandler = (e: FormEvent) => {
        e.preventDefault();
        userDataHandler(formData);
        setFormData(initialUserData);
      };
    const propertyHandler = (property: string, value: string) => {
        setFormData((prevProp) => ({ ...prevProp, [property]: value }));
      };
    

    So, over the past few hours I’ve been trying to talk to bing about this, and get some answers. After a few hours, I finally think the problem is a conflict of state. It seems like the state I’m using in my PhoneInput component interferes with the state of the parent component. This seems to be the case since when I click submit, my dataHandler function doesn’t trigger for the PhoneInput component.

    So, I guess now I’m wondering how that works? I’ve heard of raising state to the parent, but passing state down, not as data, but as actual state, sounds difficult and somewhat complex. I’m wondering how to use this technique, the uses, and how I can determine when to use it. Or, better yet, maybe I’m missing something and the answer is right outside my reach.

    The phone input in question:

    // This is a component that is used for the phone input
    // it wall accept 4 inputs, and "lift" the values to the parent component as a single, unformatted string.
    
    import { ChangeEventHandler, useRef, useState } from "react";
    import { ErrorMessage } from "../ErrorMessage";
    
    type TPhoneInputProps = {
      errorMessage: string;
      dataProperty: string;
      higherPhoneState: string[];
      propertyHandler: (property: string, e: string) => void;
    };
    export const FunctionalPhoneInput = ({
      errorMessage,
      dataProperty,
      higherPhoneState,
      propertyHandler,
    }: TPhoneInputProps) => {
      const [phoneState, setPhoneState] = useState(["", "", "", ""]);
      const phoneNumber = [
        useRef(null),
        useRef(null),
        useRef(null),
        useRef(null),
      ];
      const phoneNum0 = phoneNumber[0];
      const phoneNum1 = phoneNumber[1];
      const phoneNum2 = phoneNumber[2];
      const phoneNum3 = phoneNumber[3];
      const phoneChangeController =
        (
          index: 0 | 1 | 2 | 3 //  1 | 2 | 3 | 4,
        ): ChangeEventHandler =>
        (e: React.ChangeEvent) => {
          const length = [2, 2, 2, 1];
          const nextInput = phoneNumber[index + 1];
          const prevInput = phoneNumber[index - 1];
          const maxLength = length[index];
          const value = e.target.value;
          const shouldGoToNextInput =
            maxLength === value.length &amp;&amp; nextInput?.current;
          const shouldGoToPrevInput = value.length === 0;
          const newState = phoneState.map((phone, phoneIndex) =>
            index === phoneIndex ? e.target.value : phone
          );
          if (shouldGoToNextInput) {
            nextInput.current?.focus();
          }
          if (shouldGoToPrevInput) {
            prevInput.current?.focus();
          }
          setPhoneState(newState);
          console.log(newState.join(""));
          console.log(dataProperty);
    
          // Concatenate the new state with e.target.value to get the full phone number
          // const fullPhoneNumber =
          //   newState.slice(0, index).join("") +
          //   e.target.value +
          //   newState.slice(index + 1).join("");
          propertyHandler(dataProperty, newState.join(""));
        };
      return (
    &lt;> 
    <div>
            Phone:
            <div>
              
              -
              
              -
              
              -
              
            </div>
          </div>
    
      );
    };
    

    Please note that this component is 1000% broken. I was in the process of changing it with Bings suggestions, but it’s frustrating getting anything useful out of the thing.