Enhance payment processing and rental features

- Updated the BTCPay service to support internal Lightning invoices with private route hints, improving payment routing for users with private channels.
- Added reconciliation methods for pending rents and subscriptions to ensure missed payments are processed on startup.
- Enhanced the rental and subscription services to handle payments in satoshis, aligning with Lightning Network standards.
- Improved the rental modal and content detail components to display rental status and pricing more clearly, including a countdown for rental expiration.
- Refactored various components to streamline user experience and ensure accurate rental access checks.
This commit is contained in:
Dorian
2026-02-12 23:24:25 +00:00
parent cdd24a5def
commit 0da83f461c
39 changed files with 1182 additions and 270 deletions

View File

@@ -10,7 +10,7 @@ export interface ApiProject {
title: string
slug: string
synopsis: string
status: 'draft' | 'published' | 'rejected'
status: 'draft' | 'published' | 'rejected' | 'under-review'
type: 'film' | 'episodic' | 'music-video'
format: string
category: string
@@ -20,7 +20,9 @@ export interface ApiProject {
releaseDate: string
createdAt: string
updatedAt: string
genre?: ApiGenre
genres?: ApiGenre[]
film?: ApiContent
filmmaker?: ApiFilmmaker
}
@@ -102,7 +104,8 @@ export interface ApiRent {
export interface ApiGenre {
id: string
name: string
slug: string
slug?: string
type?: string
}
export interface ApiFestival {
@@ -174,15 +177,15 @@ export interface PaginatedResponse<T> {
export interface ApiPaymentMethod {
id: string
filmmakerUserId: string
type: 'lightning' | 'bank'
type: 'lightning' | 'bank' | 'LIGHTNING' | 'BANK'
lightningAddress?: string
bankName?: string
accountNumber?: string
routingNumber?: string
withdrawalFrequency: 'manual' | 'weekly' | 'monthly'
isSelected: boolean
withdrawalFrequency: 'manual' | 'weekly' | 'monthly' | 'automatic' | 'daily'
selected: boolean
createdAt: string
updatedAt: string
updatedAt?: string
}
export interface ApiFilmmakerAnalytics {
@@ -261,16 +264,21 @@ export interface UpdateProjectData {
title?: string
slug?: string
synopsis?: string
status?: ProjectStatus
status?: string
type?: ProjectType
format?: string
category?: string
poster?: string
trailer?: string
rentalPrice?: number
releaseDate?: string
genres?: string[]
genreId?: string | null
deliveryMode?: 'native' | 'partner'
film?: {
rentalPrice?: number
releaseDate?: string
file?: string
[key: string]: any
}
[key: string]: any
}
export interface UploadInitResponse {

View File

@@ -22,6 +22,8 @@ export interface Content {
drmEnabled?: boolean
streamingUrl?: string
apiData?: any
/** The Content entity ID (film/episode) for rental/payment flows */
contentId?: string
// Dual-mode content delivery
deliveryMode?: 'native' | 'partner'