VRChat WEB Shorthand

Adds shorthands for web site features. (Quick launch world and invite buttons for friends list)

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         VRChat WEB Shorthand
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Adds shorthands for web site features. (Quick launch world and invite buttons for friends list)
// @author       slick
// @match        https://www.tampermonkey.net/index.php?version=4.10.6105&ext=fire&updated=true
// @grant        none
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @include      /.*?:\/\/.*?vrchat.*?\..*?(home|launch|api).*?/
// ==/UserScript==

(function() {
    'use strict';

    var limitReshreshMs = 1000;
    var lastRefresh = Date.now();

    $(document).ready(setTimeout(function() {
        addLaunchButton();
        //addRefreshButton();

        setDOMEvent(".friend-container", addLaunchButton);
        setDOMEvent(".location-container", addLaunchButton);
        setDOMEvent(".home-content", addLaunchButton);
    }, 3000));

    function setDOMEvent(element, callback) {
      $("body").on('DOMSubtreeModified', element, function() {
            setTimeout(function() {callback();}, 200);
      });
    }

    function addLaunchButton() {
      if(!canRefresh()) return;

      $( ".launchb" ).remove();
      $('.location-title').each(function( index ) {
            var webLink = $( this ).children()[1].href;
            var link = webLink.substring(webLink.indexOf('=')+1, webLink.lastIndexOf('&'));
            var instanceId = webLink.substring(webLink.lastIndexOf('=')+1);
            var fullLink = link + ":" + instanceId;
            var launchButton = '<div class="launchb"><br><a href="vrchat://launch?ref=vrchat.com&id=' + fullLink + '" class="btn btn-primary launch-btn" style="padding: 2px 2px;">LAUNCH WORLD</a></div>';

            $(this).append(launchButton);
      });
    }

    function addRefreshButton() {
      var refreshButton = '<span id="refreshb" style="margin-left: 5px"><a class="btn btn-secondary" title="Refresh" href="#"><span class="fa fa-sync-alt"></span>&nbsp; Refresh</a></span>';
      $('.navbar-header').append(refreshButton);
      $("#refreshb").click (addLaunchButton);
    }

    function canRefresh() {
      if((Date.now() - lastRefresh) >= limitReshreshMs) {
        lastRefresh = Date.now();
        return true;
      }
      return false;
    }
})();