Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/lib/src/models/archive.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ const kPagesArchiveDirectory = '$kBflyArchiveDirectory/pages';
const kComponentsArchiveDirectory = '$kBflyArchiveDirectory/components';
const kStylesArchiveDirectory = '$kBflyArchiveDirectory/styles';
const kPalettesArchiveDirectory = '$kBflyArchiveDirectory/palettes';
const kToolbarsArchiveDirectory = '$kBflyArchiveDirectory/toolbars';
39 changes: 39 additions & 0 deletions api/lib/src/models/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,45 @@ final class NoteData extends ArchiveData<NoteData> {
NoteData removePalette(String name) =>
removeAsset('$kPalettesArchiveDirectory/$name.json');

@useResult
Iterable<String> getToolbars() =>
getAssets('$kToolbarsArchiveDirectory/', true);

@useResult
Iterable<NamedItem<Toolbar>> getNamedToolbars() => getToolbars().map((e) {
final toolbar = getToolbar(e);
if (toolbar == null) return null;
return NamedItem<Toolbar>(name: e, item: toolbar);
}).nonNulls;

@useResult
Toolbar? getToolbar(String toolbarName) {
final data = getAsset('$kToolbarsArchiveDirectory/$toolbarName.json');
if (data == null) {
return null;
}
try {
final content = utf8.decode(data);
final json = jsonDecode(content) as Map<String, dynamic>;
return Toolbar.fromJson(json);
} catch (e) {
return null;
}
}

@useResult
NoteData setToolbar(String name, Toolbar toolbar) {
final content = jsonEncode(toolbar.toJson());
return setAsset(
'$kToolbarsArchiveDirectory/$name.json',
utf8.encode(content),
);
}

@useResult
NoteData removeToolbar(String name) =>
removeAsset('$kToolbarsArchiveDirectory/$name.json');

@useResult
String toJson() {
return base64Encode(exportAsBytes());
Expand Down
10 changes: 10 additions & 0 deletions api/lib/src/models/pack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,16 @@ sealed class ButterflyParameter with _$ButterflyParameter {
_$ButterflyParameterFromJson(json);
}

@freezed
sealed class Toolbar extends PackAsset with _$Toolbar {
const Toolbar._();

const factory Toolbar({@Default([]) List<Tool> tools}) = _Toolbar;

factory Toolbar.fromJson(Map<String, dynamic> json) =>
_$ToolbarFromJson(json);
}

@freezed
sealed class PackAssetLocation with _$PackAssetLocation {
const factory PackAssetLocation(String namespace, String key) =
Expand Down
140 changes: 140 additions & 0 deletions api/lib/src/models/pack.freezed.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions api/lib/src/models/pack.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading