Files
999/scripts/add_share_buttons.py
T

158 lines
6.0 KiB
Python

# 1. Update lib/widgets/word_card_widget.dart
with open('lib/widgets/word_card_widget.dart', 'r', encoding='utf-8') as f:
content = f.read()
# Replace faulty _shareWord
import re
new_share_word = ''' void _shareWord(BuildContext context) {
final buffer = StringBuffer();
buffer.writeln('🔮 ОРАКУЛ • САХРАЛЬНЫЙ ЗНАК #${widget.word.formattedSessionNumber}');
buffer.writeln('«${widget.word.word.toUpperCase()}» ${widget.word.emoji}');
if (widget.word.category.isNotEmpty) {
buffer.writeln('Категория: ${widget.word.category}');
}
buffer.writeln('');
if (widget.word.core.isNotEmpty) {
buffer.writeln('📖 Суть:');
buffer.writeln(widget.word.core);
buffer.writeln('');
}
buffer.writeln('🔮 Толкование:');
buffer.writeln(widget.word.description);
if (_aiInterpretation != null && _aiInterpretation!.isNotEmpty) {
buffer.writeln('');
buffer.writeln('🤖 Персональный отклик Оракула:');
buffer.writeln(_aiInterpretation);
}
buffer.writeln('');
buffer.writeln('— Система сакрального жребия «Оракул»');
Clipboard.setData(ClipboardData(text: buffer.toString()));
HapticFeedback.lightImpact();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Row(
children: [
const Icon(Icons.share_rounded, color: Color(0xFFFFD54F), size: 18),
const SizedBox(width: 10),
Expanded(child: Text('Символ «${widget.word.word}» скопирован для отправки!')),
],
),
duration: const Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
);
}'''
content = re.sub(r' void _shareWord\(BuildContext context\) \{.*?\n \}', new_share_word, content, flags=re.DOTALL)
with open('lib/widgets/word_card_widget.dart', 'w', encoding='utf-8') as f:
f.write(content)
# 2. Update lib/screens/symbol_detail_screen.dart
with open('lib/screens/symbol_detail_screen.dart', 'r', encoding='utf-8') as f:
content = f.read()
new_share_symbol = ''' void _shareSymbol() {
final w = _currentWord;
final buffer = StringBuffer();
buffer.writeln('🔮 ОРАКУЛ • САХРАЛЬНЫЙ ЗНАК #${w.formattedSessionNumber}');
buffer.writeln('«${w.word.toUpperCase()}» ${w.emoji}');
if (w.category.isNotEmpty) {
buffer.writeln('Категория: ${w.category}');
}
buffer.writeln('');
if (w.core.isNotEmpty) {
buffer.writeln('📖 Суть:');
buffer.writeln(w.core);
buffer.writeln('');
}
buffer.writeln('🔮 Толкование:');
buffer.writeln(w.description);
buffer.writeln('');
buffer.writeln('— Система сакрального жребия «Оракул»');
Clipboard.setData(ClipboardData(text: buffer.toString()));
HapticFeedback.lightImpact();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Row(
children: [
const Icon(Icons.share_rounded, color: Color(0xFFFFD54F), size: 18),
const SizedBox(width: 10),
Expanded(child: Text('Символ «${w.word}» скопирован для отправки!')),
],
),
duration: const Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
);
}'''
content = re.sub(r' void _shareSymbol\(\) \{.*?\n \}', new_share_symbol, content, flags=re.DOTALL)
with open('lib/screens/symbol_detail_screen.dart', 'w', encoding='utf-8') as f:
f.write(content)
# 3. Update lib/screens/manual_dive_screen.dart
with open('lib/screens/manual_dive_screen.dart', 'r', encoding='utf-8') as f:
content = f.read()
new_share_passport = ''' void _sharePassport(WordItem word) {
final buffer = StringBuffer();
buffer.writeln('🔮 ОРАКУЛ • ПАСПОРТ СИМВОЛА #${word.formattedSessionNumber}');
buffer.writeln('«${word.word.toUpperCase()}» ${word.emoji}');
if (word.category.isNotEmpty) {
buffer.writeln('Категория: ${word.category}');
}
buffer.writeln('');
if (word.core.isNotEmpty) {
buffer.writeln('📖 Суть:');
buffer.writeln(word.core);
buffer.writeln('');
}
buffer.writeln('🔮 Базовое толкование:');
buffer.writeln(word.description);
buffer.writeln('');
final passport = _repo.getPassport(word.id);
if (passport != null) {
final f = passport.fields;
final sm = f['sacred_meaning']?.toString() ?? '';
if (sm.isNotEmpty) {
buffer.writeln('✨ Сакральный смысл:');
buffer.writeln(sm);
buffer.writeln('');
}
final arch = f['archetype']?.toString() ?? '';
if (arch.isNotEmpty) {
buffer.writeln('🏛 Архетип:');
buffer.writeln(arch);
buffer.writeln('');
}
}
buffer.writeln('— Система сакрального жребия «Оракул»');
Clipboard.setData(ClipboardData(text: buffer.toString()));
HapticFeedback.lightImpact();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Row(
children: [
const Icon(Icons.share_rounded, color: Color(0xFFFFD54F), size: 18),
const SizedBox(width: 10),
Expanded(child: Text('Паспорт «${word.word}» скопирован для отправки!')),
],
),
duration: const Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
);
}'''
content = re.sub(r' void _sharePassport\(WordItem word\) \{.*?\n \}', new_share_passport, content, flags=re.DOTALL)
with open('lib/screens/manual_dive_screen.dart', 'w', encoding='utf-8') as f:
f.write(content)
print("Fixed syntax in all share methods!")