masamune_module_simpleblog 1.2.2 copy "masamune_module_simpleblog: ^1.2.2" to clipboard
masamune_module_simpleblog: ^1.2.2 copied to clipboard

discontinued
outdated

masamune_module for creating simple blogs.

example/lib/main.dart

// Flutter imports:
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

// Package imports:
import 'package:katana_auth_firebase/katana_auth_firebase.dart';
import 'package:katana_functions_firebase/katana_functions_firebase.dart';
import 'package:katana_model_firestore/katana_model_firestore.dart';
import 'package:katana_storage_firebase/adapter/web/web.dart';
import 'package:masamune/masamune.dart';
import 'package:masamune_logger_firebase/masamune_logger_firebase.dart';
import 'package:masamune_module/masamune_module.dart';
import 'package:masamune_module_simpleblog/masamune_module_simpleblog.dart';
import 'package:masamune_notification_firebase/masamune_notification_firebase.dart';
import 'package:masamune_picker_file/masamune_picker_file.dart';

// Project imports:
import '/firebase_options.dart';

part 'main.theme.dart';

const notificationsTopicName = "multicast";
final notifiation = PushNotification();
final picker = Picker();

@appTheme
final theme = AppThemeData(
  primary: Colors.blue,
  secondary: Colors.cyan,
  onPrimary: Colors.white,
  useMaterial3: true,
  centerTitleOnAppBar: false,
);

final module = SimpleBlogModuleMasamuneAdapter(
  debugShowCheckedModeBanner: false,
  notification: SimpleBlogModuleNotificationSettings(
    send: (title, text) async {
      if (kIsWeb) {
        return;
      }
      return notifiation.send(
          title: title, text: text, target: notificationsTopicName);
    },
    adapter: const PushNotificationMasamuneAdapter(
      androidNotificationChannelDescription: "新着投稿があります。",
      androidNotificationChannelTitle: "新着投稿",
      androidNotificationChannelId: "katana_channel_id",
    ),
    subscribe: () {
      return notifiation.subscribe(notificationsTopicName);
    },
  ),
  picker: SimpleBlogModulePickerSettings(
    adapter: const FilePickerMasamuneAdapter(),
    pick: (context, onUpdate) async {
      final value = await picker.pickSingle(type: PickerFileType.image);
      final path = await value.upload();
      onUpdate(path.toString(), FormMediaType.image);
    },
  ),
  title: "Simple Blog",
  authAdapter:
      FirebaseAuthAdapter(options: DefaultFirebaseOptions.currentPlatform),
  storageAdapter: FirebaseStorageAdapter(
    options: DefaultFirebaseOptions.currentPlatform,
  ),
  functionsAdapter: FirebaseFunctionsAdapter(
    options: DefaultFirebaseOptions.currentPlatform,
  ),
  modelAdapter: FirestoreModelAdapter(
    options: DefaultFirebaseOptions.currentPlatform,
  ),
  additionalMasamuneAdapters: [
    FirebaseLoggerMasamuneAdapter(
      options: DefaultFirebaseOptions.currentPlatform,
    ),
  ],
  theme: theme,
);

void main() {
  runMasamuneApp(
    (adapters) => MasamuneModuleApp(module, adapters),
    masamuneAdapters: module.masamuneAdapters,
  );
}