Compare commits
17 Commits
3b138ab80a
...
ea213080b1
Author | SHA1 | Date |
---|---|---|
Dan Ballard | ea213080b1 | |
Sarah Jamie Lewis | fecf29176b | |
Sarah Jamie Lewis | 4bad19926b | |
Sarah Jamie Lewis | 75958faa38 | |
Sarah Jamie Lewis | 8300acb6f9 | |
Sarah Jamie Lewis | 33f99a3b18 | |
Sarah Jamie Lewis | b291188550 | |
Sarah Jamie Lewis | 0342eae5ce | |
Sarah Jamie Lewis | fe085e4802 | |
Sarah Jamie Lewis | 38d84e0f62 | |
Sarah Jamie Lewis | 3be7066e5d | |
Sarah Jamie Lewis | b492be0200 | |
Sarah Jamie Lewis | 6ba6f76ee1 | |
Sarah Jamie Lewis | 4ea0d4261c | |
Sarah Jamie Lewis | 88a8ac8cca | |
Sarah Jamie Lewis | 0eb1b95811 | |
Dan Ballard | e0546eb502 |
|
@ -1 +1 @@
|
|||
2024-02-09-13-23-v0.0.11
|
||||
2024-02-12-11-04-v0.0.12
|
2
LICENSE
2
LICENSE
|
@ -1,5 +1,5 @@
|
|||
MIT License
|
||||
Copyright (c) 2021 Open Privacy Research Society
|
||||
Copyright (c) 2021-2024 Open Privacy Research Society
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# NSIS Notes
|
||||
|
||||
## Images
|
||||
|
||||
Requires Windows 3 Compatible Bitmaps.
|
||||
|
||||
Can convert to the correct format with e.g. `mogrify -compress none -format bmp3 windows/nsis/cwtch_title.bmp
|
||||
`
|
|
@ -404,9 +404,12 @@ class Settings extends ChangeNotifier {
|
|||
// checks experiment settings and file extension for image previews
|
||||
// (ignores file size; if the user manually accepts the file, assume it's okay to preview)
|
||||
bool shouldPreview(String path) {
|
||||
return isExperimentEnabled(ImagePreviewsExperiment) && isImage(path);
|
||||
}
|
||||
|
||||
bool isImage(String path) {
|
||||
var lpath = path.toLowerCase();
|
||||
return isExperimentEnabled(ImagePreviewsExperiment) &&
|
||||
(lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp"));
|
||||
return (lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp"));
|
||||
}
|
||||
|
||||
String get downloadPath => _downloadPath;
|
||||
|
|
|
@ -162,27 +162,29 @@ class _GlobalSettingsExperimentsViewState extends State<GlobalSettingsExperiment
|
|||
),
|
||||
]),
|
||||
),
|
||||
SwitchListTile(
|
||||
title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable),
|
||||
subtitle: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
|
||||
? Text(AppLocalizations.of(context)!.blodeuweddDescription)
|
||||
: Text(AppLocalizations.of(context)!.blodeuweddNotSupported),
|
||||
value: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
|
||||
onChanged: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
|
||||
? (bool value) {
|
||||
if (value) {
|
||||
settings.enableExperiment(BlodeuweddExperiment);
|
||||
} else {
|
||||
settings.disableExperiment(BlodeuweddExperiment);
|
||||
}
|
||||
saveSettings(context);
|
||||
}
|
||||
: null,
|
||||
activeTrackColor: settings.theme.defaultButtonColor,
|
||||
inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
|
||||
inactiveThumbColor: settings.theme.defaultButtonDisabledColor,
|
||||
secondary: Icon(Icons.assistant, color: settings.current().mainTextColor),
|
||||
),
|
||||
Visibility(
|
||||
visible: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported(),
|
||||
child: SwitchListTile(
|
||||
title: Text(AppLocalizations.of(context)!.blodeuweddExperimentEnable),
|
||||
subtitle: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
|
||||
? Text(AppLocalizations.of(context)!.blodeuweddDescription)
|
||||
: Text(AppLocalizations.of(context)!.blodeuweddNotSupported),
|
||||
value: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
|
||||
onChanged: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported()
|
||||
? (bool value) {
|
||||
if (value) {
|
||||
settings.enableExperiment(BlodeuweddExperiment);
|
||||
} else {
|
||||
settings.disableExperiment(BlodeuweddExperiment);
|
||||
}
|
||||
saveSettings(context);
|
||||
}
|
||||
: null,
|
||||
activeTrackColor: settings.theme.defaultButtonColor,
|
||||
inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
|
||||
inactiveThumbColor: settings.theme.defaultButtonDisabledColor,
|
||||
secondary: Icon(Icons.assistant, color: settings.current().mainTextColor),
|
||||
)),
|
||||
Visibility(
|
||||
visible: Provider.of<FlwtchState>(context, listen: false).cwtch.IsBlodeuweddSupported() && settings.isExperimentEnabled(BlodeuweddExperiment),
|
||||
child: CwtchFolderPicker(
|
||||
|
|
|
@ -120,7 +120,7 @@ class _ContactRowState extends State<ContactRow> {
|
|||
)),
|
||||
Container(
|
||||
padding: EdgeInsets.all(0),
|
||||
height: Provider.of<Settings>(context).fontScaling * 14.0 + 5.0,
|
||||
height: contact.isInvitation ? Provider.of<Settings>(context).fontScaling * 14.0 + 35.0 : Provider.of<Settings>(context).fontScaling * 14.0 + 5.0,
|
||||
child: contact.isInvitation == true
|
||||
? Wrap(alignment: WrapAlignment.start, direction: Axis.vertical, children: <Widget>[
|
||||
Padding(
|
||||
|
|
|
@ -75,6 +75,7 @@ class FileBubbleState extends State<FileBubble> {
|
|||
var flagStarted = Provider.of<MessageMetadata>(context).attributes["file-downloaded"] == "true";
|
||||
var borderRadius = 15.0;
|
||||
var showFileSharing = Provider.of<Settings>(context).isExperimentEnabled(FileSharingExperiment);
|
||||
var showImages = Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment);
|
||||
DateTime messageDate = Provider.of<MessageMetadata>(context).timestamp;
|
||||
|
||||
var metadata = Provider.of<MessageMetadata>(context);
|
||||
|
@ -91,13 +92,16 @@ class FileBubbleState extends State<FileBubble> {
|
|||
var downloadComplete = (fromMe && path != null) || Provider.of<ProfileInfoState>(context).downloadComplete(widget.fileKey());
|
||||
var downloadInterrupted = Provider.of<ProfileInfoState>(context).downloadInterrupted(widget.fileKey());
|
||||
|
||||
var isImagePreview = false;
|
||||
if (path != null) {
|
||||
isImagePreview = Provider.of<Settings>(context).isImage(path);
|
||||
}
|
||||
|
||||
if (downloadComplete && path != null) {
|
||||
var lpath = path.toLowerCase();
|
||||
if (lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp")) {
|
||||
if (isImagePreview) {
|
||||
if (myFile == null || myFile?.path != path) {
|
||||
setState(() {
|
||||
myFile = new File(path!);
|
||||
|
||||
// reset
|
||||
if (myFile?.existsSync() == false) {
|
||||
myFile = null;
|
||||
|
@ -135,10 +139,13 @@ class FileBubbleState extends State<FileBubble> {
|
|||
}
|
||||
}
|
||||
|
||||
// we don't preview a non downloaded file...
|
||||
if (widget.isPreview && myFile != null) {
|
||||
// if we should show a preview i.e. we are in a quote bubble
|
||||
// then do that here...
|
||||
if (showImages && isImagePreview && widget.isPreview && myFile != null) {
|
||||
// if the image exists then just show the image as a preview
|
||||
return getPreview(context);
|
||||
} else if (widget.isPreview && myFile == null) {
|
||||
} else if (showFileSharing && widget.isPreview) {
|
||||
// otherwise just show a summary...
|
||||
return Row(
|
||||
children: [
|
||||
Icon(CwtchIcons.attached_file_3, size: 32, color: Provider.of<Settings>(context).theme.messageFromMeTextColor),
|
||||
|
@ -162,9 +169,7 @@ class FileBubbleState extends State<FileBubble> {
|
|||
|
||||
if (!showFileSharing) {
|
||||
wdgDecorations = Text('\u202F');
|
||||
} else if (fromMe) {
|
||||
wdgDecorations = Text('\u202F');
|
||||
} else if (downloadComplete && path != null) {
|
||||
} else if ((fromMe || downloadComplete) && path != null) {
|
||||
// in this case, whatever marked download.complete would have also set the path
|
||||
if (myFile != null && Provider.of<Settings>(context).shouldPreview(path)) {
|
||||
isPreview = true;
|
||||
|
@ -178,6 +183,8 @@ class FileBubbleState extends State<FileBubble> {
|
|||
pop(context, myFile!, widget.nameSuggestion);
|
||||
},
|
||||
)));
|
||||
} else if (fromMe) {
|
||||
wdgDecorations = Text('\u202F');
|
||||
} else {
|
||||
wdgDecorations = Visibility(
|
||||
visible: widget.interactive, child: SelectableText(AppLocalizations.of(context)!.fileSavedTo + ': ' + path + '\u202F', style: Provider.of<Settings>(context).scaleFonts(defaultTextStyle)));
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 151 KiB |
|
@ -50,7 +50,8 @@ ShowInstDetails show
|
|||
|
||||
!define MUI_WELCOMEPAGE_TITLE "Welcome to the Cwtch installer"
|
||||
!define MUI_WELCOMEPAGE_TEXT "Cwtch (pronounced: kutch) is a Welsh word roughly meaning 'a hug that creates a safe space'$\n$\n\
|
||||
Cwtch is a platform for building consentful, decentralized, untrusted infrastructure using metadata resistant group communication applications. Currently there is a selfnamed instant messaging prototype app that is driving development and testing. Many Further apps are planned as the platform matures.$\n$\n\
|
||||
Participants in Cwtch can host their own safe spaces, or lend their infrastructure to others seeking a safe space. There is no 'Cwtch service' or 'Cwtch network'.$\n$\n\
|
||||
All communication in Cwtch is end-to-end encrypted and takes place over Tor v3 onion services, and Cwtch has been designed such that no information is exchanged or available to anyone without their explicit consent, including on-the-wire messages and protocol metadata.$\n$\n\
|
||||
Please close any running copies of Cwtch before installing a new version."
|
||||
|
||||
; Detecting if Cwtch is running and reminding the user or closing it appears to require 3rd party plugins that take the form of decade+ old .dlls in zips from a wiki...
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 25 KiB |
Loading…
Reference in New Issue