could redirect to bsky.app? or show a "create embed" widget?
7 |
8 |
9 |
--------------------------------------------------------------------------------
/index.web.js:
--------------------------------------------------------------------------------
1 | import '#/platform/markBundleStartTime'
2 | import '#/platform/polyfills'
3 |
4 | import {registerRootComponent} from 'expo'
5 |
6 | import App from '#/App'
7 |
8 | registerRootComponent(App)
9 |
--------------------------------------------------------------------------------
/__mocks__/rn-fetch-blob.js:
--------------------------------------------------------------------------------
1 | jest.mock('rn-fetch-blob', () => {
2 | return {
3 | __esModule: true,
4 | default: {
5 | fs: {
6 | unlink: jest.fn(),
7 | },
8 | },
9 | }
10 | })
11 |
--------------------------------------------------------------------------------
/modules/BlueskyClip/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/code/app-bluesky-social/main/modules/BlueskyClip/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png
--------------------------------------------------------------------------------
/modules/expo-scroll-forwarder/src/ExpoScrollForwarder.types.ts:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | export interface ExpoScrollForwarderViewProps {
4 | scrollViewTag: number | null
5 | children: React.ReactNode
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/ProfileHoverCard/types.ts:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | export type ProfileHoverCardProps = {
4 | children: React.ReactElement
5 | did: string
6 | inline?: boolean
7 | disable?: boolean
8 | }
9 |
--------------------------------------------------------------------------------
/src/env.ts:
--------------------------------------------------------------------------------
1 | export const LOG_DEBUG = process.env.EXPO_PUBLIC_LOG_DEBUG || ''
2 | export const LOG_LEVEL = (process.env.EXPO_PUBLIC_LOG_LEVEL || 'info') as
3 | | 'debug'
4 | | 'info'
5 | | 'warn'
6 | | 'error'
7 |
--------------------------------------------------------------------------------
/src/lib/async/wait.ts:
--------------------------------------------------------------------------------
1 | export async function wait
9 | )
10 | }
11 |
--------------------------------------------------------------------------------
/__e2e__/setupApp.yml:
--------------------------------------------------------------------------------
1 | appId: xyz.blueskyweb.app
2 | ---
3 | - launchApp:
4 | appId: "xyz.blueskyweb.app"
5 | clearState: true
6 | - waitForAnimationToEnd
7 | - tapOn: "http://localhost:8081"
8 | - waitForAnimationToEnd
9 | - extendedWaitUntil:
10 | visible: "Continue"
11 | - swipe:
12 | from: "Bluesky"
13 | direction: DOWN
14 |
--------------------------------------------------------------------------------
/__mocks__/@react-native-camera-roll/camera-roll.js:
--------------------------------------------------------------------------------
1 | export const CameraRoll = {
2 | getPhotos: jest.fn().mockResolvedValue({
3 | edges: [
4 | {node: {image: {uri: 'path/to/image1.jpg'}}},
5 | {node: {image: {uri: 'path/to/image2.jpg'}}},
6 | {node: {image: {uri: 'path/to/image3.jpg'}}},
7 | ],
8 | }),
9 | }
10 |
--------------------------------------------------------------------------------
/assets/icons/calendar_stroke2_corner0_rounded.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/icons/envelope_filled_stroke2_corner0_rounded.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/icons/squareBehindSquare4_stroke2_corner0_rounded.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/eslint/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | module.exports = {
4 | rules: {
5 | 'avoid-unwrapped-text': require('./avoid-unwrapped-text'),
6 | 'use-exact-imports': require('./use-exact-imports'),
7 | 'use-typed-gates': require('./use-typed-gates'),
8 | 'use-prefixed-imports': require('./use-prefixed-imports'),
9 | },
10 | }
11 |
--------------------------------------------------------------------------------
/modules/expo-background-notification-handler/expo-module.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "platforms": ["ios", "android"],
3 | "ios": {
4 | "modules": ["ExpoBackgroundNotificationHandlerModule"]
5 | },
6 | "android": {
7 | "modules": ["expo.modules.backgroundnotificationhandler.ExpoBackgroundNotificationHandlerModule"]
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/icons/SquareBehindSquare4.tsx:
--------------------------------------------------------------------------------
1 | import {createSinglePathSVG} from './TEMPLATE'
2 |
3 | export const SquareBehindSquare4_Stroke2_Corner0_Rounded = createSinglePathSVG({
4 | path: 'M8 8V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1h-5v5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h5Zm1 8a1 1 0 0 1-1-1v-5H4v10h10v-4H9Z',
5 | })
6 |
--------------------------------------------------------------------------------
/src/view/com/util/numeric/format.ts:
--------------------------------------------------------------------------------
1 | import {I18n} from '@lingui/core'
2 |
3 | export const formatCount = (i18n: I18n, num: number) => {
4 | return i18n.number(num, {
5 | notation: 'compact',
6 | maximumFractionDigits: 1,
7 | // @ts-expect-error - roundingMode not in the types
8 | roundingMode: 'trunc',
9 | })
10 | }
11 |
--------------------------------------------------------------------------------
/src/view/com/util/post-embeds/types.ts:
--------------------------------------------------------------------------------
1 | export enum PostEmbedViewContext {
2 | ThreadHighlighted = 'ThreadHighlighted',
3 | Feed = 'Feed',
4 | FeedEmbedRecordWithMedia = 'FeedEmbedRecordWithMedia',
5 | }
6 |
7 | export enum QuoteEmbedViewContext {
8 | FeedEmbedRecordWithMedia = PostEmbedViewContext.FeedEmbedRecordWithMedia,
9 | }
10 |
--------------------------------------------------------------------------------
/assets/icons/bulletList_filled_corner0_rounded.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/icons/checkThick_stroke2_corner0_rounded.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/components/Fill.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {View} from 'react-native'
3 |
4 | import {atoms as a, ViewStyleProp} from '#/alf'
5 |
6 | export function Fill({
7 | children,
8 | style,
9 | }: {children?: React.ReactNode} & ViewStyleProp) {
10 | return