From c27f5d1771666766e983424b223e2072f839ee41 Mon Sep 17 00:00:00 2001 From: James Riley Date: Fri, 18 Aug 2017 10:26:29 -0700 Subject: [PATCH 01/18] Added electron-context-menu. - This must be initialized once in the app itself, which makes the context menu work correctly in the main Rambox window. - Aside from that, each webview needs to be initialized with electron-context-menu as well. - I'm currently running a custom fork with this functionality added and everything works exactly as expected. --- app.js | 3 +++ app/package.json | 3 ++- app/ux/WebView.js | 2 ++ package.json | 3 ++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 0013fec8..57333fec 100644 --- a/app.js +++ b/app.js @@ -15,6 +15,9 @@ Ext.application({ // auto update logic const ipc = require('electron').ipcRenderer; + +require('electron-context-menu')(); + ipc.on('showAbout', function(event, message) { !Ext.cq1('about') ? Ext.create('Rambox.view.main.About') : ''; }); diff --git a/app/package.json b/app/package.json index ec984b65..beaa66bb 100644 --- a/app/package.json +++ b/app/package.json @@ -35,6 +35,7 @@ "electron-is-dev": "^0.1.2", "mime": "^1.4.0", "rimraf": "2.6.1", - "tmp": "0.0.28" + "tmp": "0.0.28", + "electron-context-menu": "0.9.1" } } diff --git a/app/ux/WebView.js b/app/ux/WebView.js index da8c6f8b..f49ae502 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -229,6 +229,8 @@ Ext.define('Rambox.ux.WebView',{ var webview = me.down('component').el.dom; + require('electron-context-menu')({window: webview}); + // Google Analytics Event ga_storage._trackEvent('Services', 'load', me.type, 1, true); diff --git a/package.json b/package.json index c189e972..ad965031 100644 --- a/package.json +++ b/package.json @@ -106,6 +106,7 @@ "electron-is-dev": "^0.1.2", "mime": "^1.4.0", "rimraf": "2.6.1", - "tmp": "0.0.28" + "tmp": "0.0.28", + "electron-context-menu": "0.9.1" } } From bee2e687bb1a941730fbc0ab2d662b8ee0ad1238 Mon Sep 17 00:00:00 2001 From: Luuk Schakenraad Date: Sat, 20 Jan 2018 22:45:29 +0100 Subject: [PATCH 02/18] Change teamwork Chat URL template --- app/store/ServicesList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 20b2bc90..3ffc55ce 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -795,7 +795,7 @@ Ext.define('Rambox.store.ServicesList', { ,logo: 'teamworkchat.png' ,name: 'Teamwork Chat' ,description: 'Say goodbye to email. Take your online collaboration to the next level with Teamwork Chat and keep all team discussions in one place. Chat to your team in a fun and informal way with Teamwork Chat.' - ,url: 'https://___.teamwork.com/chat' + ,url: 'https://___/chat' ,type: 'messaging' ,js_unread: 'function checkUnread(){updateBadge(parseInt(document.getElementsByClassName("sidebar-notification-indicator").length > 0 ? document.getElementsByClassName("sidebar-notification-indicator")[0].innerHTML : 0))}function updateBadge(a){a>=1?rambox.setUnreadCount(a):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);' ,dont_update_unread_from_title: true From 876a5e0804fae3679fcc5f323b1a7169126cf6fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maurice=20Schleu=C3=9Finger?= Date: Tue, 20 Feb 2018 12:41:38 +0100 Subject: [PATCH 03/18] Fix https://github.com/saenzramiro/rambox/issues/1464 by hiding enable_hidpi_support on non-Windows platforms. --- app/view/preferences/Preferences.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/view/preferences/Preferences.js b/app/view/preferences/Preferences.js index 33a7a682..436ebe77 100644 --- a/app/view/preferences/Preferences.js +++ b/app/view/preferences/Preferences.js @@ -234,6 +234,7 @@ Ext.define('Rambox.view.preferences.Preferences',{ ,name: 'enable_hidpi_support' ,boxLabel: locale['preferences[8]'] ,value: config.enable_hidpi_support + ,hidden: process.platform !== 'win32' } ,{ xtype: 'fieldset' From 1e23c5ea49461cc0bf13c41c5f97209d3bea288f Mon Sep 17 00:00:00 2001 From: Jace Benson Date: Tue, 20 Feb 2018 23:07:56 -0600 Subject: [PATCH 04/18] moved getting involved content to contributing also took most content from freecodecamps contributing.md file with modfications to what makes sense for rambox --- CONTRIBUTING.md | 271 ++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 55 +++------- 2 files changed, 284 insertions(+), 42 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..08506148 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,271 @@ +# Contributor's Guide + +We welcome pull requests! Follow these steps to contribute: + +1. Find an [issue](https://github.com/saenzramiro/rambox/issues) that needs assistance. + +2. Let us know you are working on it by posting a comment on the issue. + +3. Follow the [Contribution Guidelines](#contribution-guidelines) to start working on the issue. + +Working on your first Pull Request? You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub] + +(https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) + +###### If you've found a bug that is not on the board, [follow these steps](README.md#found-a-bug). + +-------------------------------------------------------------------------------- + +## Contribution Guidelines + +### Setup + +- [Prerequisites](#prerequisites) +- [Forking the Project](#forking-the-project) +- [Create a Branch](#create-a-branch) +- [Set Up rambox](#set-up-rambox) + +### Create + +- [Make Changes](#make-changes) +- [Run The Test Suite](#run-the-test-suite) + +### Submit + +- [Creating a Pull Request](#creating-a-pull-request) +- [Common Steps](#common-steps) +- [How We Review and Merge Pull Requests](#how-we-review-and-merge-pull-requests) +- [How We Close Stale Issues](#how-we-close-stale-issues) +- [Next Steps](#next-steps) +- [Other Resources](#other-resources) + +### Prerequisites + +| Prerequisite | Version | +| ------------------------------------------------------------- | ------- | +| [Sencha](https://www.sencha.com/products/extjs/cmd-download/) | `=6.1.2.15` | +| [Ruby](https://www.ruby-lang.org/en/downloads/) | `=2.3` | +| [Node.js](http://nodejs.org) | `~ ^4.0.0` | +| npm (comes with Node) | `~ ^3.8.7` | + +> _Updating to the latest releases is recommended_. + +If Node.js, ruby, or sencha cmd is already installed on your machine, run the following commands to validate the versions: + +```shell +node -v +ruby -v +sencha +``` + +If your versions are lower than the prerequisite versions, you should update. + +### Forking the Project + +#### Setting Up Your System + +1. Install [Git](https://git-scm.com/) or your favorite Git client. +2. (Optional) [Setup an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub. + +#### Forking rambox + +1. Go to the top level rambox repository: +2. Click the "Fork" Button in the upper right hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/)) +3. After the repository (repo) has been forked, you will be taken to your copy of the rambox repo at + +#### Cloning Your Fork + +1. Open a Terminal / Command Line / Bash Shell in your projects directory (_i.e.: `/yourprojectdirectory/`_) +2. Clone your fork of rambox + +```shell +$ git clone https://github.com/yourUsername/rambox.git +``` + +**(make sure to replace `yourUsername` with your GitHub username)** + +This will download the entire rambox repo to your projects directory. + +#### Setup Your Upstream + +1. Change directory to the new rambox directory (`cd rambox`) +2. Add a remote to the official rambox repo: + +```shell +$ git remote add upstream https://github.com/saenzramiro/rambox.git +``` + +Congratulations, you now have a local copy of the rambox repo! + +### Create a Branch + +Before you start working, you will need to create a separate branch specific to the issue / feature you're working on. You will push your work to this branch. + +#### Naming Your Branch + +Name the branch something like `fix/xxx` or `feature/xxx` where `xxx` is a short description of the changes or feature you are attempting to add. For example + +`fix/email-login` would be a branch where you fix something specific to email login. + +#### Adding Your Branch + +To create a branch on your local machine (and switch to this branch): + +```shell +$ git checkout -b [name_of_your_new_branch] +``` + +and to push to GitHub: + +```shell +$ git push origin [name_of_your_new_branch] +``` + +**If you need more help with branching, take a look at [this](https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches).** + +### Set Up rambox + +Once you have rambox cloned, before you start the application, you first need to install all of the dependencies: + +```bash +# Install NPM dependencies +npm install +``` + +Then you need to add the private environment variables (API Keys): + +```bash +# Copy `env-sample.js` with a name of env.js +# Populate it with Auth0 clientid and domain e.g. test.auth0.com +# You can get these details from one of your "apps" here https://manage.auth0.com/#/clients/ + +# macOS / Linux +cp env-sample.js env.js + +# Windows +copy env-sample.js env.js +``` +Then edit the `env.js` file and modify the API keys only for services that you will use. + +```bash +# Compile the files... +$ sencha app watch +$ npm start # in a new terminal +``` + +### Make Changes + +This bit is up to you! + +#### How to find the code in the rambox codebase to fix/edit + +The best way to find out any code you wish to change/add or remove is using +the GitHub search bar at the top of the repository page. For example, you could +search for a challenge name and the results will display all the files along +with line numbers. Then you can proceed to the files and verify this is the area +that you were looking forward to edit. Always feel free to reach out to the chat +room when you are not certain of any thing specific in the code. + +#### Adding or Editing Services + +The services are stored inside the file `./app/store/ServicesList.js`. Add your service to the *BOTTOM* of the array. + +The logo it's referencing is located in `./resources/icons/`. + +To see these changes you'll need to stop your `npm start` and `sencha app watch`, and then rerun those. + +### Creating a Pull Request + +#### What is a Pull Request? + +A pull request (PR) is a method of submitting proposed changes to the rambox +repo (or any repo, for that matter). You will make changes to copies of the +files which make up rambox in a personal fork, then apply to have them +accepted by rambox proper. + +#### Important: ALWAYS EDIT ON A BRANCH + +Take away only one thing from this document: Never, **EVER** +make edits to the `staging` branch. ALWAYS make a new branch BEFORE you edit +files. This is critical, because if your PR is not accepted, your copy of +staging will be forever sullied and the only way to fix it is to delete your +fork and re-fork. + +### Common Steps + +1. Once the edits have been committed, you will be prompted to create a pull + request on your fork's GitHub Page. + +2. By default, all pull requests should be against the rambox main repo, `staging` + branch. + **Make sure that your Base Fork is set to saenzramiro/rambox when raising a Pull Request.** + +3. Submit a pull request. + +4. The title (also called the subject) of your PR should be descriptive of your + changes and succinctly indicates what is being fixed. + + - **Do not add the issue number in the PR title or commit message.** + + - Examples: `Added Service servicename` `Correct typo in menu` + +5. In the body of your PR include a more detailed summary of the changes you + made and why. + + - If the PR is meant to fix an existing bug/issue then, at the end of + your PR's description, append the keyword `closes` and #xxxx (where xxxx + is the issue number). Example: `closes #1337`. This tells GitHub to + close the existing issue, if the PR is merged. + +6. Indicate if you have tested on a local copy of the site or not. + +### How We Review and Merge Pull Requests + +rambox has a team of volunteer Issue Moderators. These Issue Moderators routinely go through open pull requests in a process called [Quality Assurance] + +(https://en.wikipedia.org/wiki/Quality_assurance) (QA). + +1. If an Issue Moderator QA's a pull request and confirms that the new code does what it is supposed without seeming to introduce any new bugs, they will comment + +"LGTM" which means "Looks good to me." + +2. Another Issue Moderator will QA the same pull request. Once they have also confirmed that the new code does what it is supposed to without seeming to introduce + +any new bugs, they will merge the pull request. + +If you would like to apply to join our Issue Moderator team - which is a Core Team position - message [@BerkeleyTrue](https://gitter.im/berkeleytrue) with links + +to 5 of your pull requests that have been accepted and 5 issues where you have helped someone else through commenting or QA'ing. + +### How We Close Stale Issues + +We will close any issues or pull requests that have been inactive for more than 15 days, except those that match the following criteria: +- bugs that are confirmed +- pull requests that are waiting on other pull requests to be merged +- features that are a part of a GitHub project + +### Next Steps + +#### If your PR is accepted + +Once your PR is accepted, you may delete the branch you created to submit it. +This keeps your working fork clean. + +You can do this with a press of a button on the GitHub PR interface. You can +delete the local copy of the branch with: `git branch -D branch/to-delete-name` + +#### If your PR is rejected + +Don't despair! You should receive solid feedback as to +why it was rejected and what changes are needed. + +Many Pull Requests, especially first Pull Requests, require correction or +updating. If you have used the GitHub interface to create your PR, you will need +to close your PR, create a new branch, and re-submit. + +If you have a local copy of the repo, you can make the requested changes and +amend your commit with: `git commit --amend` This will update your existing +commit. When you push it to your fork you will need to do a force push to +overwrite your old commit: `git push --force` + +Be sure to post in the PR conversation that you have made the requested changes. \ No newline at end of file diff --git a/README.md b/README.md index 933fde55..5156e122 100644 --- a/README.md +++ b/README.md @@ -41,12 +41,7 @@ - [Translations](#translations) - [Install on Linux - Steps](#install-on-linux---steps) - [To Do](#to-do) -- [Getting Involved](#getting-involved) -- [Getting Started](#getting-started) - - [Technologies](#technologies) - - [Environment](#environment) - - [Quickstart](#quickstart) - - [Compile on Ubuntu](#compile-on-ubuntu) +- [Contributing](#contributing) - [Disclosure](#disclosure) - [Licence](#licence) @@ -202,47 +197,23 @@ Help us translate Rambox on https://crowdin.com/project/rambox/invite. ## [To Do](https://github.com/saenzramiro/rambox/blob/master/TODO.md) -## Getting Involved +## Contributing Want to report a bug, request a feature, contribute to or translate Rambox? We need all the help we can get! Fork and work! -## Getting Started +### Quickstart: -If you're comfortable getting up and running from a `git clone`, this method is for you. - -#### Technologies: - -* Sencha Ext JS 5.1.1.451 -* Electron -* Node JS - -#### Environment: - -* Sencha Cmd 6.1.2.15 (make sure to check "Compass extension" during install if you don't have installed yet) -* Ruby 2.3 -* NPM 3.8.7 -* Node.js 4.0.0 - -#### Quickstart: - -1. `git clone https://github.com/saenzramiro/rambox.git` -2. `npm install` -3. Configure `env-sample.js` and rename it to `env.js`. -4. `npm run sencha:compile` -5. `npm start` - -#### Compile on Ubuntu: - -These instructions were tested with Ubuntu 17.04. -1. Install dependencies: `sudo apt install nodejs-legacy npm git` -2. Build and install electron: `sudo npm install electron-prebuilt -g` -3. Install Sencha Cmd (non-free): https://www.sencha.com/products/extjs/cmd-download/ -4. Clone repository: `git clone https://github.com/saenzramiro/rambox.git` -5. Install npm dependencies: `npm install` -6. Configure `env-sample.js` and rename it to `env.js`. -7. Compile: `npm run sencha:compile` -8. Start program: `npm start` +```shell +git clone https://github.com/saenzramiro/rambox.git +cd rambox +cp env-sample.js env.js +# update env.js with your auth0 details. +npm install +sencha app watch +npm start +``` +See [Contributing.md](https://github.com/saenzramiro/rambox/CONTRIBUTING.md) for more detailed information about getting set up. ------------------- From 6964e25d72fca83d044543c234fb87ec56e702db Mon Sep 17 00:00:00 2001 From: Stephen Brown II Date: Thu, 8 Mar 2018 17:46:12 -0600 Subject: [PATCH 05/18] Update Allo js_unread function Javascript was having trouble getting the display style from a null muted element, so this sets things to variables and checks if it's null first. --- app/store/ServicesList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 6c0f83c1..c295d3f6 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -825,7 +825,7 @@ Ext.define('Rambox.store.ServicesList', { ,description: 'Google Allo is a smart messaging app that helps you say more and do more. Express yourself better with stickers, doodles, and HUGE emojis & text. Allo also brings you the Google Assistant.' ,url: 'https://allo.google.com/web' ,type: 'messaging' - ,js_unread: 'function checkUnread(){var e=document.querySelectorAll(".hasUnread.conversation_item"),n=0;for(i=0;i=1?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);' + ,js_unread: 'function checkUnread(){var e=document.querySelectorAll(".hasUnread.conversation_item"),n=0;for(i=0;i=1?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);' ,dont_update_unread_from_title: true }, { From a72bc77fca85fec4cb4badff4b81c6784036164c Mon Sep 17 00:00:00 2001 From: Andreas Winter Date: Wed, 14 Mar 2018 16:07:35 +0100 Subject: [PATCH 06/18] [FIX][#1495] Changed gmail url to labs=0 to fix refreh error, replaced old with new gmail icon --- app/store/ServicesList.js | 2 +- resources/icons/gmail.png | Bin 11830 -> 9512 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 6c0f83c1..5b27c260 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -113,7 +113,7 @@ Ext.define('Rambox.store.ServicesList', { ,logo: 'gmail.png' ,name: 'Gmail' ,description: locale['services[9]'] - ,url: 'https://mail.google.com/mail/' + ,url: 'https://mail.google.com/mail/?labs=0' ,type: 'email' ,allow_popups: true ,js_unread: 'function checkUnread(){var a=document.getElementsByClassName("aim")[0];updateBadge(-1!=a.textContent.indexOf("(")&&(t=parseInt(a.textContent.replace(/[^0-9]/g,""))))}function updateBadge(a){a>=1?rambox.setUnreadCount(a):rambox.clearUnreadCount()}setInterval(checkUnread,3e3);' diff --git a/resources/icons/gmail.png b/resources/icons/gmail.png index b21fef0c32b9809e6c85496c91d99cc578969abd..f9e1b27c426f864a807feccaa23e7dfc3ab522e2 100644 GIT binary patch literal 9512 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 From 9044a70330e7c29ede2a6bc3d40629125f1da172 Mon Sep 17 00:00:00 2001 From: Ash258 Date: Fri, 16 Mar 2018 23:08:40 +0100 Subject: [PATCH 07/18] Add missing yml rule in .editorconfig Yaml (yml) files have to be indented by spaces. --- .editorconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.editorconfig b/.editorconfig index f2e7f7d0..59b8db48 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,8 @@ root = true end_of_line = lf insert_final_newline = true indent_style = tab +tab_width = 2 + +[*{yml,yaml}] +indent_style = space +indent_size = 2 From dd19272b10c247b1d910b3f63de762622df7245d Mon Sep 17 00:00:00 2001 From: Tony Air Date: Thu, 29 Mar 2018 01:38:45 +0700 Subject: [PATCH 08/18] Use m.vk.com cuz it fits small window size --- app/store/ServicesList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 6c0f83c1..52eeac74 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -776,7 +776,7 @@ Ext.define('Rambox.store.ServicesList', { ,logo: 'vk.png' ,name: 'VK Messenger' ,description: 'Simple and Easy App for Messaging on VK.' - ,url: 'https://vk.com/im' + ,url: 'https://m.vk.com/im' ,type: 'messaging' ,js_unread: 'function checkUnread(){updateBadge(parseInt(document.getElementById("l_msg").innerText.replace(/\D+/g,"")))}function updateBadge(e){e>=1?document.title="("+e+") "+originalTitle:document.title=originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' }, From 678c391257e1d06fbde50db30bc9723318f3870e Mon Sep 17 00:00:00 2001 From: Brent Krone-Schmidt Date: Mon, 2 Apr 2018 09:18:27 -0700 Subject: [PATCH 09/18] add hangouts chat --- app/store/ServicesList.js | 12 ++++++++++++ resources/icons/hangoutschat.png | Bin 0 -> 15328 bytes 2 files changed, 12 insertions(+) create mode 100644 resources/icons/hangoutschat.png diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 6c0f83c1..69dd240b 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -888,6 +888,18 @@ Ext.define('Rambox.store.ServicesList', { ,url: 'https://app.stride.com/___' ,type: 'messaging' ,js_unread: 'function checkUnread(){var t=0,e=!1;document.querySelectorAll(".conversations-nav .nav-item .activity-indicator").forEach(function(n){n.classList.contains("has-count")?t+=parseInt(n.innerHTML):e=!0}),updateBadge(t,e)}function updateBadge(t,e){var n=t>0?"("+t+") ":e?"(•) ":"";document.title=n+originalTitle}var originalTitle=document.title;setInterval(checkUnread,3e3);' + }, + { + id: 'hangoutschat' + ,logo: 'hangoutschat.png' + ,name: 'Hangouts Chat' + ,description: 'A messaging platform built for teams.' + ,url: 'https://chat.google.com/' + ,type: 'messaging' + ,titleBlink: true + ,manual_notifications: true + ,dont_update_unread_from_title: true + ,js_unread: 'function checkUnread(){updateBadge(document.querySelectorAll(".SSPGKf.EyyDtb.Q6oXP:not(.oCHqfe) .eM5l9e.FVKzAb").length)}function updateBadge(e){e>=1?rambox.setUnreadCount(e):rambox.clearUnreadCount()}setInterval(checkUnread,3000);' } ] }); diff --git a/resources/icons/hangoutschat.png b/resources/icons/hangoutschat.png new file mode 100644 index 0000000000000000000000000000000000000000..057684ad46f56980d17d52c319cfa3afc999ddd0 GIT binary patch literal 15328 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 Date: Sun, 8 Apr 2018 15:59:28 -0500 Subject: [PATCH 10/18] Update Google Voice service checkUnread function --- app/store/ServicesList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/store/ServicesList.js b/app/store/ServicesList.js index 6c0f83c1..fd39598f 100644 --- a/app/store/ServicesList.js +++ b/app/store/ServicesList.js @@ -843,7 +843,7 @@ Ext.define('Rambox.store.ServicesList', { ,description: 'A free phone number for life. Stay in touch from any screen. Use your free number to text, call, and check voicemail all from one app. Plus, Google Voice works on all of your devices so you can connect and communicate how you want.' ,url: 'https://voice.google.com' ,type: 'messaging' - ,js_unread: 'function parseIntOrZero(e){return isNaN(parseInt(e))?0:parseInt(e)}function checkUnread(){var e=document.querySelector(".msgCount"),n=0;e?n=parseIntOrZero(e.innerHTML.replace(/[\(\) ]/gi,"")):["Messages","Calls","Voicemail"].forEach(function(e){var r=document.querySelector(\'gv-nav-button[tooltip="\'+e+\'"] div[aria-label="Unread count"]\');r&&(n+=parseIntOrZero(r.innerHTML))}),updateBadge(n)}function updateBadge(e){var n=e>0?"("+e+") ":"";document.title=n+originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' + ,js_unread: 'function parseIntOrZero(e){return isNaN(parseInt(e))?0:parseInt(e)}function checkUnread(){var e=document.querySelector(".msgCount"),n=0;e?n=parseIntOrZero(e.innerHTML.replace(/[\(\) ]/gi,"")):["Messages","Calls","Voicemail"].forEach(function(e){var r=document.querySelector(\'gv-nav-tab[tooltip="\'+e+\'"] div[aria-label="Unread count"]\');r&&(n+=parseIntOrZero(r.innerHTML))}),updateBadge(n)}function updateBadge(e){var n=e>0?"("+e+") ":"";document.title=n+originalTitle}var originalTitle=document.title;setInterval(checkUnread,3000);' }, { id: 'sandstorm' From 7328d3f02c0cf410cb391cc7a8559961e98187c2 Mon Sep 17 00:00:00 2001 From: Manuel Muradas Date: Tue, 17 Apr 2018 14:52:52 -0300 Subject: [PATCH 11/18] Update service align on tab position change #1249 If a tab is moved to the right side, the align field must reflect the new position. --- app/view/main/MainController.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index 091359a0..59ab47d1 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -42,14 +42,20 @@ Ext.define('Rambox.view.main.MainController', { console.log('Updating Tabs positions...'); var store = Ext.getStore('Services'); + var align = 'left'; store.suspendEvent('remove'); Ext.each(tabPanel.items.items, function(t, i) { if ( t.id !== 'ramboxTab' && t.id !== 'tbfill' && t.record.get('enabled') ) { var rec = store.getById(t.record.get('id')); - if ( rec.get('align') === 'right' ) i--; + if ( align === 'right' ) i--; + rec.set('align', align); rec.set('position', i); rec.save(); } + else if ( t.id === 'tbfill' ) { + align = 'right'; + } + }); store.load(); From 14d6ca3fd0fac6babd4c3f996f3b0f962a373177 Mon Sep 17 00:00:00 2001 From: Ryan Zumstein Date: Sun, 22 Apr 2018 20:50:24 -0500 Subject: [PATCH 12/18] Add statusbar toggling --- app.js | 8 ++++++++ electron/menu.js | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/app.js b/app.js index 0013fec8..aabb5dc9 100644 --- a/app.js +++ b/app.js @@ -127,6 +127,14 @@ ipc.on('reloadCurrentService', function(e) { var tab = Ext.cq1('app-main').getActiveTab(); if ( tab.id !== 'ramboxTab' ) tab.reloadService(); }); +// Toggle Status Bar +ipc.on('toggleStatusBar', function() { + var tab = Ext.cq1('app-main').getActiveTab(); + + if ( tab.id !== 'ramboxTab' ) { + tab.down('statusbar').closed ? tab.setStatusBar(tab.record.get('statusbar')) : tab.closeStatusBar(); + } +}); // Focus the current service when Alt + Tab or click in webviews textfields window.addEventListener('focus', function() { if(Ext.cq1("app-main")) Ext.cq1("app-main").getActiveTab().down('component').el.dom.focus(); diff --git a/electron/menu.js b/electron/menu.js index ae47f71a..7b485e91 100644 --- a/electron/menu.js +++ b/electron/menu.js @@ -162,6 +162,15 @@ module.exports = function(config) { { type: 'separator' }, + { + label: '&Toggle Status Bar', + click() { + sendAction('toggleStatusBar'); + } + }, + { + type: 'separator' + }, { role: 'zoomin' }, From 7c6f3842dcdfc02e6fd92899ac8d5d96cab78f90 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Mon, 23 Apr 2018 13:29:52 +0300 Subject: [PATCH 13/18] Update The Lounge logo --- resources/icons/lounge.png | Bin 69929 -> 3327 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/icons/lounge.png b/resources/icons/lounge.png index 3ed196b0650365cdd35c97d57a6abf10fb773334..825e7a7ce60c7003ad074b5ff2b555bc438a45d1 100644 GIT binary patch literal 3327 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 literal 69929 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

J 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