Skip to content

Commit

Permalink
fix: propagate device kind
Browse files Browse the repository at this point in the history
  • Loading branch information
dufkan committed May 2, 2024
1 parent 857b12c commit 5b15065
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 12 deletions.
2 changes: 1 addition & 1 deletion lib/util/qr_coder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ class QrCoder {
final id = _base64decoder.convert(args.substring(0, i));
final name = args.substring(i + 1);

return Device(name, Uuid(id), DateTime.now());
return Device(name, Uuid(id), DateTime.now(), DeviceKind.user);
}
}
3 changes: 2 additions & 1 deletion meesign_core/example/time_policy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,8 @@ void main(List<String> args) async {
final challengeRepository =
ChallengeRepository(dispatcher, taskSource, taskDao);

final device = await deviceRepository.register(options['name']);
final device =
await deviceRepository.register(options['name'], DeviceKind.user);
print('Registered as ${device.name}');

await groupRepository.subscribe(device.id);
Expand Down
14 changes: 7 additions & 7 deletions meesign_core/lib/src/data/device_repository.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:meesign_core/meesign_core.dart';
import 'package:meesign_native/meesign_native.dart';
import 'package:meesign_network/grpc.dart' as rpc;

Expand All @@ -19,12 +20,10 @@ class DeviceRepository {
Future<Device> register(String name, DeviceKind kind) async {
final key = AuthWrapper.keygen(name);

final resp = await _dispatcher.unauth.register(
rpc.RegistrationRequest()
..name = name
..kind = kind.toNetwork()
..csr = key.csr
);
final resp = await _dispatcher.unauth.register(rpc.RegistrationRequest()
..name = name
..kind = kind.toNetwork()
..csr = key.csr);

final did = Uuid(resp.deviceId);
final pkcs12 = AuthWrapper.certKeyToPkcs12(key.key, resp.certificate);
Expand All @@ -33,7 +32,7 @@ class DeviceRepository {
await _deviceDao.insertDevice(
db.DevicesCompanion.insert(id: did.bytes, name: name),
);
return Device(name, did, DateTime.now());
return Device(name, did, DateTime.now(), kind);
}

Future<Iterable<Device>> _fetchAll() async {
Expand All @@ -46,6 +45,7 @@ class DeviceRepository {
DateTime.fromMillisecondsSinceEpoch(
device.lastActive.toInt() * 1000,
),
DeviceKindConversion.fromNetwork(device.kind),
),
);
}
Expand Down
2 changes: 2 additions & 0 deletions meesign_core/lib/src/database/tables.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import 'package:drift/drift.dart';

import '../model/device_kind.dart';
import '../model/key_type.dart';
import '../model/protocol.dart';
import '../model/task.dart';

class Devices extends Table {
BlobColumn get id => blob()();
TextColumn get name => text()();
TextColumn get kind => textEnum<DeviceKind>()();

@override
Set<Column> get primaryKey => {id};
Expand Down
6 changes: 4 additions & 2 deletions meesign_core/lib/src/model/device.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@ import 'package:meta/meta.dart';

import '../database/database.dart' as db;
import '../util/uuid.dart';
import './device_kind.dart';

@immutable
class Device {
final String name;
final Uuid id;
final DateTime lastActive;
final DeviceKind kind;

const Device(this.name, this.id, this.lastActive);
const Device(this.name, this.id, this.lastActive, this.kind);
}

extension DeviceConversion on db.Device {
Device toModel() => Device(name, Uuid.take(id), DateTime.now());
Device toModel() => Device(name, Uuid.take(id), DateTime.now(), kind);
}
5 changes: 4 additions & 1 deletion meesign_core/test/core_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ void main() {
required Future<void> Function(TaskRepository, Group) createTask,
}) async {
final ds = await Future.wait(
[for (var i = 0; i < n; ++i) deviceRepository.register('d$i')],
[
for (var i = 0; i < n; ++i)
deviceRepository.register('d$i', DeviceKind.user)
],
);

await Future.wait(ds.map((d) => groupRepository.subscribe(d.id)));
Expand Down

0 comments on commit 5b15065

Please sign in to comment.