diff --git a/lib/constants.dart b/lib/constants.dart index 502930c..a0790df 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -1,3 +1,3 @@ const String apiBaseUrl = 'https://www.tabnews.com.br/api/v1'; const String baseUrl = 'https://www.tabnews.com.br'; -const int pageSize = 30; \ No newline at end of file +const int pageSize = 30; diff --git a/lib/page/content/content_view_page.dart b/lib/page/content/content_view_page.dart index ea04328..02dbadc 100644 --- a/lib/page/content/content_view_page.dart +++ b/lib/page/content/content_view_page.dart @@ -10,6 +10,9 @@ import 'package:tabnews/page/content/content_widgets/post_body.dart'; import 'package:tabnews/service/api_content.dart'; import 'package:tabnews/service/messenger.dart'; import 'package:tabnews/service/storage.dart'; +import 'package:tabnews/service/user_features.dart'; +import 'package:timeago/timeago.dart' as timeago; +import 'package:url_launcher/url_launcher.dart'; class ContentViewPage extends StatefulWidget { const ContentViewPage({ @@ -27,6 +30,7 @@ class _ContentViewPageState extends State { StorageService storage = StorageService(); MessengerService messengerService = MessengerService(); + UserFeaturesService userFeaturesService = UserFeaturesService(); ApiContent apiContent = ApiContent(); @@ -62,7 +66,12 @@ class _ContentViewPageState extends State { Future getParams() async { final String userId = await storage.sharedPreferencesGet('user_id', ''); - if (userId == widget.contentData.ownerId!) { + + final bool canEditAndDeleteContentOthers = + await userFeaturesService.hasFeature('update:content:others'); + + if (userId == widget.contentData.ownerId! || + canEditAndDeleteContentOthers) { setState(() { canEdit = true; }); diff --git a/lib/page/login_page.dart b/lib/page/login_page.dart index d9f6ac7..6019998 100644 --- a/lib/page/login_page.dart +++ b/lib/page/login_page.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:tabnews/model/user.dart'; import 'package:tabnews/page/register_page.dart'; @@ -52,6 +54,8 @@ class _LoginPageState extends State { await storage.sharedPreferencesAddString('user_id', user.id); await storage.sharedPreferencesAddString('user_username', user.username); + await storage.sharedPreferencesAddString( + 'user_features', jsonEncode(user.features)); messengerService.show(context, text: 'Logado com sucesso!'); Navigator.of(context).pop(); diff --git a/lib/service/user_features.dart b/lib/service/user_features.dart new file mode 100644 index 0000000..89784cc --- /dev/null +++ b/lib/service/user_features.dart @@ -0,0 +1,17 @@ +import 'dart:convert'; + +import 'package:tabnews/service/storage.dart'; + +class UserFeaturesService { + StorageService storage = StorageService(); + + dynamic getFeatureList() async => + await storage.sharedPreferencesGet('user_features', ''); + + Future hasFeature(String feature) async { + final String data = await storage.sharedPreferencesGet('user_features', ''); + final List featureList = jsonDecode(data); + + return featureList.contains(feature); + } +}