diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..c299c95 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,29 @@ +pipeline { + agent linux + + stages { + stage('Build') { + steps { + dart doc + } + } + steps('Test') { + steps { + dart test + } + } + steps('Deploy') { + steps { + dart pub publish + git clone git@github.com:ariascreations/ServerCode + rsync -a --progress -h --delete doc/api/ ServerCode/api.zontreck.com/dartdocs/libac/ + cd ServerCode + git add --all . + git commit -m "[BOT] Publish LibAC DartDocs" + git push --all + cd .. + rm -rf ServerCode + } + } + } +} \ No newline at end of file diff --git a/lib/discord/user.dart b/lib/discord/user.dart index 248e04f..ff696fd 100644 --- a/lib/discord/user.dart +++ b/lib/discord/user.dart @@ -2,6 +2,8 @@ import 'dart:convert'; import 'package:libac_dart/utils/DictTools.dart'; +import '../structs/Bitmasks.dart'; + class User { String id; String username; @@ -93,7 +95,7 @@ class User { } } -enum UserFlags { +enum UserFlags implements MaskEnum { DiscordEmployee(1 << 0), PartneredServerOwner(1 << 1), HypeSquadEvents(1 << 2), @@ -117,6 +119,23 @@ enum UserFlags { static UserFlags? decode(dynamic value) { if (value == null) return null; int flag = value as int; + + for (var val in values) { + if (val == flag) { + return val; + } + } + return null; + } + + @override + int getValue() { + return flags; + } + + @override + List getValues() { + return values; } } diff --git a/lib/structs/Bitmasks.dart b/lib/structs/Bitmasks.dart new file mode 100644 index 0000000..fea66a8 --- /dev/null +++ b/lib/structs/Bitmasks.dart @@ -0,0 +1,7 @@ +class BitMask {} + +abstract class MaskEnum { + int getValue(); + + List getValues(); +}