aboutsummaryrefslogtreecommitdiff
path: root/rose.c
diff options
context:
space:
mode:
authorfenze <contact@fenze.dev>2022-12-18 16:27:20 +0000
committerGitHub <noreply@github.com>2022-12-18 16:27:20 +0000
commitb16665809c82cd3e7f7a5c839a492d70f60e3335 (patch)
treedf217b99fc3f43c069582e0dfe759cb9e4ce8474 /rose.c
parent62b1bd678521d87ae95d7f8bfbe13535ec2072e7 (diff)
parentf5d1c0f93dc744c4d548cf99206ec9151c42e73c (diff)
Merge pull request #33 from NunoSempere/libre_redirect
feat: redirect websites to open-source frontends
Diffstat (limited to 'rose.c')
-rw-r--r--rose.c44
1 files changed, 37 insertions, 7 deletions
diff --git a/rose.c b/rose.c
index 78bdd3b..c71a1b8 100644
--- a/rose.c
+++ b/rose.c
@@ -9,10 +9,12 @@
*
* @author: fenze <contact@fenze.dev>
*/
+#include <string.h>
+#include <stdbool.h>
+#include <webkit2/webkit2.h>
#include "config.h"
-
-#include <webkit2/webkit2.h>
+#include "plugins/libre_redirect/libre_redirect.h"
#define CACHE \
"base-cache-directory", CACHE_DIR, \
@@ -78,15 +80,43 @@ void load_uri(WebKitWebView *view, const char *uri)
}
}
+void redirect_if_annoying(WebKitWebView *view, const char *uri){
+ int l = LIBRE_N + strlen(uri) + 1;
+ char uri_filtered[l];
+ str_init(uri_filtered, l);
+
+ int check = libre_redirect(uri, uri_filtered);
+ if(check == 2){
+ webkit_web_view_load_uri(view, uri_filtered);
+ }
+
+}
+
void load_changed(WebKitWebView *self, WebKitLoadEvent load_event, GtkNotebook *notebook)
{
- if (load_event == WEBKIT_LOAD_FINISHED) {
- gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(self),
- webkit_web_view_get_title(self));
- gtk_widget_hide(GTK_WIDGET(bar));
- }
+ switch (load_event) {
+ /* see <https://webkitgtk.org/reference/webkit2gtk/2.5.1/WebKitWebView.html> */
+ case WEBKIT_LOAD_STARTED:
+ redirect_if_annoying(self, webkit_web_view_get_uri(self));
+ break;
+ case WEBKIT_LOAD_REDIRECTED:
+ redirect_if_annoying(self, webkit_web_view_get_uri(self));
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ redirect_if_annoying(self, webkit_web_view_get_uri(self));
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ {
+ const char* title = webkit_web_view_get_title(self);
+ gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(self),
+ title == NULL ? "—" : title );
+ // gtk_widget_hide(GTK_WIDGET(bar));
+ break;
+ }
+ }
}
+
void notebook_append(GtkNotebook *notebook, const char *uri)
{
GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(window));