make ip anonymous

This commit is contained in:
Hiddify
2024-02-10 18:28:40 +01:00
parent ea1349778c
commit 1f40c30778

View File

@@ -92,10 +92,7 @@ class _InfoProp extends StatelessWidget {
required IconData icon,
required String text,
}) : icon = Icon(icon),
child = Text(
text,
overflow: TextOverflow.ellipsis,
),
child = IPWidget(text),
isLoading = false;
_InfoProp.flag({
@@ -107,10 +104,7 @@ class _InfoProp extends StatelessWidget {
padding: const EdgeInsets.all(2),
child: CircleFlag(countryCode),
),
child = Text(
text,
overflow: TextOverflow.ellipsis,
),
child = IPWidget(text),
isLoading = false;
_InfoProp.loading({
@@ -147,3 +141,47 @@ class _InfoProp extends StatelessWidget {
);
}
}
class IPWidget extends StatefulWidget {
final String text1;
final String text2;
IPWidget(String text)
: text1 = _replaceMiddlePart(text),
text2 = text,
super(key: UniqueKey());
static String _replaceMiddlePart(String ip) {
RegExp regex = RegExp(
r'^([\da-f]+([:.]))([\da-f:.]*)([:.][\da-f]+)$',
caseSensitive: false,
);
return ip.replaceAllMapped(regex, (match) {
return '${match[1]}${match[2]}${match[4]}';
});
}
@override
_IPWidgetState createState() => _IPWidgetState();
}
class _IPWidgetState extends State<IPWidget> {
bool isText1Visible = true;
void toggleVisibility() {
setState(() {
isText1Visible = !isText1Visible;
});
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: toggleVisibility,
child: Text(
isText1Visible ? widget.text1 : widget.text2,
overflow: TextOverflow.ellipsis,
),
);
}
}