Skip to content

Commit

Permalink
embed stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
dasmikko committed Feb 7, 2023
1 parent 096472b commit 3f50726
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 141 deletions.
54 changes: 0 additions & 54 deletions lib/helpers/twitterApi.dart

This file was deleted.

11 changes: 0 additions & 11 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@ import 'package:get/get.dart';
import 'package:knocky/controllers/authController.dart';
import 'package:knocky/controllers/settingsController.dart';
import 'package:knocky/helpers/themeService.dart';
import 'package:knocky/helpers/twitterApi.dart';
import 'package:knocky/screens/forum.dart';
import 'package:get_storage/get_storage.dart';
import 'package:knocky/themes/DarkTheme.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:layout/layout.dart';

void main() async {
Expand All @@ -26,9 +24,6 @@ void main() async {
"allowUpdater": false,
});

// Init dotenv
await dotenv.load(fileName: 'assets/.env');

GetStorage prefs = GetStorage();

if (prefs.read('env') == null) {
Expand All @@ -47,12 +42,6 @@ void main() async {

authController.getStoredAuthInfo();

try {
await TwitterHelper().getBearerToken();
} catch (e) {
print('Fetching bearer token failed');
}

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: Colors.grey[900],
systemNavigationBarIconBrightness: Brightness.light));
Expand Down
11 changes: 0 additions & 11 deletions lib/main_nonfrdoid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ import 'package:get/get.dart';
import 'package:knocky/controllers/authController.dart';
import 'package:knocky/controllers/settingsController.dart';
import 'package:knocky/helpers/themeService.dart';
import 'package:knocky/helpers/twitterApi.dart';
import 'package:knocky/screens/forum.dart';
import 'package:get_storage/get_storage.dart';
import 'package:knocky/themes/DarkTheme.dart';
import 'package:flutter_flavor/flutter_flavor.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:layout/layout.dart';

void main() async {
Expand All @@ -26,9 +24,6 @@ void main() async {
"allowUpdater": true,
});

// Init dotenv
await dotenv.load(fileName: 'assets/.env');

GetStorage prefs = GetStorage();

if (prefs.read('env') == null) {
Expand All @@ -47,12 +42,6 @@ void main() async {

authController.getStoredAuthInfo();

try {
await TwitterHelper().getBearerToken();
} catch (e) {
print('Fetching bearer token failed');
}

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: Colors.grey[900],
systemNavigationBarIconBrightness: Brightness.light));
Expand Down
12 changes: 3 additions & 9 deletions lib/widgets/bbcode/bbcodeRendererNew.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,10 @@ class _BBcodeRendererNewState extends State<BBcodeRendererNew> {
}

InlineSpan _twitterNodeHandler(bbob.Element node) {
print(node.textContent);
return WidgetSpan(
child: Container(
margin: EdgeInsets.only(bottom: 8),
child: EmbedWidget(
url: node.textContent,
),
),
);
child: TwitterCard(
tweetUrl: node.textContent,
));
}

InlineSpan _vocarooNodeHandler(bbob.Element node) {
Expand Down Expand Up @@ -288,7 +283,6 @@ class _BBcodeRendererNewState extends State<BBcodeRendererNew> {
break;
case 'img':
case 'img thumbnail':
print(node);
spans.add(_imageNodeHandler(node));
break;
case 'blockquote':
Expand Down
26 changes: 10 additions & 16 deletions lib/widgets/post/postsElements/twitter.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import 'package:after_layout/after_layout.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:knocky/helpers/twitterApi.dart';
import 'package:knocky/widgets/InkWellOnWidget.dart';
import 'package:measure_size/measure_size.dart';
import 'package:tweet_ui/tweet_ui.dart';
import 'package:url_launcher/url_launcher_string.dart';

class TwitterCard extends StatefulWidget {
Expand All @@ -26,8 +21,7 @@ class _TwitterCardState extends State<TwitterCard>
late Map _twitterJson;

@override
void afterFirstLayout(BuildContext context) {
}
void afterFirstLayout(BuildContext context) {}

@override
void dispose() {
Expand All @@ -42,8 +36,8 @@ class _TwitterCardState extends State<TwitterCard>
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/twitter_logo_blue.png'),
fit: BoxFit.cover,
alignment: Alignment.topCenter),
fit: BoxFit.fitWidth,
alignment: Alignment.center),
),
);
}
Expand All @@ -58,7 +52,7 @@ class _TwitterCardState extends State<TwitterCard>
child: InkWellOverWidget(
onTap: () async {
try {
await launchUrlString(this.widget.url!,
await launchUrlString(this.widget.tweetUrl!,
mode: LaunchMode.externalNonBrowserApplication);
} catch (e) {
throw 'Could not launch $this.widget.url';
Expand All @@ -78,23 +72,23 @@ class _TwitterCardState extends State<TwitterCard>
Container(
margin: EdgeInsets.only(bottom: 15),
child: Text(
'Open tweet',
'Tweet',
style: TextStyle(fontWeight: FontWeight.bold),
)),
Container(
margin: EdgeInsets.only(bottom: 15),
child:
Text(_description!, style: TextStyle(fontSize: 12)),
child: Text('Tap to view tweet',
style: TextStyle(fontSize: 12)),
),
Text(
this.widget.url != null
? this.widget.url!
this.widget.tweetUrl != null
? this.widget.tweetUrl!
: 'wtf no url',
style: TextStyle(fontSize: 12, color: Colors.blue)),
],
),
),
].where(notNull).toList(),
].toList(),
),
),
),
Expand Down
121 changes: 85 additions & 36 deletions lib/widgets/post/postsElements/vocaroo.dart
Original file line number Diff line number Diff line change
@@ -1,51 +1,100 @@
import 'package:better_player/better_player.dart';
import 'package:chewie/chewie.dart';
import 'package:chewie_audio/chewie_audio.dart';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';
import 'package:video_player/video_player.dart';

class VocarooEmbed extends StatelessWidget {
class VocarooEmbed extends StatefulWidget {
final String? url;
const VocarooEmbed({Key? key, this.url}) : super(key: key);

@override
Widget build(BuildContext context) {
String id = url!.split('/').last;
State<VocarooEmbed> createState() => _VocarooEmbedState();
}

class _VocarooEmbedState extends State<VocarooEmbed> {
late VideoPlayerController videoPlayerController;
ChewieAudioController? chewieController;

@override
void initState() {
super.initState();
initializePlayer();
}

Future<void> initializePlayer() async {
String id = widget.url!.split('/').last;
videoPlayerController = VideoPlayerController.network(
"https://media1.vocaroo.com/mp3/$id",
formatHint: VideoFormat.other,
httpHeaders: {
'Referer': 'https://vocaroo.com/',
});
await videoPlayerController.initialize();
chewieController = await ChewieAudioController(
videoPlayerController: videoPlayerController,
);
setState(() {});
}

@override
void dispose() {
videoPlayerController?.dispose();
chewieController?.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(bottom: 8),
margin: EdgeInsets.only(bottom: 12),
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
clipBehavior: Clip.antiAlias,
child: BetterPlayer.network(
"https://media1.vocaroo.com/mp3/$id",
betterPlayerConfiguration: BetterPlayerConfiguration(
overlay: Container(
color: Color.fromARGB(255, 202, 255, 112),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.only(bottom: 12),
child: ExtendedImage.network(
"https://cdn.vocaroo.com/images/mascot-robot-100px.png",
),
),
Text(
'Vocaroo',
style: TextStyle(color: Colors.grey[800]),
)
],
),
),
controlsConfiguration: BetterPlayerControlsConfiguration(
enableQualities: false,
enableSubtitles: false,
enableAudioTracks: true,
enableFullscreen: false,
enableSkips: false,
),
autoDetectFullscreenDeviceOrientation: true,
fit: BoxFit.contain,
borderRadius: BorderRadius.all(
Radius.circular(16),
),
child: Container(
decoration: BoxDecoration(
color: Color.fromARGB(255, 202, 255, 112),
),
child: chewieController != null &&
chewieController!.videoPlayerController.value.isInitialized
? Column(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.only(bottom: 12),
child: ExtendedImage.network(
"https://cdn.vocaroo.com/images/mascot-robot-100px.png",
),
),
OutlinedButton(
style: OutlinedButton.styleFrom(
side: BorderSide(width: 2.0, color: Colors.black54),
),
child: Text(
'Open in browser',
style: TextStyle(color: Colors.black54),
),
onPressed: () async {
try {
await launch(this.widget.url!);
} catch (e) {
throw 'Could not launch $this.widget.url';
}
},
),
],
),
ChewieAudio(
controller: chewieController!,
)
],
)
: Center(child: Text('Loading vocaroo embed')),
),
),
);
Expand Down
5 changes: 1 addition & 4 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,9 @@ dependencies:
permission_handler: 10.2.0
matrix4_transform: 2.0.1
duration: 3.0.12
tweet_ui: 4.0.4
chewie: 1.4.0
chewie_audio: ^1.3.0
video_player: 2.5.1
better_player: 0.0.83
flutter_dotenv: 5.0.2
popover: 0.2.8
sticky_headers: 0.3.0+2
event_bus: 2.0.0
Expand Down Expand Up @@ -87,7 +85,6 @@ flutter:


assets:
- assets/.env
- assets/logo.png
- assets/twitter_logo_blue.png
- assets/icons.json
Expand Down

0 comments on commit 3f50726

Please sign in to comment.