From a3334a01a221877d3e06e02f960fda441f3460bd Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 31 Mar 2023 13:17:26 -0500 Subject: Lex refactor (#362) * Remove the hackcheck for upgrades * Rename the PostEmbeds folder to match the codebase style * Updates to latest lex refactor * Update to use new bsky agent * Update to use api package's richtext library * Switch to upsertProfile * Add TextEncoder/TextDecoder polyfill * Add Intl.Segmenter polyfill * Update composer to calculate lengths by grapheme * Fix detox * Fix login in e2e * Create account e2e passing * Implement an e2e mocking framework * Don't use private methods on mobx models as mobx can't track them * Add tooling for e2e-specific builds and add e2e media-picker mock * Add some tests and fix some bugs around profile editing * Add shell tests * Add home screen tests * Add thread screen tests * Add tests for other user profile screens * Add search screen tests * Implement profile imagery change tools and tests * Update to new embed behaviors * Add post tests * Fix to profile-screen test * Fix session resumption * Update web composer to new api * 1.11.0 * Fix pagination cursor parameters * Add quote posts to notifications * Fix embed layouts * Remove youtube inline player and improve tap handling on link cards * Reset minimal shell mode on all screen loads and feed swipes (close #299) * Update podfile.lock * Improve post notfound UI (close #366) * Bump atproto packages --- src/platform/polyfills.ts | 17 +++++++++++++++++ src/platform/polyfills.web.ts | 8 ++++++++ 2 files changed, 25 insertions(+) (limited to 'src/platform') diff --git a/src/platform/polyfills.ts b/src/platform/polyfills.ts index 3dbd13981..a64c2c33a 100644 --- a/src/platform/polyfills.ts +++ b/src/platform/polyfills.ts @@ -1,3 +1,5 @@ +import 'fast-text-encoding' +import Graphemer from 'graphemer' export {} /** @@ -48,3 +50,18 @@ globalThis.atob = (str: string): string => { } return result } + +const splitter = new Graphemer() +globalThis.Intl = globalThis.Intl || {} + +// @ts-ignore we're polyfilling -prf +globalThis.Intl.Segmenter = + // @ts-ignore we're polyfilling -prf + globalThis.Intl.Segmenter || + class Segmenter { + constructor() {} + // NOTE + // this is not a precisely correct polyfill but it's sufficient for our needs + // -prf + segment = splitter.iterateGraphemes + } diff --git a/src/platform/polyfills.web.ts b/src/platform/polyfills.web.ts index 7a42f4887..e46963a6f 100644 --- a/src/platform/polyfills.web.ts +++ b/src/platform/polyfills.web.ts @@ -2,3 +2,11 @@ // @ts-ignore whatever typescript wants to complain about here, I dont care about -prf window.setImmediate = (cb: () => void) => setTimeout(cb, 0) + +// @ts-ignore not on the TS signature due to bad support -prf +if (!globalThis.Intl?.Segmenter) { + // NOTE loading as a separate script to reduce main bundle size, as this is only needed in FF -prf + const script = document.createElement('script') + script.setAttribute('src', '/static/js/intl-segmenter-polyfill.min.js') + document.head.appendChild(script) +} -- cgit 1.4.1