• aMockTie@piefed.world
    link
    fedilink
    English
    arrow-up
    11
    ·
    13 days ago

    Based on my brief browsing of the code, it looks like it’s all in the browser cache itself. The bytes are split into numbered chunks, converted to b64, and then a sequence of QR codes are generated from the b64. At the end the received data is crc32 checked for validation. There are adjustable parameters and a progress bar, making it easy to retransmit any chunk that wasn’t properly received.

    The code is incredibly easy to read, everything is in a single HTML file with zero obfuscation (unless you count the two minified QR code dependencies that also include links to the un-minified versions).

      • aMockTie@piefed.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        13 days ago

        Well yes, but also no.

        The data is all contained in the QR codes, but it’s also contained in the cache of the sender (which is how any chunk can be arbitrarily retransmitted), and also in the cache of the receiver (which is how the data is validated).

        • Valmond@lemmy.dbzer0.com
          link
          fedilink
          arrow-up
          4
          ·
          13 days ago

          Well it’s kind of obvious the sender has the plain data right 😌 and temporarily stored in the receiver somewhere.

          Does it play like a qrcode video, or is it more manual?

          • aMockTie@piefed.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            12 days ago

            Here’s a screenshot from the receiver camera pointing at the sender’s screen so you can see both ends.

          • aMockTie@piefed.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            12 days ago

            I suppose that’s true lol.

            Yes, it plays a video with an adjustable speed, or you can have it show a specific frame. The receiver has a grid that fills in as the data is received, making it easy to tell what data was or wasn’t successfully received.