🐛 Dozens of bug fixes

This commit is contained in:
2025-08-04 13:34:50 +08:00
parent f3900825e3
commit c8e351514d
5 changed files with 31 additions and 9 deletions

View File

@@ -280,7 +280,7 @@ class LevelingScreen extends HookConsumerWidget {
try { try {
showLoadingModal(context); showLoadingModal(context);
final client = ref.watch(apiClientProvider); final client = ref.watch(apiClientProvider);
await client.post('/subscriptions/${membership.identifier}/cancel'); await client.post('/id/subscriptions/${membership.identifier}/cancel');
ref.invalidate(accountStellarSubscriptionProvider); ref.invalidate(accountStellarSubscriptionProvider);
ref.read(userInfoProvider.notifier).fetchUser(); ref.read(userInfoProvider.notifier).fetchUser();
if (context.mounted) { if (context.mounted) {
@@ -603,7 +603,7 @@ class LevelingScreen extends HookConsumerWidget {
try { try {
showLoadingModal(context); showLoadingModal(context);
final resp = await client.post( final resp = await client.post(
'/subscriptions', '/id/subscriptions',
data: { data: {
'identifier': tierId, 'identifier': tierId,
'payment_method': 'solian.wallet', 'payment_method': 'solian.wallet',
@@ -615,7 +615,7 @@ class LevelingScreen extends HookConsumerWidget {
final subscription = SnWalletSubscription.fromJson(resp.data); final subscription = SnWalletSubscription.fromJson(resp.data);
if (subscription.status == 1) return; if (subscription.status == 1) return;
final orderResp = await client.post( final orderResp = await client.post(
'/subscriptions/${subscription.identifier}/order', '/id/subscriptions/${subscription.identifier}/order',
); );
final order = SnWalletOrder.fromJson(orderResp.data); final order = SnWalletOrder.fromJson(orderResp.data);
@@ -633,7 +633,7 @@ class LevelingScreen extends HookConsumerWidget {
if (paidOrder != null) { if (paidOrder != null) {
await client.post( await client.post(
'/subscriptions/order/handle', '/id/subscriptions/order/handle',
data: {'order_id': paidOrder.id}, data: {'order_id': paidOrder.id},
); );

View File

@@ -205,7 +205,7 @@ class _OidcScreenState extends ConsumerState<OidcScreen> {
onPressed: () { onPressed: () {
if (currentUrl != null) { if (currentUrl != null) {
Clipboard.setData(ClipboardData(text: currentUrl!)); Clipboard.setData(ClipboardData(text: currentUrl!));
showSnackBar('copyToClipboard'); showSnackBar('copyToClipboard'.tr());
} }
}, },
), ),

View File

@@ -32,7 +32,7 @@ class RestorePurchaseSheet extends HookConsumerWidget {
try { try {
final client = ref.read(apiClientProvider); final client = ref.read(apiClientProvider);
await client.post( await client.post(
'/subscriptions/order/restore/${selectedProvider.value!}', '/id/subscriptions/order/restore/${selectedProvider.value!}',
data: {'order_id': orderIdController.text.trim()}, data: {'order_id': orderIdController.text.trim()},
); );

View File

@@ -41,6 +41,7 @@ class CallParticipantCard extends HookConsumerWidget {
const Gap(8), const Gap(8),
Expanded( Expanded(
child: Slider( child: Slider(
max: 2,
value: volumeSliderValue.value, value: volumeSliderValue.value,
onChanged: (value) { onChanged: (value) {
volumeSliderValue.value = value; volumeSliderValue.value = value;
@@ -52,10 +53,13 @@ class CallParticipantCard extends HookConsumerWidget {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
), ),
), ),
const Gap(8), const Gap(16),
Text( SizedBox(
width: 40,
child: Text(
'${(volumeSliderValue.value * 100).toStringAsFixed(0)}%', '${(volumeSliderValue.value * 100).toStringAsFixed(0)}%',
), ),
),
], ],
), ),
Row( Row(

View File

@@ -458,6 +458,24 @@ class PostItem extends HookConsumerWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
if ((item.title?.isNotEmpty ?? false) ||
(item.description?.isNotEmpty ?? false))
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (item.title?.isNotEmpty ?? false)
Text(
item.title!,
style: Theme.of(context).textTheme.titleMedium!
.copyWith(fontWeight: FontWeight.bold),
),
if (item.description?.isNotEmpty ?? false)
Text(
item.description!,
style: Theme.of(context).textTheme.bodyMedium,
),
],
).padding(bottom: 4),
MarkdownTextContent( MarkdownTextContent(
content: content:
item.isTruncated ? '${item.content!}...' : item.content!, item.isTruncated ? '${item.content!}...' : item.content!,