Skip to content

Commit

Permalink
initial middleware implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
rishabhmudradi committed Jan 27, 2022
1 parent 16a36ee commit 2f8fc6d
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 5 deletions.
15 changes: 15 additions & 0 deletions lib/src/actions/actions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,21 @@ abstract class LocalStorageDesignChoiceSet
static Serializer<LocalStorageDesignChoiceSet> get serializer => _$localStorageDesignChoiceSetSerializer;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// set options for when to write design to localStorage

abstract class ResetLocalStorage
with BuiltJsonSerializable
implements Action, Built<ResetLocalStorage, ResetLocalStorageBuilder> {

/************************ begin BuiltValue boilerplate ************************/
factory ResetLocalStorage() = _$ResetLocalStorage._;

ResetLocalStorage._();

static Serializer<ResetLocalStorage> get serializer => _$resetLocalStorageSerializer;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Clear helix selection when loading new design

Expand Down
2 changes: 2 additions & 0 deletions lib/src/middleware/all_middleware.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import 'oxdna_export.dart';
import 'periodic_save_design_local_storage.dart';
import 'reselect_moved_dna_ends.dart';
import 'reselect_moved_copied_strands.dart';
import 'reset_local_storage.dart';
import 'save_file.dart';
import 'export_svg.dart';
import 'local_storage.dart';
Expand All @@ -37,6 +38,7 @@ import 'autostaple_and_autobreak.dart';
import 'zoom_speed.dart';

final all_middleware = List<Middleware<AppState>>.unmodifiable([
reset_local_storage_middleware,
local_storage_middleware,
move_ensure_all_in_same_helix_group_middleware,
forbid_create_circular_strand_no_crossovers_middleware,
Expand Down
27 changes: 27 additions & 0 deletions lib/src/middleware/reset_local_storage.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'dart:convert';
import 'dart:html';

import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:redux/redux.dart';
import 'package:scadnano/src/state/design.dart';
import '../state/app_ui_state_storables.dart';
import '../serializers.dart';
import '../state/local_storage_design_choice.dart';

import '../json_serializable.dart';
import '../state/app_state.dart';
import '../actions/actions.dart' as actions;
import '../util.dart' as util;
import 'local_storage.dart';

part 'reset_local_storage.g.dart';

reset_local_storage_middleware(Store<AppState> store, dynamic action, NextDispatcher next) {
next(action);
if (action is actions.ResetLocalStorage) {
window.localStorage.remove(Storable.design.key_name);
window.localStorage.remove(Storable.app_ui_state_storables.key_name);
window.location.reload();
}
}
1 change: 1 addition & 0 deletions lib/src/serializers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import 'state/domain_name_mismatch.dart';
part 'serializers.g.dart';

@SerializersFor([
ResetLocalStorage,
DNAAssignOptions,
MoveHelicesToGroup,
ModificationType,
Expand Down
7 changes: 2 additions & 5 deletions lib/src/view/menu.dart
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,8 @@ really want to exit without saving.'''
..key = 'import-cadnano')(),
DropdownDivider({'key': 'divider-import-cadnano'}),
(MenuDropdownItem()
..on_click = ((_) {
window.localStorage.remove(Storable.design.key_name);
window.localStorage.remove(Storable.app_ui_state_storables.key_name);
window.location.reload();
})
..on_click = ((_) => props.dispatch(
actions.ResetLocalStorage()))
..display = 'Reset Local Storage'
..tooltip = '''\
If clicked, the design and local setting are reset and the webpage is reloaded.'''
Expand Down

0 comments on commit 2f8fc6d

Please sign in to comment.