Skip to content

Instantly share code, notes, and snippets.

@instance-id
Forked from cachapa/hive_store.dart
Last active June 2, 2020 05:24
Show Gist options
  • Save instance-id/6a616cb550c36d847adaf934284a1791 to your computer and use it in GitHub Desktop.
Save instance-id/6a616cb550c36d847adaf934284a1791 to your computer and use it in GitHub Desktop.
import 'dart:io';
import 'package:firedart/firedart.dart';
import 'package:hive/hive.dart';
/// Stores tokens using a Hive store.
/// Depends on the Hive plugin: https://pub.dev/packages/hive
class HiveStore extends TokenStore {
static const keyToken = "auth_token";
static Future<HiveStore> create() async {
// Make sure you call both:
// Hive.init(Directory.current.path);
// Hive.registerAdapter(TokenAdapter());
var box = await Hive.openBox("auth_store",
compactionStrategy: (entries, deletedEntries) => deletedEntries > 50);
return HiveStore._internal(box);
}
final Box _box;
HiveStore._internal(this._box);
@override
Token read() => _box.get(keyToken);
@override
void write(Token token) => _box.put(keyToken, token);
@override
void delete() => _box.delete(keyToken);
}
class TokenAdapter extends TypeAdapter<Token> {
@override
void write(BinaryWriter writer, Token token) => writer.writeMap(token.toMap());
@override
Token read(BinaryReader reader) => Token.fromMap(reader.readMap());
@override
final typeId = 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment