Sell PRO as an in-app unlock, take shared photos, and let FX run negative
- One free Play app (com.locphamtran.recipescamera) with an expo-iap PRO unlock, replacing the paid apk for the store channel - Android SEND/SEND_MULTIPLE share target feeds photos into the editor, on cold start and on resume - BACK button in the TopBar and press-and-hold PEEK replace the chip row - NOISE REDUCTION and SHARPENING accept -10: a negative SHARPENING softens the frame before the grain pass, a negative NOISE REDUCTION re-grains it, in the Skia engine, the live preview and the Kotlin export path alike
This commit is contained in:
@@ -1,14 +1,10 @@
|
||||
import { FrameId } from '../types';
|
||||
import { IS_PRO_BUILD } from '../provariant';
|
||||
|
||||
// LITE (free) vs PRO (the paid build). The two are separate apks built from this
|
||||
// one tree: the tier is fixed at build time by src/provariant.ts (rewritten by
|
||||
// tools/set-variant.mjs, `npm run apk:lite|apk:pro`) and nothing in a LITE apk
|
||||
// can change it afterwards — no key, no server, no stored flag.
|
||||
|
||||
// Constant for the life of the build, so every `!IS_PRO` branch below is dead
|
||||
// code the bundler is free to drop.
|
||||
export const IS_PRO = IS_PRO_BUILD;
|
||||
// LITE (free) vs PRO. Two apks come out of this one tree: the PRO apk
|
||||
// (src/provariant.ts, rewritten by tools/set-variant.mjs) is born owned, while
|
||||
// the LITE apk is the free build and buys the tier through Google Play. The
|
||||
// tier itself is runtime state, so it lives in src/utils/proUnlock.ts and every
|
||||
// caller takes it from there (useProUnlock) or by prop.
|
||||
|
||||
// The gate is on the FILE, not on the preview: a LITE user composes with any
|
||||
// look and compares it before/after — only the render/export of a PRO look is
|
||||
|
||||
Reference in New Issue
Block a user